mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
Fix QR code encoder to correctly account for size of ECI segment
git-svn-id: https://zxing.googlecode.com/svn/trunk@2279 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
9a168f5994
commit
a107d0c0a4
|
@ -92,9 +92,19 @@ public final class Encoder {
|
|||
// Step 1: Choose the mode (encoding).
|
||||
Mode mode = chooseMode(content, encoding);
|
||||
|
||||
// Step 2: Append "bytes" into "dataBits" in appropriate encoding.
|
||||
BitArray dataBits = new BitArray();
|
||||
|
||||
// Step 1.5: Append ECI message if applicable
|
||||
if (mode == Mode.BYTE && !DEFAULT_BYTE_MODE_ENCODING.equals(encoding)) {
|
||||
CharacterSetECI eci = CharacterSetECI.getCharacterSetECIByName(encoding);
|
||||
if (eci != null) {
|
||||
appendECI(eci, dataBits);
|
||||
}
|
||||
}
|
||||
|
||||
// Step 2: Append "bytes" into "dataBits" in appropriate encoding.
|
||||
appendBytes(content, mode, dataBits, encoding);
|
||||
|
||||
// Step 3: Initialize QR code that can contain "dataBits".
|
||||
int numInputBits = dataBits.getSize();
|
||||
initQRCode(numInputBits, ecLevel, mode, qrCode);
|
||||
|
@ -102,14 +112,6 @@ public final class Encoder {
|
|||
// Step 4: Build another bit vector that contains header and data.
|
||||
BitArray headerAndDataBits = new BitArray();
|
||||
|
||||
// Step 4.5: Append ECI message if applicable
|
||||
if (mode == Mode.BYTE && !DEFAULT_BYTE_MODE_ENCODING.equals(encoding)) {
|
||||
CharacterSetECI eci = CharacterSetECI.getCharacterSetECIByName(encoding);
|
||||
if (eci != null) {
|
||||
appendECI(eci, headerAndDataBits);
|
||||
}
|
||||
}
|
||||
|
||||
appendModeInfo(mode, headerAndDataBits);
|
||||
|
||||
int numLetters = mode == Mode.BYTE ? dataBits.getSizeInBytes() : content.length();
|
||||
|
|
Loading…
Reference in a new issue