Class Encoder
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final int[](package private) static final String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) static voidappend8BitBytes(String content, BitVector bits, String encoding) (package private) static voidappendAlphanumericBytes(String content, BitVector bits) (package private) static voidappendBytes(String content, Mode mode, BitVector bits, String encoding) Append "bytes" in "mode" mode (encoding) into "bits".private static voidappendECI(CharacterSetECI eci, BitVector bits) (package private) static voidappendKanjiBytes(String content, BitVector bits) (package private) static voidappendLengthInfo(int numLetters, int version, Mode mode, BitVector bits) Append length info.(package private) static voidappendModeInfo(Mode mode, BitVector bits) Append mode info.(package private) static voidappendNumericBytes(String content, BitVector bits) private static intcalculateMaskPenalty(ByteMatrix matrix) private static intchooseMaskPattern(BitVector bits, ErrorCorrectionLevel ecLevel, int version, ByteMatrix matrix) static ModechooseMode(String content) Choose the best mode by examining the content.static ModechooseMode(String content, String encoding) Choose the best mode by examining the content.static voidencode(String content, ErrorCorrectionLevel ecLevel, QRCode qrCode) Encode "bytes" with the error correction level "ecLevel".static voidencode(String content, ErrorCorrectionLevel ecLevel, Map<EncodeHintType, Object> hints, QRCode qrCode) Encode "bytes" with the error correction level "ecLevel".(package private) static ByteArraygenerateECBytes(ByteArray dataBytes, int numEcBytesInBlock) (package private) static intgetAlphanumericCode(int code) (package private) static voidgetNumDataBytesAndNumECBytesForBlockID(int numTotalBytes, int numDataBytes, int numRSBlocks, int blockID, int[] numDataBytesInBlock, int[] numECBytesInBlock) Get number of data bytes and number of error correction bytes for block id "blockID".private static voidinitQRCode(int numInputBytes, ErrorCorrectionLevel ecLevel, int desiredMinVersion, Mode mode, QRCode qrCode) Initialize "qrCode" according to "numInputBytes", "ecLevel", and "mode".(package private) static voidinterleaveWithECBytes(BitVector bits, int numTotalBytes, int numDataBytes, int numRSBlocks, BitVector result) Interleave "bits" with corresponding error correction bytes.private static booleanisOnlyDoubleByteKanji(String content) (package private) static voidterminateBits(int numDataBytes, BitVector bits) Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24).
-
Field Details
-
ALPHANUMERIC_TABLE
private static final int[] ALPHANUMERIC_TABLE -
DEFAULT_BYTE_MODE_ENCODING
- See Also:
-
-
Constructor Details
-
Encoder
private Encoder()
-
-
Method Details
-
calculateMaskPenalty
-
encode
public static void encode(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.
- Parameters:
content- String to encodeecLevel- Error-correction level to useqrCode- QR code to store the result in- Throws:
WriterException
-
encode
public static void encode(String content, ErrorCorrectionLevel ecLevel, Map<EncodeHintType, Object> hints, 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.
- Parameters:
content- String to encodeecLevel- Error-correction level to usehints- Optional Map containing encoding and suggested minimum version to useqrCode- QR code to store the result in- 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
-
chooseMode
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 returnMode.KANJI- Parameters:
content- content to examineencoding- hint for the encoding to use- Returns:
- mode to use
-
isOnlyDoubleByteKanji
-
chooseMaskPattern
private static int chooseMaskPattern(BitVector bits, ErrorCorrectionLevel ecLevel, int version, ByteMatrix matrix) throws WriterException - Throws:
WriterException
-
initQRCode
private static void initQRCode(int numInputBytes, ErrorCorrectionLevel ecLevel, int desiredMinVersion, Mode mode, QRCode qrCode) throws WriterException Initialize "qrCode" according to "numInputBytes", "ecLevel", and "mode". On success, modify "qrCode".- Throws:
WriterException
-
terminateBits
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
-
appendModeInfo
-
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(String content, Mode mode, BitVector bits, String encoding) throws WriterException Append "bytes" in "mode" mode (encoding) into "bits". On success, store the result in "bits".- Throws:
WriterException
-
appendNumericBytes
-
appendAlphanumericBytes
- Throws:
WriterException
-
append8BitBytes
- Throws:
WriterException
-
appendKanjiBytes
- Throws:
WriterException
-
appendECI
-