Index: xfa/fxbarcode/qrcode/BC_QRCoderEncoder.cpp |
diff --git a/xfa/fxbarcode/qrcode/BC_QRCoderEncoder.cpp b/xfa/fxbarcode/qrcode/BC_QRCoderEncoder.cpp |
index 9935326cc117ca36dbada1b424e9ca69a6e7fc4a..7f332b671ea1a20f05f0b3333b4dfed0f2362144 100644 |
--- a/xfa/fxbarcode/qrcode/BC_QRCoderEncoder.cpp |
+++ b/xfa/fxbarcode/qrcode/BC_QRCoderEncoder.cpp |
@@ -24,6 +24,7 @@ |
#include <algorithm> |
#include <memory> |
+#include <utility> |
#include "xfa/fxbarcode/BC_UtilCodingConvert.h" |
#include "xfa/fxbarcode/common/BC_CommonByteArray.h" |
@@ -48,7 +49,9 @@ const int32_t CBC_QRCoderEncoder::m_alphaNumbericTable[] = { |
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1}; |
CBC_QRCoderEncoder::CBC_QRCoderEncoder() {} |
+ |
CBC_QRCoderEncoder::~CBC_QRCoderEncoder() {} |
+ |
class Make_Pair { |
public: |
CBC_QRCoderMode* m_mode; |
@@ -86,7 +89,9 @@ void CBC_QRCoderEncoder::Encode(const CFX_ByteString& content, |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::AppendECI(CBC_QRCoderBitVector* bits) {} |
+ |
void CBC_QRCoderEncoder::AppendDataModeLenghInfo( |
const CFX_ArrayTemplate<Make_Pair*>& splitResult, |
CBC_QRCoderBitVector& headerAndDataBits, |
@@ -139,6 +144,7 @@ void CBC_QRCoderEncoder::AppendDataModeLenghInfo( |
} |
} |
} |
+ |
void CBC_QRCoderEncoder::SplitString(const CFX_ByteString& content, |
CFX_ArrayTemplate<Make_Pair*>* result) { |
int32_t index = 0, flag = 0; |
@@ -316,6 +322,7 @@ void CBC_QRCoderEncoder::MergeString(CFX_ArrayTemplate<Make_Pair*>* result, |
MergeString(result, versionNum, e); |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
+ |
void CBC_QRCoderEncoder::InitQRCode(int32_t numInputBytes, |
int32_t versionNumber, |
CBC_QRCoderErrorCorrectionLevel* ecLevel, |
@@ -344,6 +351,7 @@ void CBC_QRCoderEncoder::InitQRCode(int32_t numInputBytes, |
e = BCExceptionCannotFindBlockInfo; |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
+ |
void CBC_QRCoderEncoder::EncodeWithSpecifyVersion( |
const CFX_ByteString& content, |
CBC_QRCoderErrorCorrectionLevel* ecLevel, |
@@ -408,12 +416,13 @@ void CBC_QRCoderEncoder::EncodeWithSpecifyVersion( |
qrCode->GetVersion(), |
qrCode->GetMaskPattern(), matrix.get(), e); |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
- qrCode->SetMatrix(matrix.release()); |
+ qrCode->SetMatrix(std::move(matrix)); |
if (!qrCode->IsValid()) { |
e = BCExceptionInvalidQRCode; |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::EncodeWithAutoVersion( |
const CFX_ByteString& content, |
CBC_QRCoderErrorCorrectionLevel* ecLevel, |
@@ -492,12 +501,13 @@ catchException: |
CBC_QRCoderMatrixUtil::BuildMatrix(&finalBits, qrCode->GetECLevel(), |
qrCode->GetVersion(), |
qrCode->GetMaskPattern(), matrix.get(), e); |
- BC_EXCEPTION_CHECK_ReturnVoid(e) qrCode->SetMatrix(matrix.release()); |
+ BC_EXCEPTION_CHECK_ReturnVoid(e) qrCode->SetMatrix(std::move(matrix)); |
if (!qrCode->IsValid()) { |
e = BCExceptionInvalidQRCode; |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::Encode(const CFX_WideString& content, |
CBC_QRCoderErrorCorrectionLevel* ecLevel, |
CBC_QRCoder* qrCode, |
@@ -542,12 +552,13 @@ void CBC_QRCoderEncoder::Encode(const CFX_WideString& content, |
CBC_QRCoderMatrixUtil::BuildMatrix(&finalBits, qrCode->GetECLevel(), |
qrCode->GetVersion(), |
qrCode->GetMaskPattern(), matrix.get(), e); |
- BC_EXCEPTION_CHECK_ReturnVoid(e) qrCode->SetMatrix(matrix.release()); |
+ BC_EXCEPTION_CHECK_ReturnVoid(e) qrCode->SetMatrix(std::move(matrix)); |
if (!qrCode->IsValid()) { |
e = BCExceptionInvalidQRCode; |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::TerminateBits(int32_t numDataBytes, |
CBC_QRCoderBitVector* bits, |
int32_t& e) { |
@@ -587,6 +598,7 @@ void CBC_QRCoderEncoder::TerminateBits(int32_t numDataBytes, |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
int32_t CBC_QRCoderEncoder::ChooseMaskPattern( |
CBC_QRCoderBitVector* bits, |
CBC_QRCoderErrorCorrectionLevel* ecLevel, |
@@ -595,7 +607,7 @@ int32_t CBC_QRCoderEncoder::ChooseMaskPattern( |
int32_t& e) { |
int32_t minPenalty = 65535; |
int32_t bestMaskPattern = -1; |
- for (int32_t maskPattern = 0; maskPattern < CBC_QRCoder::NUM_MASK_PATTERNS; |
+ for (int32_t maskPattern = 0; maskPattern < CBC_QRCoder::kNumMaskPatterns; |
maskPattern++) { |
CBC_QRCoderMatrixUtil::BuildMatrix(bits, ecLevel, version, maskPattern, |
matrix, e); |
@@ -608,6 +620,7 @@ int32_t CBC_QRCoderEncoder::ChooseMaskPattern( |
} |
return bestMaskPattern; |
} |
+ |
int32_t CBC_QRCoderEncoder::CalculateMaskPenalty(CBC_CommonByteMatrix* matrix) { |
int32_t penalty = 0; |
penalty += CBC_QRCoderMaskUtil::ApplyMaskPenaltyRule1(matrix); |
@@ -616,6 +629,7 @@ int32_t CBC_QRCoderEncoder::CalculateMaskPenalty(CBC_CommonByteMatrix* matrix) { |
penalty += CBC_QRCoderMaskUtil::ApplyMaskPenaltyRule4(matrix); |
return penalty; |
} |
+ |
CBC_QRCoderMode* CBC_QRCoderEncoder::ChooseMode(const CFX_ByteString& content, |
CFX_ByteString encoding) { |
if (encoding.Compare("SHIFT_JIS") == 0) { |
@@ -639,12 +653,14 @@ CBC_QRCoderMode* CBC_QRCoderEncoder::ChooseMode(const CFX_ByteString& content, |
} |
return CBC_QRCoderMode::sBYTE; |
} |
+ |
int32_t CBC_QRCoderEncoder::GetAlphaNumericCode(int32_t code) { |
if (code < 96 && code >= 0) { |
return m_alphaNumbericTable[code]; |
} |
return -1; |
} |
+ |
void CBC_QRCoderEncoder::AppendBytes(const CFX_ByteString& content, |
CBC_QRCoderMode* mode, |
CBC_QRCoderBitVector* bits, |
@@ -670,6 +686,7 @@ void CBC_QRCoderEncoder::AppendBytes(const CFX_ByteString& content, |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::AppendNumericBytes(const CFX_ByteString& content, |
CBC_QRCoderBitVector* bits, |
int32_t& e) { |
@@ -693,6 +710,7 @@ void CBC_QRCoderEncoder::AppendNumericBytes(const CFX_ByteString& content, |
} |
} |
} |
+ |
void CBC_QRCoderEncoder::AppendAlphaNumericBytes(const CFX_ByteString& content, |
CBC_QRCoderBitVector* bits, |
int32_t& e) { |
@@ -719,6 +737,7 @@ void CBC_QRCoderEncoder::AppendAlphaNumericBytes(const CFX_ByteString& content, |
} |
} |
} |
+ |
void CBC_QRCoderEncoder::AppendGBKBytes(const CFX_ByteString& content, |
CBC_QRCoderBitVector* bits, |
int32_t& e) { |
@@ -739,6 +758,7 @@ void CBC_QRCoderEncoder::AppendGBKBytes(const CFX_ByteString& content, |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::Append8BitBytes(const CFX_ByteString& content, |
CBC_QRCoderBitVector* bits, |
CFX_ByteString encoding, |
@@ -748,6 +768,7 @@ void CBC_QRCoderEncoder::Append8BitBytes(const CFX_ByteString& content, |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::Append8BitBytes(CFX_ByteArray& bytes, |
CBC_QRCoderBitVector* bits, |
int32_t& e) { |
@@ -756,6 +777,7 @@ void CBC_QRCoderEncoder::Append8BitBytes(CFX_ByteArray& bytes, |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::AppendKanjiBytes(const CFX_ByteString& content, |
CBC_QRCoderBitVector* bits, |
int32_t& e) { |
@@ -776,6 +798,7 @@ void CBC_QRCoderEncoder::AppendKanjiBytes(const CFX_ByteString& content, |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::InitQRCode(int32_t numInputBytes, |
CBC_QRCoderErrorCorrectionLevel* ecLevel, |
CBC_QRCoderMode* mode, |
@@ -805,6 +828,7 @@ void CBC_QRCoderEncoder::InitQRCode(int32_t numInputBytes, |
e = BCExceptionCannotFindBlockInfo; |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
+ |
void CBC_QRCoderEncoder::AppendModeInfo(CBC_QRCoderMode* mode, |
CBC_QRCoderBitVector* bits, |
int32_t& e) { |
@@ -814,6 +838,7 @@ void CBC_QRCoderEncoder::AppendModeInfo(CBC_QRCoderMode* mode, |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::AppendLengthInfo(int32_t numLetters, |
int32_t version, |
CBC_QRCoderMode* mode, |
@@ -833,6 +858,7 @@ void CBC_QRCoderEncoder::AppendLengthInfo(int32_t numLetters, |
bits->AppendBits(numLetters, numBits, e); |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
+ |
void CBC_QRCoderEncoder::InterleaveWithECBytes(CBC_QRCoderBitVector* bits, |
int32_t numTotalBytes, |
int32_t numDataBytes, |
@@ -854,12 +880,13 @@ void CBC_QRCoderEncoder::InterleaveWithECBytes(CBC_QRCoderBitVector* bits, |
GetNumDataBytesAndNumECBytesForBlockID(numTotalBytes, numDataBytes, |
numRSBlocks, i, numDataBytesInBlock, |
numEcBytesInBlosk); |
- CBC_CommonByteArray* dataBytes = new CBC_CommonByteArray; |
+ std::unique_ptr<CBC_CommonByteArray> dataBytes(new CBC_CommonByteArray); |
dataBytes->Set(bits->GetArray(), dataBytesOffset, numDataBytesInBlock); |
- CBC_CommonByteArray* ecBytes = |
- GenerateECBytes(dataBytes, numEcBytesInBlosk, e); |
+ std::unique_ptr<CBC_CommonByteArray> ecBytes( |
+ GenerateECBytes(dataBytes.get(), numEcBytesInBlosk, e)); |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
- blocks.Add(new CBC_QRCoderBlockPair(dataBytes, ecBytes)); |
+ blocks.Add( |
+ new CBC_QRCoderBlockPair(std::move(dataBytes), std::move(ecBytes))); |
maxNumDataBytes = std::max(maxNumDataBytes, dataBytes->Size()); |
maxNumEcBytes = std::max(maxNumEcBytes, ecBytes->Size()); |
dataBytesOffset += numDataBytesInBlock; |
@@ -870,7 +897,7 @@ void CBC_QRCoderEncoder::InterleaveWithECBytes(CBC_QRCoderBitVector* bits, |
} |
for (int32_t x = 0; x < maxNumDataBytes; x++) { |
for (int32_t j = 0; j < blocks.GetSize(); j++) { |
- CBC_CommonByteArray* dataBytes = blocks[j]->GetDataBytes(); |
+ const CBC_CommonByteArray* dataBytes = blocks[j]->GetDataBytes(); |
if (x < dataBytes->Size()) { |
result->AppendBits(dataBytes->At(x), 8, e); |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
@@ -879,7 +906,7 @@ void CBC_QRCoderEncoder::InterleaveWithECBytes(CBC_QRCoderBitVector* bits, |
} |
for (int32_t y = 0; y < maxNumEcBytes; y++) { |
for (int32_t l = 0; l < blocks.GetSize(); l++) { |
- CBC_CommonByteArray* ecBytes = blocks[l]->GetErrorCorrectionBytes(); |
+ const CBC_CommonByteArray* ecBytes = blocks[l]->GetErrorCorrectionBytes(); |
if (y < ecBytes->Size()) { |
result->AppendBits(ecBytes->At(y), 8, e); |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
@@ -894,6 +921,7 @@ void CBC_QRCoderEncoder::InterleaveWithECBytes(CBC_QRCoderBitVector* bits, |
BC_EXCEPTION_CHECK_ReturnVoid(e); |
} |
} |
+ |
void CBC_QRCoderEncoder::GetNumDataBytesAndNumECBytesForBlockID( |
int32_t numTotalBytes, |
int32_t numDataBytes, |
@@ -920,6 +948,7 @@ void CBC_QRCoderEncoder::GetNumDataBytesAndNumECBytesForBlockID( |
numECBytesInBlock = numEcBytesInGroup2; |
} |
} |
+ |
CBC_CommonByteArray* CBC_QRCoderEncoder::GenerateECBytes( |
CBC_CommonByteArray* dataBytes, |
int32_t numEcBytesInBlock, |
@@ -930,7 +959,7 @@ CBC_CommonByteArray* CBC_QRCoderEncoder::GenerateECBytes( |
for (int32_t i = 0; i < numDataBytes; i++) { |
toEncode[i] = (dataBytes->At(i)); |
} |
- CBC_ReedSolomonEncoder encode(CBC_ReedSolomonGF256::QRCodeFild); |
+ CBC_ReedSolomonEncoder encode(CBC_ReedSolomonGF256::QRCodeField); |
encode.Init(); |
encode.Encode(&toEncode, numEcBytesInBlock, e); |
BC_EXCEPTION_CHECK_ReturnValue(e, nullptr); |