Class Encoder

java.lang.Object
com.google.zxing.qrcode.encoder.Encoder

public final class Encoder extends Object
  • Field Details

    • ALPHANUMERIC_TABLE

      private static final int[] ALPHANUMERIC_TABLE
    • DEFAULT_BYTE_MODE_ENCODING

      static final Charset DEFAULT_BYTE_MODE_ENCODING
  • Constructor Details

    • Encoder

      private Encoder()
  • Method Details

    • calculateMaskPenalty

      private static int calculateMaskPenalty(ByteMatrix matrix)
    • encode

      public static QRCode encode(String content, ErrorCorrectionLevel ecLevel) throws WriterException
      Parameters:
      content - text to encode
      ecLevel - error correction level to use
      Returns:
      QRCode representing the encoded QR code
      Throws:
      WriterException - if encoding can't succeed, because of for example invalid content or configuration
    • encode

      public static QRCode encode(String content, ErrorCorrectionLevel ecLevel, Map<EncodeHintType,?> hints) throws WriterException
      Throws:
      WriterException
    • recommendVersion

      private static Version recommendVersion(ErrorCorrectionLevel ecLevel, Mode mode, BitArray headerBits, BitArray dataBits) throws WriterException
      Decides the smallest version of QR code that will contain all of the provided data.
      Throws:
      WriterException - if the data cannot fit in any version
    • calculateBitsNeeded

      private static int calculateBitsNeeded(Mode mode, BitArray headerBits, BitArray dataBits, Version version)
    • getAlphanumericCode

      static int getAlphanumericCode(int code)
      Returns:
      the code point of the table used in alphanumeric mode or -1 if there is no corresponding code in the table.
    • chooseMode

      public static Mode chooseMode(String content)
    • chooseMode

      private static Mode chooseMode(String content, Charset encoding)
      Choose the best mode by examining the content. Note that 'encoding' is used as a hint; if it is Shift_JIS, and the input is only double-byte Kanji, then we return Mode.KANJI.
    • isOnlyDoubleByteKanji

      static boolean isOnlyDoubleByteKanji(String content)
    • chooseMaskPattern

      private static int chooseMaskPattern(BitArray bits, ErrorCorrectionLevel ecLevel, Version version, ByteMatrix matrix) throws WriterException
      Throws:
      WriterException
    • chooseVersion

      private static Version chooseVersion(int numInputBits, ErrorCorrectionLevel ecLevel) throws WriterException
      Throws:
      WriterException
    • willFit

      static boolean willFit(int numInputBits, Version version, ErrorCorrectionLevel ecLevel)
      Returns:
      true if the number of input bits will fit in a code with the specified version and error correction level.
    • terminateBits

      static void terminateBits(int numDataBytes, BitArray bits) throws WriterException
      Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24).
      Throws:
      WriterException
    • getNumDataBytesAndNumECBytesForBlockID

      static void getNumDataBytesAndNumECBytesForBlockID(int numTotalBytes, int numDataBytes, int numRSBlocks, int blockID, int[] numDataBytesInBlock, int[] numECBytesInBlock) throws WriterException
      Get number of data bytes and number of error correction bytes for block id "blockID". Store the result in "numDataBytesInBlock", and "numECBytesInBlock". See table 12 in 8.5.1 of JISX0510:2004 (p.30)
      Throws:
      WriterException
    • interleaveWithECBytes

      static BitArray interleaveWithECBytes(BitArray bits, int numTotalBytes, int numDataBytes, int numRSBlocks) throws WriterException
      Interleave "bits" with corresponding error correction bytes. On success, store the result in "result". The interleave rule is complicated. See 8.6 of JISX0510:2004 (p.37) for details.
      Throws:
      WriterException
    • generateECBytes

      static byte[] generateECBytes(byte[] dataBytes, int numEcBytesInBlock)
    • appendModeInfo

      static void appendModeInfo(Mode mode, BitArray bits)
      Append mode info. On success, store the result in "bits".
    • appendLengthInfo

      static void appendLengthInfo(int numLetters, Version version, Mode mode, BitArray bits) throws WriterException
      Append length info. On success, store the result in "bits".
      Throws:
      WriterException
    • appendBytes

      static void appendBytes(String content, Mode mode, BitArray bits, Charset encoding) throws WriterException
      Append "bytes" in "mode" mode (encoding) into "bits". On success, store the result in "bits".
      Throws:
      WriterException
    • appendNumericBytes

      static void appendNumericBytes(CharSequence content, BitArray bits)
    • appendAlphanumericBytes

      static void appendAlphanumericBytes(CharSequence content, BitArray bits) throws WriterException
      Throws:
      WriterException
    • append8BitBytes

      static void append8BitBytes(String content, BitArray bits, Charset encoding)
    • appendKanjiBytes

      static void appendKanjiBytes(String content, BitArray bits) throws WriterException
      Throws:
      WriterException
    • appendECI

      private static void appendECI(CharacterSetECI eci, BitArray bits)