C40Encoder.java (zxing-zxing-3.4.1) | : | C40Encoder.java (zxing-zxing-3.5.0) | ||
---|---|---|---|---|
skipping to change at line 26 | skipping to change at line 26 | |||
package com.google.zxing.datamatrix.encoder; | package com.google.zxing.datamatrix.encoder; | |||
class C40Encoder implements Encoder { | class C40Encoder implements Encoder { | |||
@Override | @Override | |||
public int getEncodingMode() { | public int getEncodingMode() { | |||
return HighLevelEncoder.C40_ENCODATION; | return HighLevelEncoder.C40_ENCODATION; | |||
} | } | |||
void encodeMaximal(EncoderContext context) { | ||||
StringBuilder buffer = new StringBuilder(); | ||||
int lastCharSize = 0; | ||||
int backtrackStartPosition = context.pos; | ||||
int backtrackBufferLength = 0; | ||||
while (context.hasMoreCharacters()) { | ||||
char c = context.getCurrentChar(); | ||||
context.pos++; | ||||
lastCharSize = encodeChar(c, buffer); | ||||
if (buffer.length() % 3 == 0) { | ||||
backtrackStartPosition = context.pos; | ||||
backtrackBufferLength = buffer.length(); | ||||
} | ||||
} | ||||
if (backtrackBufferLength != buffer.length()) { | ||||
int unwritten = (buffer.length() / 3) * 2; | ||||
int curCodewordCount = context.getCodewordCount() + unwritten + 1; // +1 f | ||||
or the latch to C40 | ||||
context.updateSymbolInfo(curCodewordCount); | ||||
int available = context.getSymbolInfo().getDataCapacity() - curCodewordCou | ||||
nt; | ||||
int rest = buffer.length() % 3; | ||||
if ((rest == 2 && available != 2) || | ||||
(rest == 1 && (lastCharSize > 3 || available != 1))) { | ||||
buffer.setLength(backtrackBufferLength); | ||||
context.pos = backtrackStartPosition; | ||||
} | ||||
} | ||||
if (buffer.length() > 0) { | ||||
context.writeCodeword(HighLevelEncoder.LATCH_TO_C40); | ||||
} | ||||
handleEOD(context, buffer); | ||||
} | ||||
@Override | @Override | |||
public void encode(EncoderContext context) { | public void encode(EncoderContext context) { | |||
//step C | //step C | |||
StringBuilder buffer = new StringBuilder(); | StringBuilder buffer = new StringBuilder(); | |||
while (context.hasMoreCharacters()) { | while (context.hasMoreCharacters()) { | |||
char c = context.getCurrentChar(); | char c = context.getCurrentChar(); | |||
context.pos++; | context.pos++; | |||
int lastCharSize = encodeChar(c, buffer); | int lastCharSize = encodeChar(c, buffer); | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 36 lines changed or added |