summaryrefslogtreecommitdiff
path: root/xfa/fxbarcode/qrcode/BC_QRDataMask.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxbarcode/qrcode/BC_QRDataMask.cpp')
-rw-r--r--xfa/fxbarcode/qrcode/BC_QRDataMask.cpp34
1 files changed, 19 insertions, 15 deletions
diff --git a/xfa/fxbarcode/qrcode/BC_QRDataMask.cpp b/xfa/fxbarcode/qrcode/BC_QRDataMask.cpp
index 20f94069f4..9b5e3ca014 100644
--- a/xfa/fxbarcode/qrcode/BC_QRDataMask.cpp
+++ b/xfa/fxbarcode/qrcode/BC_QRDataMask.cpp
@@ -24,43 +24,47 @@
#include "xfa/fxbarcode/qrcode/BC_QRDataMask.h"
#include "xfa/fxbarcode/utils.h"
-static int32_t N_DATA_MASKS = 0;
-CFX_PtrArray* CBC_QRDataMask::DATA_MASKS = NULL;
+namespace {
+
+int32_t N_DATA_MASKS = 0;
+CFX_ArrayTemplate<CBC_QRDataMask*>* DATA_MASKS = nullptr;
+
+} // namespace
void CBC_QRDataMask::Initialize() {
- DATA_MASKS = new CFX_PtrArray();
+ DATA_MASKS = new CFX_ArrayTemplate<CBC_QRDataMask*>();
N_DATA_MASKS = BuildDataMasks();
}
+
void CBC_QRDataMask::Finalize() {
Destroy();
delete DATA_MASKS;
+ DATA_MASKS = nullptr;
}
+
void CBC_QRDataMask::Destroy() {
- int32_t i;
- for (i = 0; i < N_DATA_MASKS; i++) {
- CBC_QRDataMask* p = (CBC_QRDataMask*)(*DATA_MASKS)[i];
- if (p) {
- delete p;
- }
- }
+ for (int32_t i = 0; i < N_DATA_MASKS; ++i)
+ delete (*DATA_MASKS)[i];
}
-void CBC_QRDataMask::UnmaskBitMatirx(CBC_CommonBitMatrix* bits,
+
+void CBC_QRDataMask::UnmaskBitMatrix(CBC_CommonBitMatrix* bits,
int32_t dimension) {
for (int32_t i = 0; i < dimension; i++) {
for (int32_t j = 0; j < dimension; j++) {
- if (IsMasked(i, j)) {
+ if (IsMasked(i, j))
bits->Flip(j, i);
- }
}
}
}
+
CBC_QRDataMask* CBC_QRDataMask::ForReference(int32_t reference, int32_t& e) {
if (reference < 0 || reference > 7) {
e = BCExceptionReferenceMustBeBetween0And7;
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+ BC_EXCEPTION_CHECK_ReturnValue(e, nullptr);
}
- return (CBC_QRDataMask*)(*DATA_MASKS)[reference];
+ return (*DATA_MASKS)[reference];
}
+
class DataMask000 : public CBC_QRDataMask {
public:
FX_BOOL IsMasked(int32_t x, int32_t y) { return ((x + y) % 2) == 0; }