diff options
author | Lei Zhang <thestig@chromium.org> | 2017-04-28 15:50:15 -0700 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-04-28 23:20:55 +0000 |
commit | 75b656a185ded6423b170546b89a945ac7aed74d (patch) | |
tree | 4d3d4a1f2a0e27ae6cda602984831de37cacd188 /fxbarcode | |
parent | 4536a47bc4581a5344fba9c5491464bf9b7261c9 (diff) | |
download | pdfium-75b656a185ded6423b170546b89a945ac7aed74d.tar.xz |
Clean up private methods in CBC_C40Encoder.
Change-Id: I0c33ec81ef9fd3ff7c22f33f5647a923aecd3e77
Reviewed-on: https://pdfium-review.googlesource.com/4594
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'fxbarcode')
-rw-r--r-- | fxbarcode/datamatrix/BC_C40Encoder.cpp | 40 | ||||
-rw-r--r-- | fxbarcode/datamatrix/BC_C40Encoder.h | 12 |
2 files changed, 28 insertions, 24 deletions
diff --git a/fxbarcode/datamatrix/BC_C40Encoder.cpp b/fxbarcode/datamatrix/BC_C40Encoder.cpp index e8aa679e28..8d352b1a98 100644 --- a/fxbarcode/datamatrix/BC_C40Encoder.cpp +++ b/fxbarcode/datamatrix/BC_C40Encoder.cpp @@ -67,21 +67,20 @@ void CBC_C40Encoder::Encode(CBC_EncoderContext& context, int32_t& e) { } int32_t available = context.m_symbolInfo->m_dataCapacity - curCodewordCount; if (!context.hasMoreCharacters()) { - CFX_WideString removed; if ((buffer.GetLength() % 3) == 2) { if (available < 2 || available > 2) { - lastCharSize = - backtrackOneCharacter(context, buffer, removed, lastCharSize, e); - if (e != BCExceptionNO) { + lastCharSize = BacktrackOneCharacter(&context, &buffer, lastCharSize); + if (lastCharSize < 0) { + e = BCExceptionGeneric; return; } } } while ((buffer.GetLength() % 3) == 1 && ((lastCharSize <= 3 && available != 1) || lastCharSize > 3)) { - lastCharSize = - backtrackOneCharacter(context, buffer, removed, lastCharSize, e); - if (e != BCExceptionNO) { + lastCharSize = BacktrackOneCharacter(&context, &buffer, lastCharSize); + if (lastCharSize < 0) { + e = BCExceptionGeneric; return; } } @@ -187,18 +186,21 @@ int32_t CBC_C40Encoder::encodeChar(wchar_t c, CFX_WideString& sb, int32_t& e) { return 0; } } -int32_t CBC_C40Encoder::backtrackOneCharacter(CBC_EncoderContext& context, - CFX_WideString& buffer, - CFX_WideString& removed, - int32_t lastCharSize, - int32_t& e) { - int32_t count = buffer.GetLength(); - buffer.Delete(count - lastCharSize, count); - context.m_pos--; - wchar_t c = context.getCurrentChar(); - lastCharSize = encodeChar(c, removed, e); + +int32_t CBC_C40Encoder::BacktrackOneCharacter(CBC_EncoderContext* context, + CFX_WideString* buffer, + int32_t lastCharSize) { + int32_t count = buffer->GetLength(); + buffer->Delete(count - lastCharSize, count); + context->m_pos--; + wchar_t c = context->getCurrentChar(); + int32_t e = BCExceptionNO; + CFX_WideString removed; + int32_t len = encodeChar(c, removed, e); if (e != BCExceptionNO) return -1; - context.resetSymbolInfo(); - return lastCharSize; + + assert(len > 0); + context->resetSymbolInfo(); + return len; } diff --git a/fxbarcode/datamatrix/BC_C40Encoder.h b/fxbarcode/datamatrix/BC_C40Encoder.h index ad8669d412..550d226efb 100644 --- a/fxbarcode/datamatrix/BC_C40Encoder.h +++ b/fxbarcode/datamatrix/BC_C40Encoder.h @@ -29,11 +29,13 @@ class CBC_C40Encoder : public CBC_Encoder { virtual int32_t encodeChar(wchar_t c, CFX_WideString& sb, int32_t& e); private: - int32_t backtrackOneCharacter(CBC_EncoderContext& context, - CFX_WideString& buffer, - CFX_WideString& removed, - int32_t lastCharSize, - int32_t& e); + // Moves back by 1 position in |context| and adjusts |buffer| accordingly + // using |lastCharSize|. Returns the length of the current character in + // |context| after adjusting the position. If the character cannot be encoded, + // return -1. + int32_t BacktrackOneCharacter(CBC_EncoderContext* context, + CFX_WideString* buffer, + int32_t lastCharSize); }; #endif // FXBARCODE_DATAMATRIX_BC_C40ENCODER_H_ |