diff options
Diffstat (limited to 'xfa/src/fxbarcode/qrcode/BC_QRDataBlock.cpp')
-rw-r--r-- | xfa/src/fxbarcode/qrcode/BC_QRDataBlock.cpp | 145 |
1 files changed, 76 insertions, 69 deletions
diff --git a/xfa/src/fxbarcode/qrcode/BC_QRDataBlock.cpp b/xfa/src/fxbarcode/qrcode/BC_QRDataBlock.cpp index 2877d2f82b..c045552155 100644 --- a/xfa/src/fxbarcode/qrcode/BC_QRDataBlock.cpp +++ b/xfa/src/fxbarcode/qrcode/BC_QRDataBlock.cpp @@ -25,80 +25,87 @@ #include "BC_QRCoderECB.h"
#include "BC_QRDataBlock.h"
#include "BC_QRCoderVersion.h"
-CBC_QRDataBlock::CBC_QRDataBlock(int32_t numDataCodewords, CFX_ByteArray *codewords)
- : m_numDataCodewords(numDataCodewords)
- , m_codewords(codewords)
-{
+CBC_QRDataBlock::CBC_QRDataBlock(int32_t numDataCodewords,
+ CFX_ByteArray* codewords)
+ : m_numDataCodewords(numDataCodewords), m_codewords(codewords) {}
+CBC_QRDataBlock::~CBC_QRDataBlock() {
+ if (m_codewords != NULL) {
+ delete m_codewords;
+ m_codewords = NULL;
+ }
}
-CBC_QRDataBlock::~CBC_QRDataBlock()
-{
- if(m_codewords != NULL) {
- delete m_codewords;
- m_codewords = NULL;
- }
-}
-int32_t CBC_QRDataBlock::GetNumDataCodewords()
-{
- return m_numDataCodewords;
+int32_t CBC_QRDataBlock::GetNumDataCodewords() {
+ return m_numDataCodewords;
}
-CFX_ByteArray *CBC_QRDataBlock::GetCodewords()
-{
- return m_codewords;
+CFX_ByteArray* CBC_QRDataBlock::GetCodewords() {
+ return m_codewords;
}
-CFX_PtrArray *CBC_QRDataBlock::GetDataBlocks(CFX_ByteArray* rawCodewords, CBC_QRCoderVersion *version, CBC_QRCoderErrorCorrectionLevel* ecLevel, int32_t &e)
-{
- if(rawCodewords->GetSize() != version->GetTotalCodeWords()) {
- e = BCExceptionIllegalArgument;
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
- }
- CBC_QRCoderECBlocks *ecBlocks = version->GetECBlocksForLevel(ecLevel);
- int32_t totalBlocks = 0;
- CFX_PtrArray* ecBlockArray = ecBlocks->GetECBlocks();
- int32_t i = 0;
- for(i = 0; i < ecBlockArray->GetSize(); i++) {
- totalBlocks += ((CBC_QRCoderECB*)(*ecBlockArray)[i])->GetCount();
- }
- CFX_PtrArray *datablock = FX_NEW CFX_PtrArray();
- datablock->SetSize(totalBlocks);
- CBC_AutoPtr<CFX_PtrArray > result(datablock);
- int32_t numResultBlocks = 0;
- for(int32_t j = 0; j < ecBlockArray->GetSize(); j++) {
- CBC_QRCoderECB *ecBlock = (CBC_QRCoderECB*)(*ecBlockArray)[j];
- for(int32_t k = 0; k < ecBlock->GetCount(); k++) {
- int32_t numDataCodewords = ecBlock->GetDataCodeWords();
- int32_t numBlockCodewords = ecBlocks->GetECCodeWordsPerBlock() + numDataCodewords;
- CFX_ByteArray *bytearray = FX_NEW CFX_ByteArray();
- bytearray->SetSize(numBlockCodewords);
- (*result)[numResultBlocks++] = FX_NEW CBC_QRDataBlock(numDataCodewords, bytearray);
- }
- }
- int32_t shorterBlocksTotalCodewords = ((CBC_QRDataBlock*)(*result)[0])->m_codewords->GetSize();
- int32_t longerBlocksStartAt = result->GetSize() - 1;
- while(longerBlocksStartAt >= 0) {
- int32_t numCodewords = ((CBC_QRDataBlock*)(*result)[longerBlocksStartAt])->m_codewords->GetSize();
- if(numCodewords == shorterBlocksTotalCodewords) {
- break;
- }
- longerBlocksStartAt--;
+CFX_PtrArray* CBC_QRDataBlock::GetDataBlocks(
+ CFX_ByteArray* rawCodewords,
+ CBC_QRCoderVersion* version,
+ CBC_QRCoderErrorCorrectionLevel* ecLevel,
+ int32_t& e) {
+ if (rawCodewords->GetSize() != version->GetTotalCodeWords()) {
+ e = BCExceptionIllegalArgument;
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
+ }
+ CBC_QRCoderECBlocks* ecBlocks = version->GetECBlocksForLevel(ecLevel);
+ int32_t totalBlocks = 0;
+ CFX_PtrArray* ecBlockArray = ecBlocks->GetECBlocks();
+ int32_t i = 0;
+ for (i = 0; i < ecBlockArray->GetSize(); i++) {
+ totalBlocks += ((CBC_QRCoderECB*)(*ecBlockArray)[i])->GetCount();
+ }
+ CFX_PtrArray* datablock = FX_NEW CFX_PtrArray();
+ datablock->SetSize(totalBlocks);
+ CBC_AutoPtr<CFX_PtrArray> result(datablock);
+ int32_t numResultBlocks = 0;
+ for (int32_t j = 0; j < ecBlockArray->GetSize(); j++) {
+ CBC_QRCoderECB* ecBlock = (CBC_QRCoderECB*)(*ecBlockArray)[j];
+ for (int32_t k = 0; k < ecBlock->GetCount(); k++) {
+ int32_t numDataCodewords = ecBlock->GetDataCodeWords();
+ int32_t numBlockCodewords =
+ ecBlocks->GetECCodeWordsPerBlock() + numDataCodewords;
+ CFX_ByteArray* bytearray = FX_NEW CFX_ByteArray();
+ bytearray->SetSize(numBlockCodewords);
+ (*result)[numResultBlocks++] =
+ FX_NEW CBC_QRDataBlock(numDataCodewords, bytearray);
}
- longerBlocksStartAt++;
- int32_t shorterBlocksNumDataCodewords = shorterBlocksTotalCodewords - ecBlocks->GetECCodeWordsPerBlock();
- int32_t rawCodewordsOffset = 0;
- int32_t x = 0;
- for(int32_t k = 0; k < shorterBlocksNumDataCodewords; k++) {
- for(x = 0; x < numResultBlocks; x++) {
- (*(((CBC_QRDataBlock*)(*result)[x])->m_codewords))[k] = (*rawCodewords)[rawCodewordsOffset++];
- }
+ }
+ int32_t shorterBlocksTotalCodewords =
+ ((CBC_QRDataBlock*)(*result)[0])->m_codewords->GetSize();
+ int32_t longerBlocksStartAt = result->GetSize() - 1;
+ while (longerBlocksStartAt >= 0) {
+ int32_t numCodewords = ((CBC_QRDataBlock*)(*result)[longerBlocksStartAt])
+ ->m_codewords->GetSize();
+ if (numCodewords == shorterBlocksTotalCodewords) {
+ break;
}
- for(x = longerBlocksStartAt; x < numResultBlocks; x++) {
- (*(((CBC_QRDataBlock*)(*result)[x])->m_codewords))[shorterBlocksNumDataCodewords] = (*rawCodewords)[rawCodewordsOffset++];
+ longerBlocksStartAt--;
+ }
+ longerBlocksStartAt++;
+ int32_t shorterBlocksNumDataCodewords =
+ shorterBlocksTotalCodewords - ecBlocks->GetECCodeWordsPerBlock();
+ int32_t rawCodewordsOffset = 0;
+ int32_t x = 0;
+ for (int32_t k = 0; k < shorterBlocksNumDataCodewords; k++) {
+ for (x = 0; x < numResultBlocks; x++) {
+ (*(((CBC_QRDataBlock*)(*result)[x])->m_codewords))[k] =
+ (*rawCodewords)[rawCodewordsOffset++];
}
- int32_t max = ((CBC_QRDataBlock*)(*result)[0])->m_codewords->GetSize();
- for(i = shorterBlocksNumDataCodewords; i < max; i++) {
- for(int32_t y = 0; y < numResultBlocks; y++) {
- int32_t iOffset = y < longerBlocksStartAt ? i : i + 1;
- (*(((CBC_QRDataBlock*)(*result)[y])->m_codewords))[iOffset] = (*rawCodewords)[rawCodewordsOffset++];
- }
+ }
+ for (x = longerBlocksStartAt; x < numResultBlocks; x++) {
+ (*(((CBC_QRDataBlock*)(*result)[x])
+ ->m_codewords))[shorterBlocksNumDataCodewords] =
+ (*rawCodewords)[rawCodewordsOffset++];
+ }
+ int32_t max = ((CBC_QRDataBlock*)(*result)[0])->m_codewords->GetSize();
+ for (i = shorterBlocksNumDataCodewords; i < max; i++) {
+ for (int32_t y = 0; y < numResultBlocks; y++) {
+ int32_t iOffset = y < longerBlocksStartAt ? i : i + 1;
+ (*(((CBC_QRDataBlock*)(*result)[y])->m_codewords))[iOffset] =
+ (*rawCodewords)[rawCodewordsOffset++];
}
- return result.release();
+ }
+ return result.release();
}
|