Remove enum FWL_BCDATTRIBUTE
Optional<T> is a simpler (but somewhat less space efficient) mechanism
than a bitmask for keeping track of which fields have been set.
Change-Id: Idd33348983e3f1b0d2d98dc0d7d848f6381c9c97
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/84031
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fwl/cfwl_barcode.cpp b/xfa/fwl/cfwl_barcode.cpp
index 65d7f18..ad0a04d 100644
--- a/xfa/fwl/cfwl_barcode.cpp
+++ b/xfa/fwl/cfwl_barcode.cpp
@@ -91,58 +91,47 @@
}
void CFWL_Barcode::SetCharEncoding(BC_CHAR_ENCODING encoding) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_CHARENCODING;
m_eCharEncoding = encoding;
}
void CFWL_Barcode::SetModuleHeight(int32_t height) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_MODULEHEIGHT;
m_nModuleHeight = height;
}
void CFWL_Barcode::SetModuleWidth(int32_t width) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_MODULEWIDTH;
m_nModuleWidth = width;
}
void CFWL_Barcode::SetDataLength(int32_t dataLength) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_DATALENGTH;
m_nDataLength = dataLength;
SetLimit(dataLength);
}
void CFWL_Barcode::SetCalChecksum(bool calChecksum) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_CALCHECKSUM;
m_bCalChecksum = calChecksum;
}
void CFWL_Barcode::SetPrintChecksum(bool printChecksum) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_PRINTCHECKSUM;
m_bPrintChecksum = printChecksum;
}
void CFWL_Barcode::SetTextLocation(BC_TEXT_LOC location) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_TEXTLOCATION;
m_eTextLocation = location;
}
void CFWL_Barcode::SetWideNarrowRatio(int8_t ratio) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_WIDENARROWRATIO;
m_nWideNarrowRatio = ratio;
}
void CFWL_Barcode::SetStartChar(char startChar) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_STARTCHAR;
m_cStartChar = startChar;
}
void CFWL_Barcode::SetEndChar(char endChar) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_ENDCHAR;
m_cEndChar = endChar;
}
void CFWL_Barcode::SetErrorCorrectionLevel(int32_t ecLevel) {
- m_dwAttributeMask |= FWL_BCDATTRIBUTE_ECLEVEL;
m_nECLevel = ecLevel;
}
@@ -165,28 +154,28 @@
m_pBarcodeEngine->SetFontColor(pTheme->GetTextColor(part));
m_pBarcodeEngine->SetHeight(int32_t(GetRTClient().height));
m_pBarcodeEngine->SetWidth(int32_t(GetRTClient().width));
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_CHARENCODING)
- m_pBarcodeEngine->SetCharEncoding(m_eCharEncoding);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_MODULEHEIGHT)
- m_pBarcodeEngine->SetModuleHeight(m_nModuleHeight);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_MODULEWIDTH)
- m_pBarcodeEngine->SetModuleWidth(m_nModuleWidth);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_DATALENGTH)
- m_pBarcodeEngine->SetDataLength(m_nDataLength);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_CALCHECKSUM)
- m_pBarcodeEngine->SetCalChecksum(m_bCalChecksum);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_PRINTCHECKSUM)
- m_pBarcodeEngine->SetPrintChecksum(m_bPrintChecksum);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_TEXTLOCATION)
- m_pBarcodeEngine->SetTextLocation(m_eTextLocation);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_WIDENARROWRATIO)
- m_pBarcodeEngine->SetWideNarrowRatio(m_nWideNarrowRatio);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_STARTCHAR)
- m_pBarcodeEngine->SetStartChar(m_cStartChar);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_ENDCHAR)
- m_pBarcodeEngine->SetEndChar(m_cEndChar);
- if (m_dwAttributeMask & FWL_BCDATTRIBUTE_ECLEVEL)
- m_pBarcodeEngine->SetErrorCorrectionLevel(m_nECLevel);
+ if (m_eCharEncoding.has_value())
+ m_pBarcodeEngine->SetCharEncoding(m_eCharEncoding.value());
+ if (m_nModuleHeight.has_value())
+ m_pBarcodeEngine->SetModuleHeight(m_nModuleHeight.value());
+ if (m_nModuleWidth.has_value())
+ m_pBarcodeEngine->SetModuleWidth(m_nModuleWidth.value());
+ if (m_nDataLength.has_value())
+ m_pBarcodeEngine->SetDataLength(m_nDataLength.value());
+ if (m_bCalChecksum.value())
+ m_pBarcodeEngine->SetCalChecksum(m_bCalChecksum.value());
+ if (m_bPrintChecksum.has_value())
+ m_pBarcodeEngine->SetPrintChecksum(m_bPrintChecksum.value());
+ if (m_eTextLocation.has_value())
+ m_pBarcodeEngine->SetTextLocation(m_eTextLocation.value());
+ if (m_nWideNarrowRatio.has_value())
+ m_pBarcodeEngine->SetWideNarrowRatio(m_nWideNarrowRatio.value());
+ if (m_cStartChar.has_value())
+ m_pBarcodeEngine->SetStartChar(m_cStartChar.value());
+ if (m_cEndChar.has_value())
+ m_pBarcodeEngine->SetEndChar(m_cEndChar.value());
+ if (m_nECLevel.has_value())
+ m_pBarcodeEngine->SetErrorCorrectionLevel(m_nECLevel.value());
m_eStatus = m_pBarcodeEngine->Encode(GetText().AsStringView())
? Status::kEncodeSuccess
diff --git a/xfa/fwl/cfwl_barcode.h b/xfa/fwl/cfwl_barcode.h
index 31aca8e..846c8ae 100644
--- a/xfa/fwl/cfwl_barcode.h
+++ b/xfa/fwl/cfwl_barcode.h
@@ -7,28 +7,16 @@
#ifndef XFA_FWL_CFWL_BARCODE_H_
#define XFA_FWL_CFWL_BARCODE_H_
+#include <stdint.h>
+
#include <memory>
#include "fxbarcode/BC_Library.h"
+#include "third_party/base/optional.h"
#include "xfa/fwl/cfwl_edit.h"
class CFX_Barcode;
-enum FWL_BCDAttribute {
- FWL_BCDATTRIBUTE_NONE = 0,
- FWL_BCDATTRIBUTE_CHARENCODING = 1 << 0,
- FWL_BCDATTRIBUTE_MODULEHEIGHT = 1 << 1,
- FWL_BCDATTRIBUTE_MODULEWIDTH = 1 << 2,
- FWL_BCDATTRIBUTE_DATALENGTH = 1 << 3,
- FWL_BCDATTRIBUTE_CALCHECKSUM = 1 << 4,
- FWL_BCDATTRIBUTE_PRINTCHECKSUM = 1 << 5,
- FWL_BCDATTRIBUTE_TEXTLOCATION = 1 << 6,
- FWL_BCDATTRIBUTE_WIDENARROWRATIO = 1 << 7,
- FWL_BCDATTRIBUTE_STARTCHAR = 1 << 8,
- FWL_BCDATTRIBUTE_ENDCHAR = 1 << 9,
- FWL_BCDATTRIBUTE_ECLEVEL = 1 << 10,
-};
-
class CFWL_Barcode final : public CFWL_Edit {
public:
CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
@@ -73,19 +61,18 @@
void CreateBarcodeEngine();
BC_TYPE m_type = BC_UNKNOWN;
- BC_CHAR_ENCODING m_eCharEncoding = CHAR_ENCODING_UTF8;
- BC_TEXT_LOC m_eTextLocation = BC_TEXT_LOC_NONE;
Status m_eStatus = Status::kNormal;
- bool m_bCalChecksum = false;
- bool m_bPrintChecksum = false;
- char m_cStartChar = 0;
- char m_cEndChar = 0;
- int8_t m_nWideNarrowRatio = 1;
- int32_t m_nModuleHeight = -1;
- int32_t m_nModuleWidth = -1;
- int32_t m_nDataLength = 0;
- int32_t m_nECLevel = 0;
- uint32_t m_dwAttributeMask = 0;
+ Optional<BC_TEXT_LOC> m_eTextLocation;
+ Optional<BC_CHAR_ENCODING> m_eCharEncoding;
+ Optional<bool> m_bCalChecksum;
+ Optional<bool> m_bPrintChecksum;
+ Optional<char> m_cStartChar;
+ Optional<char> m_cEndChar;
+ Optional<int8_t> m_nWideNarrowRatio;
+ Optional<int32_t> m_nModuleHeight;
+ Optional<int32_t> m_nModuleWidth;
+ Optional<int32_t> m_nDataLength;
+ Optional<int32_t> m_nECLevel;
std::unique_ptr<CFX_Barcode> m_pBarcodeEngine;
};