Class Encoder


  • public final class Encoder
    extends java.lang.Object
    Since:
    5.0.2
    • Field Detail

      • ALPHANUMERIC_TABLE

        private static final int[] ALPHANUMERIC_TABLE
      • DEFAULT_BYTE_MODE_ENCODING

        static final java.lang.String DEFAULT_BYTE_MODE_ENCODING
        See Also:
        Constant Field Values
    • Constructor Detail

      • Encoder

        private Encoder()
    • Method Detail

      • calculateMaskPenalty

        private static int calculateMaskPenalty​(ByteMatrix matrix)
      • encode

        public static void encode​(java.lang.String content,
                                  ErrorCorrectionLevel ecLevel,
                                  QRCode qrCode)
                           throws WriterException
        Encode "bytes" with the error correction level "ecLevel". The encoding mode will be chosen internally by chooseMode(). On success, store the result in "qrCode". We recommend you to use QRCode.EC_LEVEL_L (the lowest level) for "getECLevel" since our primary use is to show QR code on desktop screens. We don't need very strong error correction for this purpose. Note that there is no way to encode bytes in MODE_KANJI. We might want to add EncodeWithMode() with which clients can specify the encoding mode. For now, we don't need the functionality.
        Throws:
        WriterException
      • 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​(java.lang.String content)
      • chooseMode

        public static Mode chooseMode​(java.lang.String content,
                                      java.lang.String 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

        private static boolean isOnlyDoubleByteKanji​(java.lang.String content)
      • terminateBits

        static void terminateBits​(int numDataBytes,
                                  BitVector 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 void interleaveWithECBytes​(BitVector bits,
                                          int numTotalBytes,
                                          int numDataBytes,
                                          int numRSBlocks,
                                          BitVector result)
                                   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 ByteArray generateECBytes​(ByteArray dataBytes,
                                         int numEcBytesInBlock)
      • appendModeInfo

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

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

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

        static void appendNumericBytes​(java.lang.String content,
                                       BitVector bits)