Use enum class in CBC_PDF417HighLevelEncoder.
Make the SubMode an enum class.
Change-Id: Ie34af9a93432cf0198d21dc7586d8172136db6a2
Reviewed-on: https://pdfium-review.googlesource.com/c/45691
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.cpp b/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.cpp
index 272de3b..7739801 100644
--- a/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.cpp
+++ b/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.cpp
@@ -27,10 +27,6 @@
#include "fxbarcode/utils.h"
#include "third_party/bigint/BigIntegerLibrary.hh"
-#define SUBMODE_ALPHA 0
-#define SUBMODE_LOWER 1
-#define SUBMODE_MIXED 2
-
namespace {
constexpr int32_t kLatchToText = 900;
@@ -102,7 +98,7 @@
WideString sb;
sb.Reserve(len);
size_t p = 0;
- int32_t textSubMode = SUBMODE_ALPHA;
+ SubMode textSubMode = SubMode::kAlpha;
if (compaction == TEXT) {
EncodeText(msg, p, len, textSubMode, &sb);
} else if (compaction == BYTES) {
@@ -117,7 +113,7 @@
if (n >= 13) {
sb += kLatchToNumeric;
encodingMode = NUMERIC_COMPACTION;
- textSubMode = SUBMODE_ALPHA;
+ textSubMode = SubMode::kAlpha;
EncodeNumeric(msg, p, n, &sb);
p += n;
} else {
@@ -126,7 +122,7 @@
if (encodingMode != TEXT_COMPACTION) {
sb += kLatchToText;
encodingMode = TEXT_COMPACTION;
- textSubMode = SUBMODE_ALPHA;
+ textSubMode = SubMode::kAlpha;
}
textSubMode = EncodeText(msg, p, t, textSubMode, &sb);
p += t;
@@ -146,7 +142,7 @@
} else {
EncodeBinary(byteArr, p, b_value, encodingMode, &sb);
encodingMode = BYTE_COMPACTION;
- textSubMode = SUBMODE_ALPHA;
+ textSubMode = SubMode::kAlpha;
}
p += b_value;
}
@@ -176,19 +172,20 @@
}
}
-int32_t CBC_PDF417HighLevelEncoder::EncodeText(const WideString& msg,
- size_t startpos,
- size_t count,
- int32_t initialSubmode,
- WideString* sb) {
+CBC_PDF417HighLevelEncoder::SubMode CBC_PDF417HighLevelEncoder::EncodeText(
+ const WideString& msg,
+ size_t startpos,
+ size_t count,
+ SubMode initialSubmode,
+ WideString* sb) {
WideString tmp;
tmp.Reserve(count);
- int32_t submode = initialSubmode;
+ SubMode submode = initialSubmode;
size_t idx = 0;
while (true) {
wchar_t ch = msg[startpos + idx];
switch (submode) {
- case SUBMODE_ALPHA:
+ case SubMode::kAlpha:
if (IsAlphaUpperOrSpace(ch)) {
if (ch == ' ')
tmp += 26;
@@ -197,19 +194,19 @@
break;
}
if (IsAlphaLowerOrSpace(ch)) {
- submode = SUBMODE_LOWER;
+ submode = SubMode::kLower;
tmp += 27;
continue;
}
if (IsMixed(ch)) {
- submode = SUBMODE_MIXED;
+ submode = SubMode::kMixed;
tmp += 28;
continue;
}
tmp += 29;
tmp += g_punctuation[ch];
break;
- case SUBMODE_LOWER:
+ case SubMode::kLower:
if (IsAlphaLowerOrSpace(ch)) {
if (ch == ' ')
tmp += 26;
@@ -223,7 +220,7 @@
break;
}
if (IsMixed(ch)) {
- submode = SUBMODE_MIXED;
+ submode = SubMode::kMixed;
tmp += 28;
continue;
}
@@ -231,25 +228,25 @@
tmp += 29;
tmp += g_punctuation[ch];
break;
- case SUBMODE_MIXED:
+ case SubMode::kMixed:
if (IsMixed(ch)) {
tmp += g_mixed[ch];
break;
}
if (IsAlphaUpperOrSpace(ch)) {
- submode = SUBMODE_ALPHA;
+ submode = SubMode::kAlpha;
tmp += 28;
continue;
}
if (IsAlphaLowerOrSpace(ch)) {
- submode = SUBMODE_LOWER;
+ submode = SubMode::kLower;
tmp += 27;
continue;
}
if (startpos + idx + 1 < count) {
wchar_t next = msg[startpos + idx + 1];
if (IsPunctuation(next)) {
- submode = SUBMODE_PUNCTUATION;
+ submode = SubMode::kPunctuation;
tmp += 25;
continue;
}
@@ -262,7 +259,7 @@
tmp += g_punctuation[ch];
break;
}
- submode = SUBMODE_ALPHA;
+ submode = SubMode::kAlpha;
tmp += 29;
continue;
}
diff --git a/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h b/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h
index 695afbe..4706ab1 100644
--- a/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h
+++ b/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h
@@ -22,15 +22,16 @@
static void Finalize();
private:
+ enum class SubMode { kAlpha = 0, kLower, kMixed, kPunctuation };
+
static constexpr int32_t TEXT_COMPACTION = 0;
static constexpr int32_t BYTE_COMPACTION = 1;
static constexpr int32_t NUMERIC_COMPACTION = 2;
- static constexpr int32_t SUBMODE_PUNCTUATION = 3;
- static int32_t EncodeText(const WideString& msg,
+ static SubMode EncodeText(const WideString& msg,
size_t startpos,
size_t count,
- int32_t initialSubmode,
+ SubMode initialSubmode,
WideString* sb);
static void EncodeBinary(const std::vector<uint8_t>& bytes,
size_t startpos,