summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2017-04-28 15:50:15 -0700
committerChromium commit bot <commit-bot@chromium.org>2017-04-28 23:20:55 +0000
commit75b656a185ded6423b170546b89a945ac7aed74d (patch)
tree4d3d4a1f2a0e27ae6cda602984831de37cacd188
parent4536a47bc4581a5344fba9c5491464bf9b7261c9 (diff)
downloadpdfium-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>
-rw-r--r--fxbarcode/datamatrix/BC_C40Encoder.cpp40
-rw-r--r--fxbarcode/datamatrix/BC_C40Encoder.h12
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_