Index: xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.cpp |
diff --git a/xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.cpp b/xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.cpp |
index 15b99fbb6a57f62aa49df3d38a8ae3325a2342dc..1798db760a7647e3d4f2a30aa9c1f4613d4853cd 100644 |
--- a/xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.cpp |
+++ b/xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.cpp |
@@ -1,768 +1,768 @@ |
-// Copyright 2014 PDFium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
-// Original code is licensed as follows: |
-/* |
- * Copyright 2007 ZXing authors |
- * |
- * Licensed under the Apache License, Version 2.0 (the "License"); |
- * you may not use this file except in compliance with the License. |
- * You may obtain a copy of the License at |
- * |
- * http://www.apache.org/licenses/LICENSE-2.0 |
- * |
- * Unless required by applicable law or agreed to in writing, software |
- * distributed under the License is distributed on an "AS IS" BASIS, |
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
- * See the License for the specific language governing permissions and |
- * limitations under the License. |
- */ |
- |
-#include "xfa/src/fxbarcode/barcode.h" |
-#include "xfa/src/fxbarcode/utils.h" |
-#include "xfa/src/fxbarcode/common/BC_CommonBitMatrix.h" |
-#include "BC_QRCoderECB.h" |
-#include "BC_QRCoderFormatInformation.h" |
-#include "BC_QRCoderErrorCorrectionLevel.h" |
-#include "BC_QRCoderBitVector.h" |
-#include "BC_QRCoderECBlocks.h" |
-#include "BC_QRCoderVersion.h" |
-const int32_t CBC_QRCoderVersion::VERSION_DECODE_INFO[] = { |
- 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, |
- 0x0E60D, 0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, |
- 0x15683, 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 0x1B08E, |
- 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 0x209D5, 0x216F0, 0x228BA, |
- 0x2379F, 0x24B0B, 0x2542E, 0x26A64, 0x27541, 0x28C69}; |
-CFX_PtrArray* CBC_QRCoderVersion::VERSION = NULL; |
-void CBC_QRCoderVersion::Initialize() { |
- VERSION = new CFX_PtrArray(); |
-} |
-void CBC_QRCoderVersion::Finalize() { |
- for (int32_t i = 0; i < VERSION->GetSize(); i++) { |
- CBC_QRCoderVersion* v = (CBC_QRCoderVersion*)(VERSION->GetAt(i)); |
- delete v; |
- } |
- delete VERSION; |
-} |
-CBC_QRCoderVersion::CBC_QRCoderVersion(int32_t versionNumber, |
- CBC_QRCoderECBlocks* ecBlocks1, |
- CBC_QRCoderECBlocks* ecBlocks2, |
- CBC_QRCoderECBlocks* ecBlocks3, |
- CBC_QRCoderECBlocks* ecBlocks4) { |
- m_versionNumber = versionNumber; |
- m_ecBlocks.Add(ecBlocks1); |
- m_ecBlocks.Add(ecBlocks2); |
- m_ecBlocks.Add(ecBlocks3); |
- m_ecBlocks.Add(ecBlocks4); |
- int32_t total = 0; |
- int32_t ecCodeWords = ecBlocks1->GetECCodeWordsPerBlock(); |
- CFX_PtrArray* ecbArray = ecBlocks1->GetECBlocks(); |
- for (int32_t i = 0; i < ecbArray->GetSize(); i++) { |
- CBC_QRCoderECB* ecBlock = (CBC_QRCoderECB*)((*ecbArray)[i]); |
- total += ecBlock->GetCount() * (ecBlock->GetDataCodeWords() + ecCodeWords); |
- } |
- m_totalCodeWords = total; |
- switch (versionNumber) { |
- case 1: |
- break; |
- case 2: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(18); |
- break; |
- case 3: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(22); |
- break; |
- case 4: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(26); |
- break; |
- case 5: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- break; |
- case 6: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(34); |
- break; |
- case 7: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(22); |
- m_alignmentPatternCenters.Add(38); |
- break; |
- case 8: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(24); |
- m_alignmentPatternCenters.Add(42); |
- break; |
- case 9: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(26); |
- m_alignmentPatternCenters.Add(46); |
- break; |
- case 10: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(28); |
- m_alignmentPatternCenters.Add(50); |
- break; |
- case 11: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(54); |
- break; |
- case 12: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(32); |
- m_alignmentPatternCenters.Add(58); |
- break; |
- case 13: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(34); |
- m_alignmentPatternCenters.Add(62); |
- break; |
- case 14: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(26); |
- m_alignmentPatternCenters.Add(46); |
- m_alignmentPatternCenters.Add(66); |
- break; |
- case 15: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(26); |
- m_alignmentPatternCenters.Add(48); |
- m_alignmentPatternCenters.Add(70); |
- break; |
- case 16: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(26); |
- m_alignmentPatternCenters.Add(50); |
- m_alignmentPatternCenters.Add(74); |
- break; |
- case 17: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(54); |
- m_alignmentPatternCenters.Add(78); |
- break; |
- case 18: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(56); |
- m_alignmentPatternCenters.Add(82); |
- break; |
- case 19: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(58); |
- m_alignmentPatternCenters.Add(86); |
- break; |
- case 20: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(34); |
- m_alignmentPatternCenters.Add(62); |
- m_alignmentPatternCenters.Add(90); |
- break; |
- case 21: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(28); |
- m_alignmentPatternCenters.Add(50); |
- m_alignmentPatternCenters.Add(72); |
- m_alignmentPatternCenters.Add(94); |
- break; |
- case 22: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(26); |
- m_alignmentPatternCenters.Add(50); |
- m_alignmentPatternCenters.Add(74); |
- m_alignmentPatternCenters.Add(98); |
- break; |
- case 23: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(54); |
- m_alignmentPatternCenters.Add(74); |
- m_alignmentPatternCenters.Add(102); |
- break; |
- case 24: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(28); |
- m_alignmentPatternCenters.Add(54); |
- m_alignmentPatternCenters.Add(80); |
- m_alignmentPatternCenters.Add(106); |
- break; |
- case 25: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(32); |
- m_alignmentPatternCenters.Add(58); |
- m_alignmentPatternCenters.Add(84); |
- m_alignmentPatternCenters.Add(110); |
- break; |
- case 26: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(58); |
- m_alignmentPatternCenters.Add(86); |
- m_alignmentPatternCenters.Add(114); |
- break; |
- case 27: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(34); |
- m_alignmentPatternCenters.Add(62); |
- m_alignmentPatternCenters.Add(90); |
- m_alignmentPatternCenters.Add(118); |
- break; |
- case 28: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(26); |
- m_alignmentPatternCenters.Add(50); |
- m_alignmentPatternCenters.Add(74); |
- m_alignmentPatternCenters.Add(98); |
- m_alignmentPatternCenters.Add(122); |
- break; |
- case 29: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(54); |
- m_alignmentPatternCenters.Add(78); |
- m_alignmentPatternCenters.Add(102); |
- m_alignmentPatternCenters.Add(126); |
- break; |
- case 30: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(26); |
- m_alignmentPatternCenters.Add(52); |
- m_alignmentPatternCenters.Add(78); |
- m_alignmentPatternCenters.Add(104); |
- m_alignmentPatternCenters.Add(130); |
- break; |
- case 31: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(56); |
- m_alignmentPatternCenters.Add(82); |
- m_alignmentPatternCenters.Add(108); |
- m_alignmentPatternCenters.Add(134); |
- break; |
- case 32: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(34); |
- m_alignmentPatternCenters.Add(60); |
- m_alignmentPatternCenters.Add(86); |
- m_alignmentPatternCenters.Add(112); |
- m_alignmentPatternCenters.Add(138); |
- break; |
- case 33: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(58); |
- m_alignmentPatternCenters.Add(86); |
- m_alignmentPatternCenters.Add(114); |
- m_alignmentPatternCenters.Add(142); |
- break; |
- case 34: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(34); |
- m_alignmentPatternCenters.Add(62); |
- m_alignmentPatternCenters.Add(90); |
- m_alignmentPatternCenters.Add(118); |
- m_alignmentPatternCenters.Add(146); |
- break; |
- case 35: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(54); |
- m_alignmentPatternCenters.Add(78); |
- m_alignmentPatternCenters.Add(102); |
- m_alignmentPatternCenters.Add(126); |
- m_alignmentPatternCenters.Add(150); |
- break; |
- case 36: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(24); |
- m_alignmentPatternCenters.Add(50); |
- m_alignmentPatternCenters.Add(76); |
- m_alignmentPatternCenters.Add(102); |
- m_alignmentPatternCenters.Add(128); |
- m_alignmentPatternCenters.Add(154); |
- break; |
- case 37: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(28); |
- m_alignmentPatternCenters.Add(54); |
- m_alignmentPatternCenters.Add(80); |
- m_alignmentPatternCenters.Add(106); |
- m_alignmentPatternCenters.Add(132); |
- m_alignmentPatternCenters.Add(158); |
- break; |
- case 38: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(32); |
- m_alignmentPatternCenters.Add(58); |
- m_alignmentPatternCenters.Add(84); |
- m_alignmentPatternCenters.Add(110); |
- m_alignmentPatternCenters.Add(136); |
- m_alignmentPatternCenters.Add(162); |
- break; |
- case 39: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(26); |
- m_alignmentPatternCenters.Add(54); |
- m_alignmentPatternCenters.Add(82); |
- m_alignmentPatternCenters.Add(110); |
- m_alignmentPatternCenters.Add(138); |
- m_alignmentPatternCenters.Add(166); |
- break; |
- case 40: |
- m_alignmentPatternCenters.Add(6); |
- m_alignmentPatternCenters.Add(30); |
- m_alignmentPatternCenters.Add(58); |
- m_alignmentPatternCenters.Add(86); |
- m_alignmentPatternCenters.Add(114); |
- m_alignmentPatternCenters.Add(142); |
- m_alignmentPatternCenters.Add(170); |
- break; |
- } |
-} |
-CBC_QRCoderVersion::~CBC_QRCoderVersion() { |
- if (m_ecBlocks.GetSize() != 0) { |
- int32_t itBeg = 0; |
- int32_t itEnd = m_ecBlocks.GetSize(); |
- while (itBeg != itEnd) { |
- delete ((CBC_QRCoderECBlocks*)(m_ecBlocks[itBeg])); |
- itBeg++; |
- } |
- } |
-} |
-int32_t CBC_QRCoderVersion::GetVersionNumber() { |
- return m_versionNumber; |
-} |
-CFX_Int32Array* CBC_QRCoderVersion::GetAlignmentPatternCenters() { |
- return &m_alignmentPatternCenters; |
-} |
-int32_t CBC_QRCoderVersion::GetTotalCodeWords() { |
- return m_totalCodeWords; |
-} |
-int32_t CBC_QRCoderVersion::GetDimensionForVersion() { |
- return 17 + 4 * m_versionNumber; |
-} |
-CBC_QRCoderECBlocks* CBC_QRCoderVersion::GetECBlocksForLevel( |
- CBC_QRCoderErrorCorrectionLevel* ecLevel) { |
- return (CBC_QRCoderECBlocks*)m_ecBlocks[ecLevel->Ordinal()]; |
-} |
-CBC_QRCoderVersion* CBC_QRCoderVersion::GetProvisionalVersionForDimension( |
- int32_t dimension, |
- int32_t& e) { |
- if ((dimension % 4) != 1) { |
- e = BCExceptionRead; |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- } |
- CBC_QRCoderVersion* qcv = GetVersionForNumber((dimension - 17) >> 2, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- return qcv; |
-} |
-CBC_QRCoderVersion* CBC_QRCoderVersion::DecodeVersionInformation( |
- int32_t versionBits, |
- int32_t& e) { |
- int32_t bestDifference = FXSYS_IntMax; |
- int32_t bestVersion = 0; |
- for (int32_t i = 0; i < 34; i++) { |
- int32_t targetVersion = VERSION_DECODE_INFO[i]; |
- if (targetVersion == versionBits) { |
- CBC_QRCoderVersion* qcv = GetVersionForNumber(i + 7, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- return qcv; |
- } |
- int32_t bitsDifference = CBC_QRCoderFormatInformation::NumBitsDiffering( |
- versionBits, targetVersion); |
- if (bitsDifference < bestDifference) { |
- bestVersion = i + 7; |
- bestDifference = bitsDifference; |
- } |
- } |
- if (bestDifference <= 3) { |
- CBC_QRCoderVersion* qcv = GetVersionForNumber(bestVersion, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- return qcv; |
- } |
- return NULL; |
-} |
-CBC_CommonBitMatrix* CBC_QRCoderVersion::BuildFunctionPattern(int32_t& e) { |
- int32_t dimension = GetDimensionForVersion(); |
- CBC_CommonBitMatrix* bitMatrix = new CBC_CommonBitMatrix(); |
- bitMatrix->Init(dimension); |
- bitMatrix->SetRegion(0, 0, 9, 9, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- bitMatrix->SetRegion(dimension - 8, 0, 8, 9, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- bitMatrix->SetRegion(0, dimension - 8, 9, 8, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- int32_t max = m_alignmentPatternCenters.GetSize(); |
- for (int32_t x = 0; x < max; x++) { |
- int32_t i = m_alignmentPatternCenters[x] - 2; |
- for (int32_t y = 0; y < max; y++) { |
- if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) { |
- continue; |
- } |
- bitMatrix->SetRegion(m_alignmentPatternCenters[y] - 2, i, 5, 5, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- } |
- } |
- bitMatrix->SetRegion(6, 9, 1, dimension - 17, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- bitMatrix->SetRegion(9, 6, dimension - 17, 1, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- if (m_versionNumber > 6) { |
- bitMatrix->SetRegion(dimension - 11, 0, 3, 6, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- bitMatrix->SetRegion(0, dimension - 11, 6, 3, e); |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- } |
- return bitMatrix; |
-} |
-CBC_QRCoderVersion* CBC_QRCoderVersion::GetVersionForNumber( |
- int32_t versionNumber, |
- int32_t& e) { |
- if (VERSION->GetSize() == 0) { |
- VERSION->Add(new CBC_QRCoderVersion( |
- 1, new CBC_QRCoderECBlocks(7, new CBC_QRCoderECB(1, 19)), |
- new CBC_QRCoderECBlocks(10, new CBC_QRCoderECB(1, 16)), |
- new CBC_QRCoderECBlocks(13, new CBC_QRCoderECB(1, 13)), |
- new CBC_QRCoderECBlocks(17, new CBC_QRCoderECB(1, 9)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 2, new CBC_QRCoderECBlocks(10, new CBC_QRCoderECB(1, 34)), |
- new CBC_QRCoderECBlocks(16, new CBC_QRCoderECB(1, 28)), |
- new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(1, 22)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(1, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 3, new CBC_QRCoderECBlocks(15, new CBC_QRCoderECB(1, 55)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(1, 44)), |
- new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 17)), |
- new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(2, 13)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 4, new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(1, 80)), |
- new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 32)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(2, 24)), |
- new CBC_QRCoderECBlocks(16, new CBC_QRCoderECB(4, 9)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 5, new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(1, 108)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(2, 43)), |
- new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 15), |
- new CBC_QRCoderECB(2, 16)), |
- new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(2, 11), |
- new CBC_QRCoderECB(2, 12)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 6, new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 68)), |
- new CBC_QRCoderECBlocks(16, new CBC_QRCoderECB(4, 27)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(4, 19)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 15)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 7, new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(2, 78)), |
- new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(4, 31)), |
- new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 14), |
- new CBC_QRCoderECB(4, 15)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 13), |
- new CBC_QRCoderECB(1, 14)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 8, new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(2, 97)), |
- new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(2, 38), |
- new CBC_QRCoderECB(2, 39)), |
- new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(4, 18), |
- new CBC_QRCoderECB(2, 19)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 14), |
- new CBC_QRCoderECB(2, 15)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 9, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(2, 116)), |
- new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(3, 36), |
- new CBC_QRCoderECB(2, 37)), |
- new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(4, 16), |
- new CBC_QRCoderECB(4, 17)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(4, 12), |
- new CBC_QRCoderECB(4, 13)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 10, new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 68), |
- new CBC_QRCoderECB(2, 69)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 43), |
- new CBC_QRCoderECB(1, 44)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(6, 19), |
- new CBC_QRCoderECB(2, 20)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(6, 15), |
- new CBC_QRCoderECB(2, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 11, new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(4, 81)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(1, 50), |
- new CBC_QRCoderECB(4, 51)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 22), |
- new CBC_QRCoderECB(4, 23)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(3, 12), |
- new CBC_QRCoderECB(8, 13)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 12, new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(2, 92), |
- new CBC_QRCoderECB(2, 93)), |
- new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(6, 36), |
- new CBC_QRCoderECB(2, 37)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 20), |
- new CBC_QRCoderECB(6, 21)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(7, 14), |
- new CBC_QRCoderECB(4, 15)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 13, new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 107)), |
- new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(8, 37), |
- new CBC_QRCoderECB(1, 38)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(8, 20), |
- new CBC_QRCoderECB(4, 21)), |
- new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(12, 11), |
- new CBC_QRCoderECB(4, 12)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 14, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(3, 115), |
- new CBC_QRCoderECB(1, 116)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(4, 40), |
- new CBC_QRCoderECB(5, 41)), |
- new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(11, 16), |
- new CBC_QRCoderECB(5, 17)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(11, 12), |
- new CBC_QRCoderECB(5, 13)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 15, new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(5, 87), |
- new CBC_QRCoderECB(1, 88)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(5, 41), |
- new CBC_QRCoderECB(5, 42)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(5, 24), |
- new CBC_QRCoderECB(7, 25)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(11, 12), |
- new CBC_QRCoderECB(7, 13)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 16, new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(5, 98), |
- new CBC_QRCoderECB(1, 99)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(7, 45), |
- new CBC_QRCoderECB(3, 46)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(15, 19), |
- new CBC_QRCoderECB(2, 20)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(3, 15), |
- new CBC_QRCoderECB(13, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 17, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(1, 107), |
- new CBC_QRCoderECB(5, 108)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(10, 46), |
- new CBC_QRCoderECB(1, 47)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(1, 22), |
- new CBC_QRCoderECB(15, 23)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 14), |
- new CBC_QRCoderECB(17, 15)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 18, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(5, 120), |
- new CBC_QRCoderECB(1, 121)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(9, 43), |
- new CBC_QRCoderECB(4, 44)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(17, 22), |
- new CBC_QRCoderECB(1, 23)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 14), |
- new CBC_QRCoderECB(19, 15)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 19, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(3, 113), |
- new CBC_QRCoderECB(4, 114)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(3, 44), |
- new CBC_QRCoderECB(11, 45)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(17, 21), |
- new CBC_QRCoderECB(4, 22)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(9, 13), |
- new CBC_QRCoderECB(16, 14)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 20, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(3, 107), |
- new CBC_QRCoderECB(5, 108)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(3, 41), |
- new CBC_QRCoderECB(13, 42)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(15, 24), |
- new CBC_QRCoderECB(5, 25)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(15, 15), |
- new CBC_QRCoderECB(10, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 21, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 116), |
- new CBC_QRCoderECB(4, 117)), |
- new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(17, 42)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(17, 22), |
- new CBC_QRCoderECB(6, 23)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 16), |
- new CBC_QRCoderECB(6, 17)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 22, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 111), |
- new CBC_QRCoderECB(7, 112)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(17, 46)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(7, 24), |
- new CBC_QRCoderECB(16, 25)), |
- new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(34, 13)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 23, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(4, 121), |
- new CBC_QRCoderECB(5, 122)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 47), |
- new CBC_QRCoderECB(14, 48)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 24), |
- new CBC_QRCoderECB(14, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(16, 15), |
- new CBC_QRCoderECB(14, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 24, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(6, 117), |
- new CBC_QRCoderECB(4, 118)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(6, 45), |
- new CBC_QRCoderECB(14, 46)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 24), |
- new CBC_QRCoderECB(16, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(30, 16), |
- new CBC_QRCoderECB(2, 17)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 25, new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(8, 106), |
- new CBC_QRCoderECB(4, 107)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(8, 47), |
- new CBC_QRCoderECB(13, 48)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(7, 24), |
- new CBC_QRCoderECB(22, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(22, 15), |
- new CBC_QRCoderECB(13, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 26, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(10, 114), |
- new CBC_QRCoderECB(2, 115)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(19, 46), |
- new CBC_QRCoderECB(4, 47)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(28, 22), |
- new CBC_QRCoderECB(6, 23)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(33, 16), |
- new CBC_QRCoderECB(4, 17)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 27, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(8, 122), |
- new CBC_QRCoderECB(4, 123)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(22, 45), |
- new CBC_QRCoderECB(3, 46)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(8, 23), |
- new CBC_QRCoderECB(26, 24)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(12, 15), |
- new CBC_QRCoderECB(28, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 28, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(3, 117), |
- new CBC_QRCoderECB(10, 118)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(3, 45), |
- new CBC_QRCoderECB(23, 46)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(4, 24), |
- new CBC_QRCoderECB(31, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 15), |
- new CBC_QRCoderECB(31, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 29, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(7, 116), |
- new CBC_QRCoderECB(7, 117)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(21, 45), |
- new CBC_QRCoderECB(7, 46)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(1, 23), |
- new CBC_QRCoderECB(37, 24)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 15), |
- new CBC_QRCoderECB(26, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 30, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(5, 115), |
- new CBC_QRCoderECB(10, 116)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(19, 47), |
- new CBC_QRCoderECB(10, 48)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(15, 24), |
- new CBC_QRCoderECB(25, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(23, 15), |
- new CBC_QRCoderECB(25, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 31, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(13, 115), |
- new CBC_QRCoderECB(3, 116)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 46), |
- new CBC_QRCoderECB(29, 47)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(42, 24), |
- new CBC_QRCoderECB(1, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(23, 15), |
- new CBC_QRCoderECB(28, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 32, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(17, 115)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(10, 46), |
- new CBC_QRCoderECB(23, 47)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(10, 24), |
- new CBC_QRCoderECB(35, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 15), |
- new CBC_QRCoderECB(35, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 33, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(17, 115), |
- new CBC_QRCoderECB(1, 116)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(14, 46), |
- new CBC_QRCoderECB(21, 47)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(29, 24), |
- new CBC_QRCoderECB(19, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 15), |
- new CBC_QRCoderECB(46, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 34, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(13, 115), |
- new CBC_QRCoderECB(6, 116)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(14, 46), |
- new CBC_QRCoderECB(23, 47)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(44, 24), |
- new CBC_QRCoderECB(7, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(59, 16), |
- new CBC_QRCoderECB(1, 17)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 35, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(12, 121), |
- new CBC_QRCoderECB(7, 122)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(12, 47), |
- new CBC_QRCoderECB(26, 48)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(39, 24), |
- new CBC_QRCoderECB(14, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(22, 15), |
- new CBC_QRCoderECB(41, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 36, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(6, 121), |
- new CBC_QRCoderECB(14, 122)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(6, 47), |
- new CBC_QRCoderECB(34, 48)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(46, 24), |
- new CBC_QRCoderECB(10, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(2, 15), |
- new CBC_QRCoderECB(64, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 37, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(17, 122), |
- new CBC_QRCoderECB(4, 123)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(29, 46), |
- new CBC_QRCoderECB(14, 47)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(49, 24), |
- new CBC_QRCoderECB(10, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(24, 15), |
- new CBC_QRCoderECB(46, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 38, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(4, 122), |
- new CBC_QRCoderECB(18, 123)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(13, 46), |
- new CBC_QRCoderECB(32, 47)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(48, 24), |
- new CBC_QRCoderECB(14, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(42, 15), |
- new CBC_QRCoderECB(32, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 39, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(20, 117), |
- new CBC_QRCoderECB(4, 118)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(40, 47), |
- new CBC_QRCoderECB(7, 48)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(43, 24), |
- new CBC_QRCoderECB(22, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(10, 15), |
- new CBC_QRCoderECB(67, 16)))); |
- VERSION->Add(new CBC_QRCoderVersion( |
- 40, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 118), |
- new CBC_QRCoderECB(6, 119)), |
- new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(18, 47), |
- new CBC_QRCoderECB(31, 48)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(34, 24), |
- new CBC_QRCoderECB(34, 25)), |
- new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(20, 15), |
- new CBC_QRCoderECB(61, 16)))); |
- } |
- if (versionNumber < 1 || versionNumber > 40) { |
- e = BCExceptionIllegalArgument; |
- BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
- } |
- return (CBC_QRCoderVersion*)(*VERSION)[versionNumber - 1]; |
-} |
-void CBC_QRCoderVersion::Destroy() { |
- int32_t i; |
- for (i = 0; i < VERSION->GetSize(); i++) { |
- delete ((CBC_QRCoderVersion*)(*VERSION)[i]); |
- } |
-} |
+// Copyright 2014 PDFium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+// Original code is licensed as follows: |
+/* |
+ * Copyright 2007 ZXing authors |
+ * |
+ * Licensed under the Apache License, Version 2.0 (the "License"); |
+ * you may not use this file except in compliance with the License. |
+ * You may obtain a copy of the License at |
+ * |
+ * http://www.apache.org/licenses/LICENSE-2.0 |
+ * |
+ * Unless required by applicable law or agreed to in writing, software |
+ * distributed under the License is distributed on an "AS IS" BASIS, |
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+ * See the License for the specific language governing permissions and |
+ * limitations under the License. |
+ */ |
+ |
+#include "xfa/src/fxbarcode/barcode.h" |
+#include "xfa/src/fxbarcode/utils.h" |
+#include "xfa/src/fxbarcode/common/BC_CommonBitMatrix.h" |
+#include "BC_QRCoderECB.h" |
+#include "BC_QRCoderFormatInformation.h" |
+#include "BC_QRCoderErrorCorrectionLevel.h" |
+#include "BC_QRCoderBitVector.h" |
+#include "BC_QRCoderECBlocks.h" |
+#include "BC_QRCoderVersion.h" |
+const int32_t CBC_QRCoderVersion::VERSION_DECODE_INFO[] = { |
+ 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, |
+ 0x0E60D, 0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, |
+ 0x15683, 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 0x1B08E, |
+ 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 0x209D5, 0x216F0, 0x228BA, |
+ 0x2379F, 0x24B0B, 0x2542E, 0x26A64, 0x27541, 0x28C69}; |
+CFX_PtrArray* CBC_QRCoderVersion::VERSION = NULL; |
+void CBC_QRCoderVersion::Initialize() { |
+ VERSION = new CFX_PtrArray(); |
+} |
+void CBC_QRCoderVersion::Finalize() { |
+ for (int32_t i = 0; i < VERSION->GetSize(); i++) { |
+ CBC_QRCoderVersion* v = (CBC_QRCoderVersion*)(VERSION->GetAt(i)); |
+ delete v; |
+ } |
+ delete VERSION; |
+} |
+CBC_QRCoderVersion::CBC_QRCoderVersion(int32_t versionNumber, |
+ CBC_QRCoderECBlocks* ecBlocks1, |
+ CBC_QRCoderECBlocks* ecBlocks2, |
+ CBC_QRCoderECBlocks* ecBlocks3, |
+ CBC_QRCoderECBlocks* ecBlocks4) { |
+ m_versionNumber = versionNumber; |
+ m_ecBlocks.Add(ecBlocks1); |
+ m_ecBlocks.Add(ecBlocks2); |
+ m_ecBlocks.Add(ecBlocks3); |
+ m_ecBlocks.Add(ecBlocks4); |
+ int32_t total = 0; |
+ int32_t ecCodeWords = ecBlocks1->GetECCodeWordsPerBlock(); |
+ CFX_PtrArray* ecbArray = ecBlocks1->GetECBlocks(); |
+ for (int32_t i = 0; i < ecbArray->GetSize(); i++) { |
+ CBC_QRCoderECB* ecBlock = (CBC_QRCoderECB*)((*ecbArray)[i]); |
+ total += ecBlock->GetCount() * (ecBlock->GetDataCodeWords() + ecCodeWords); |
+ } |
+ m_totalCodeWords = total; |
+ switch (versionNumber) { |
+ case 1: |
+ break; |
+ case 2: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(18); |
+ break; |
+ case 3: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(22); |
+ break; |
+ case 4: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(26); |
+ break; |
+ case 5: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ break; |
+ case 6: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(34); |
+ break; |
+ case 7: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(22); |
+ m_alignmentPatternCenters.Add(38); |
+ break; |
+ case 8: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(24); |
+ m_alignmentPatternCenters.Add(42); |
+ break; |
+ case 9: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(26); |
+ m_alignmentPatternCenters.Add(46); |
+ break; |
+ case 10: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(28); |
+ m_alignmentPatternCenters.Add(50); |
+ break; |
+ case 11: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(54); |
+ break; |
+ case 12: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(32); |
+ m_alignmentPatternCenters.Add(58); |
+ break; |
+ case 13: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(34); |
+ m_alignmentPatternCenters.Add(62); |
+ break; |
+ case 14: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(26); |
+ m_alignmentPatternCenters.Add(46); |
+ m_alignmentPatternCenters.Add(66); |
+ break; |
+ case 15: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(26); |
+ m_alignmentPatternCenters.Add(48); |
+ m_alignmentPatternCenters.Add(70); |
+ break; |
+ case 16: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(26); |
+ m_alignmentPatternCenters.Add(50); |
+ m_alignmentPatternCenters.Add(74); |
+ break; |
+ case 17: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(54); |
+ m_alignmentPatternCenters.Add(78); |
+ break; |
+ case 18: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(56); |
+ m_alignmentPatternCenters.Add(82); |
+ break; |
+ case 19: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(58); |
+ m_alignmentPatternCenters.Add(86); |
+ break; |
+ case 20: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(34); |
+ m_alignmentPatternCenters.Add(62); |
+ m_alignmentPatternCenters.Add(90); |
+ break; |
+ case 21: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(28); |
+ m_alignmentPatternCenters.Add(50); |
+ m_alignmentPatternCenters.Add(72); |
+ m_alignmentPatternCenters.Add(94); |
+ break; |
+ case 22: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(26); |
+ m_alignmentPatternCenters.Add(50); |
+ m_alignmentPatternCenters.Add(74); |
+ m_alignmentPatternCenters.Add(98); |
+ break; |
+ case 23: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(54); |
+ m_alignmentPatternCenters.Add(74); |
+ m_alignmentPatternCenters.Add(102); |
+ break; |
+ case 24: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(28); |
+ m_alignmentPatternCenters.Add(54); |
+ m_alignmentPatternCenters.Add(80); |
+ m_alignmentPatternCenters.Add(106); |
+ break; |
+ case 25: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(32); |
+ m_alignmentPatternCenters.Add(58); |
+ m_alignmentPatternCenters.Add(84); |
+ m_alignmentPatternCenters.Add(110); |
+ break; |
+ case 26: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(58); |
+ m_alignmentPatternCenters.Add(86); |
+ m_alignmentPatternCenters.Add(114); |
+ break; |
+ case 27: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(34); |
+ m_alignmentPatternCenters.Add(62); |
+ m_alignmentPatternCenters.Add(90); |
+ m_alignmentPatternCenters.Add(118); |
+ break; |
+ case 28: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(26); |
+ m_alignmentPatternCenters.Add(50); |
+ m_alignmentPatternCenters.Add(74); |
+ m_alignmentPatternCenters.Add(98); |
+ m_alignmentPatternCenters.Add(122); |
+ break; |
+ case 29: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(54); |
+ m_alignmentPatternCenters.Add(78); |
+ m_alignmentPatternCenters.Add(102); |
+ m_alignmentPatternCenters.Add(126); |
+ break; |
+ case 30: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(26); |
+ m_alignmentPatternCenters.Add(52); |
+ m_alignmentPatternCenters.Add(78); |
+ m_alignmentPatternCenters.Add(104); |
+ m_alignmentPatternCenters.Add(130); |
+ break; |
+ case 31: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(56); |
+ m_alignmentPatternCenters.Add(82); |
+ m_alignmentPatternCenters.Add(108); |
+ m_alignmentPatternCenters.Add(134); |
+ break; |
+ case 32: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(34); |
+ m_alignmentPatternCenters.Add(60); |
+ m_alignmentPatternCenters.Add(86); |
+ m_alignmentPatternCenters.Add(112); |
+ m_alignmentPatternCenters.Add(138); |
+ break; |
+ case 33: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(58); |
+ m_alignmentPatternCenters.Add(86); |
+ m_alignmentPatternCenters.Add(114); |
+ m_alignmentPatternCenters.Add(142); |
+ break; |
+ case 34: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(34); |
+ m_alignmentPatternCenters.Add(62); |
+ m_alignmentPatternCenters.Add(90); |
+ m_alignmentPatternCenters.Add(118); |
+ m_alignmentPatternCenters.Add(146); |
+ break; |
+ case 35: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(54); |
+ m_alignmentPatternCenters.Add(78); |
+ m_alignmentPatternCenters.Add(102); |
+ m_alignmentPatternCenters.Add(126); |
+ m_alignmentPatternCenters.Add(150); |
+ break; |
+ case 36: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(24); |
+ m_alignmentPatternCenters.Add(50); |
+ m_alignmentPatternCenters.Add(76); |
+ m_alignmentPatternCenters.Add(102); |
+ m_alignmentPatternCenters.Add(128); |
+ m_alignmentPatternCenters.Add(154); |
+ break; |
+ case 37: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(28); |
+ m_alignmentPatternCenters.Add(54); |
+ m_alignmentPatternCenters.Add(80); |
+ m_alignmentPatternCenters.Add(106); |
+ m_alignmentPatternCenters.Add(132); |
+ m_alignmentPatternCenters.Add(158); |
+ break; |
+ case 38: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(32); |
+ m_alignmentPatternCenters.Add(58); |
+ m_alignmentPatternCenters.Add(84); |
+ m_alignmentPatternCenters.Add(110); |
+ m_alignmentPatternCenters.Add(136); |
+ m_alignmentPatternCenters.Add(162); |
+ break; |
+ case 39: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(26); |
+ m_alignmentPatternCenters.Add(54); |
+ m_alignmentPatternCenters.Add(82); |
+ m_alignmentPatternCenters.Add(110); |
+ m_alignmentPatternCenters.Add(138); |
+ m_alignmentPatternCenters.Add(166); |
+ break; |
+ case 40: |
+ m_alignmentPatternCenters.Add(6); |
+ m_alignmentPatternCenters.Add(30); |
+ m_alignmentPatternCenters.Add(58); |
+ m_alignmentPatternCenters.Add(86); |
+ m_alignmentPatternCenters.Add(114); |
+ m_alignmentPatternCenters.Add(142); |
+ m_alignmentPatternCenters.Add(170); |
+ break; |
+ } |
+} |
+CBC_QRCoderVersion::~CBC_QRCoderVersion() { |
+ if (m_ecBlocks.GetSize() != 0) { |
+ int32_t itBeg = 0; |
+ int32_t itEnd = m_ecBlocks.GetSize(); |
+ while (itBeg != itEnd) { |
+ delete ((CBC_QRCoderECBlocks*)(m_ecBlocks[itBeg])); |
+ itBeg++; |
+ } |
+ } |
+} |
+int32_t CBC_QRCoderVersion::GetVersionNumber() { |
+ return m_versionNumber; |
+} |
+CFX_Int32Array* CBC_QRCoderVersion::GetAlignmentPatternCenters() { |
+ return &m_alignmentPatternCenters; |
+} |
+int32_t CBC_QRCoderVersion::GetTotalCodeWords() { |
+ return m_totalCodeWords; |
+} |
+int32_t CBC_QRCoderVersion::GetDimensionForVersion() { |
+ return 17 + 4 * m_versionNumber; |
+} |
+CBC_QRCoderECBlocks* CBC_QRCoderVersion::GetECBlocksForLevel( |
+ CBC_QRCoderErrorCorrectionLevel* ecLevel) { |
+ return (CBC_QRCoderECBlocks*)m_ecBlocks[ecLevel->Ordinal()]; |
+} |
+CBC_QRCoderVersion* CBC_QRCoderVersion::GetProvisionalVersionForDimension( |
+ int32_t dimension, |
+ int32_t& e) { |
+ if ((dimension % 4) != 1) { |
+ e = BCExceptionRead; |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ } |
+ CBC_QRCoderVersion* qcv = GetVersionForNumber((dimension - 17) >> 2, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ return qcv; |
+} |
+CBC_QRCoderVersion* CBC_QRCoderVersion::DecodeVersionInformation( |
+ int32_t versionBits, |
+ int32_t& e) { |
+ int32_t bestDifference = FXSYS_IntMax; |
+ int32_t bestVersion = 0; |
+ for (int32_t i = 0; i < 34; i++) { |
+ int32_t targetVersion = VERSION_DECODE_INFO[i]; |
+ if (targetVersion == versionBits) { |
+ CBC_QRCoderVersion* qcv = GetVersionForNumber(i + 7, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ return qcv; |
+ } |
+ int32_t bitsDifference = CBC_QRCoderFormatInformation::NumBitsDiffering( |
+ versionBits, targetVersion); |
+ if (bitsDifference < bestDifference) { |
+ bestVersion = i + 7; |
+ bestDifference = bitsDifference; |
+ } |
+ } |
+ if (bestDifference <= 3) { |
+ CBC_QRCoderVersion* qcv = GetVersionForNumber(bestVersion, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ return qcv; |
+ } |
+ return NULL; |
+} |
+CBC_CommonBitMatrix* CBC_QRCoderVersion::BuildFunctionPattern(int32_t& e) { |
+ int32_t dimension = GetDimensionForVersion(); |
+ CBC_CommonBitMatrix* bitMatrix = new CBC_CommonBitMatrix(); |
+ bitMatrix->Init(dimension); |
+ bitMatrix->SetRegion(0, 0, 9, 9, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ bitMatrix->SetRegion(dimension - 8, 0, 8, 9, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ bitMatrix->SetRegion(0, dimension - 8, 9, 8, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ int32_t max = m_alignmentPatternCenters.GetSize(); |
+ for (int32_t x = 0; x < max; x++) { |
+ int32_t i = m_alignmentPatternCenters[x] - 2; |
+ for (int32_t y = 0; y < max; y++) { |
+ if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) { |
+ continue; |
+ } |
+ bitMatrix->SetRegion(m_alignmentPatternCenters[y] - 2, i, 5, 5, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ } |
+ } |
+ bitMatrix->SetRegion(6, 9, 1, dimension - 17, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ bitMatrix->SetRegion(9, 6, dimension - 17, 1, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ if (m_versionNumber > 6) { |
+ bitMatrix->SetRegion(dimension - 11, 0, 3, 6, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ bitMatrix->SetRegion(0, dimension - 11, 6, 3, e); |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ } |
+ return bitMatrix; |
+} |
+CBC_QRCoderVersion* CBC_QRCoderVersion::GetVersionForNumber( |
+ int32_t versionNumber, |
+ int32_t& e) { |
+ if (VERSION->GetSize() == 0) { |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 1, new CBC_QRCoderECBlocks(7, new CBC_QRCoderECB(1, 19)), |
+ new CBC_QRCoderECBlocks(10, new CBC_QRCoderECB(1, 16)), |
+ new CBC_QRCoderECBlocks(13, new CBC_QRCoderECB(1, 13)), |
+ new CBC_QRCoderECBlocks(17, new CBC_QRCoderECB(1, 9)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 2, new CBC_QRCoderECBlocks(10, new CBC_QRCoderECB(1, 34)), |
+ new CBC_QRCoderECBlocks(16, new CBC_QRCoderECB(1, 28)), |
+ new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(1, 22)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(1, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 3, new CBC_QRCoderECBlocks(15, new CBC_QRCoderECB(1, 55)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(1, 44)), |
+ new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 17)), |
+ new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(2, 13)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 4, new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(1, 80)), |
+ new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 32)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(2, 24)), |
+ new CBC_QRCoderECBlocks(16, new CBC_QRCoderECB(4, 9)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 5, new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(1, 108)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(2, 43)), |
+ new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 15), |
+ new CBC_QRCoderECB(2, 16)), |
+ new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(2, 11), |
+ new CBC_QRCoderECB(2, 12)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 6, new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 68)), |
+ new CBC_QRCoderECBlocks(16, new CBC_QRCoderECB(4, 27)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(4, 19)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 15)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 7, new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(2, 78)), |
+ new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(4, 31)), |
+ new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 14), |
+ new CBC_QRCoderECB(4, 15)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 13), |
+ new CBC_QRCoderECB(1, 14)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 8, new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(2, 97)), |
+ new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(2, 38), |
+ new CBC_QRCoderECB(2, 39)), |
+ new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(4, 18), |
+ new CBC_QRCoderECB(2, 19)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 14), |
+ new CBC_QRCoderECB(2, 15)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 9, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(2, 116)), |
+ new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(3, 36), |
+ new CBC_QRCoderECB(2, 37)), |
+ new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(4, 16), |
+ new CBC_QRCoderECB(4, 17)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(4, 12), |
+ new CBC_QRCoderECB(4, 13)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 10, new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 68), |
+ new CBC_QRCoderECB(2, 69)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 43), |
+ new CBC_QRCoderECB(1, 44)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(6, 19), |
+ new CBC_QRCoderECB(2, 20)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(6, 15), |
+ new CBC_QRCoderECB(2, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 11, new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(4, 81)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(1, 50), |
+ new CBC_QRCoderECB(4, 51)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 22), |
+ new CBC_QRCoderECB(4, 23)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(3, 12), |
+ new CBC_QRCoderECB(8, 13)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 12, new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(2, 92), |
+ new CBC_QRCoderECB(2, 93)), |
+ new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(6, 36), |
+ new CBC_QRCoderECB(2, 37)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 20), |
+ new CBC_QRCoderECB(6, 21)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(7, 14), |
+ new CBC_QRCoderECB(4, 15)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 13, new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 107)), |
+ new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(8, 37), |
+ new CBC_QRCoderECB(1, 38)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(8, 20), |
+ new CBC_QRCoderECB(4, 21)), |
+ new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(12, 11), |
+ new CBC_QRCoderECB(4, 12)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 14, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(3, 115), |
+ new CBC_QRCoderECB(1, 116)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(4, 40), |
+ new CBC_QRCoderECB(5, 41)), |
+ new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(11, 16), |
+ new CBC_QRCoderECB(5, 17)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(11, 12), |
+ new CBC_QRCoderECB(5, 13)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 15, new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(5, 87), |
+ new CBC_QRCoderECB(1, 88)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(5, 41), |
+ new CBC_QRCoderECB(5, 42)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(5, 24), |
+ new CBC_QRCoderECB(7, 25)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(11, 12), |
+ new CBC_QRCoderECB(7, 13)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 16, new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(5, 98), |
+ new CBC_QRCoderECB(1, 99)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(7, 45), |
+ new CBC_QRCoderECB(3, 46)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(15, 19), |
+ new CBC_QRCoderECB(2, 20)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(3, 15), |
+ new CBC_QRCoderECB(13, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 17, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(1, 107), |
+ new CBC_QRCoderECB(5, 108)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(10, 46), |
+ new CBC_QRCoderECB(1, 47)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(1, 22), |
+ new CBC_QRCoderECB(15, 23)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 14), |
+ new CBC_QRCoderECB(17, 15)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 18, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(5, 120), |
+ new CBC_QRCoderECB(1, 121)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(9, 43), |
+ new CBC_QRCoderECB(4, 44)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(17, 22), |
+ new CBC_QRCoderECB(1, 23)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 14), |
+ new CBC_QRCoderECB(19, 15)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 19, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(3, 113), |
+ new CBC_QRCoderECB(4, 114)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(3, 44), |
+ new CBC_QRCoderECB(11, 45)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(17, 21), |
+ new CBC_QRCoderECB(4, 22)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(9, 13), |
+ new CBC_QRCoderECB(16, 14)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 20, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(3, 107), |
+ new CBC_QRCoderECB(5, 108)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(3, 41), |
+ new CBC_QRCoderECB(13, 42)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(15, 24), |
+ new CBC_QRCoderECB(5, 25)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(15, 15), |
+ new CBC_QRCoderECB(10, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 21, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 116), |
+ new CBC_QRCoderECB(4, 117)), |
+ new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(17, 42)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(17, 22), |
+ new CBC_QRCoderECB(6, 23)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 16), |
+ new CBC_QRCoderECB(6, 17)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 22, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 111), |
+ new CBC_QRCoderECB(7, 112)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(17, 46)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(7, 24), |
+ new CBC_QRCoderECB(16, 25)), |
+ new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(34, 13)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 23, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(4, 121), |
+ new CBC_QRCoderECB(5, 122)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 47), |
+ new CBC_QRCoderECB(14, 48)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 24), |
+ new CBC_QRCoderECB(14, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(16, 15), |
+ new CBC_QRCoderECB(14, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 24, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(6, 117), |
+ new CBC_QRCoderECB(4, 118)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(6, 45), |
+ new CBC_QRCoderECB(14, 46)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 24), |
+ new CBC_QRCoderECB(16, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(30, 16), |
+ new CBC_QRCoderECB(2, 17)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 25, new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(8, 106), |
+ new CBC_QRCoderECB(4, 107)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(8, 47), |
+ new CBC_QRCoderECB(13, 48)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(7, 24), |
+ new CBC_QRCoderECB(22, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(22, 15), |
+ new CBC_QRCoderECB(13, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 26, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(10, 114), |
+ new CBC_QRCoderECB(2, 115)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(19, 46), |
+ new CBC_QRCoderECB(4, 47)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(28, 22), |
+ new CBC_QRCoderECB(6, 23)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(33, 16), |
+ new CBC_QRCoderECB(4, 17)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 27, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(8, 122), |
+ new CBC_QRCoderECB(4, 123)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(22, 45), |
+ new CBC_QRCoderECB(3, 46)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(8, 23), |
+ new CBC_QRCoderECB(26, 24)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(12, 15), |
+ new CBC_QRCoderECB(28, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 28, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(3, 117), |
+ new CBC_QRCoderECB(10, 118)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(3, 45), |
+ new CBC_QRCoderECB(23, 46)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(4, 24), |
+ new CBC_QRCoderECB(31, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 15), |
+ new CBC_QRCoderECB(31, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 29, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(7, 116), |
+ new CBC_QRCoderECB(7, 117)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(21, 45), |
+ new CBC_QRCoderECB(7, 46)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(1, 23), |
+ new CBC_QRCoderECB(37, 24)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 15), |
+ new CBC_QRCoderECB(26, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 30, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(5, 115), |
+ new CBC_QRCoderECB(10, 116)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(19, 47), |
+ new CBC_QRCoderECB(10, 48)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(15, 24), |
+ new CBC_QRCoderECB(25, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(23, 15), |
+ new CBC_QRCoderECB(25, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 31, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(13, 115), |
+ new CBC_QRCoderECB(3, 116)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 46), |
+ new CBC_QRCoderECB(29, 47)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(42, 24), |
+ new CBC_QRCoderECB(1, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(23, 15), |
+ new CBC_QRCoderECB(28, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 32, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(17, 115)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(10, 46), |
+ new CBC_QRCoderECB(23, 47)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(10, 24), |
+ new CBC_QRCoderECB(35, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 15), |
+ new CBC_QRCoderECB(35, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 33, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(17, 115), |
+ new CBC_QRCoderECB(1, 116)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(14, 46), |
+ new CBC_QRCoderECB(21, 47)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(29, 24), |
+ new CBC_QRCoderECB(19, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 15), |
+ new CBC_QRCoderECB(46, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 34, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(13, 115), |
+ new CBC_QRCoderECB(6, 116)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(14, 46), |
+ new CBC_QRCoderECB(23, 47)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(44, 24), |
+ new CBC_QRCoderECB(7, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(59, 16), |
+ new CBC_QRCoderECB(1, 17)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 35, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(12, 121), |
+ new CBC_QRCoderECB(7, 122)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(12, 47), |
+ new CBC_QRCoderECB(26, 48)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(39, 24), |
+ new CBC_QRCoderECB(14, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(22, 15), |
+ new CBC_QRCoderECB(41, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 36, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(6, 121), |
+ new CBC_QRCoderECB(14, 122)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(6, 47), |
+ new CBC_QRCoderECB(34, 48)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(46, 24), |
+ new CBC_QRCoderECB(10, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(2, 15), |
+ new CBC_QRCoderECB(64, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 37, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(17, 122), |
+ new CBC_QRCoderECB(4, 123)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(29, 46), |
+ new CBC_QRCoderECB(14, 47)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(49, 24), |
+ new CBC_QRCoderECB(10, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(24, 15), |
+ new CBC_QRCoderECB(46, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 38, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(4, 122), |
+ new CBC_QRCoderECB(18, 123)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(13, 46), |
+ new CBC_QRCoderECB(32, 47)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(48, 24), |
+ new CBC_QRCoderECB(14, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(42, 15), |
+ new CBC_QRCoderECB(32, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 39, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(20, 117), |
+ new CBC_QRCoderECB(4, 118)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(40, 47), |
+ new CBC_QRCoderECB(7, 48)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(43, 24), |
+ new CBC_QRCoderECB(22, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(10, 15), |
+ new CBC_QRCoderECB(67, 16)))); |
+ VERSION->Add(new CBC_QRCoderVersion( |
+ 40, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 118), |
+ new CBC_QRCoderECB(6, 119)), |
+ new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(18, 47), |
+ new CBC_QRCoderECB(31, 48)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(34, 24), |
+ new CBC_QRCoderECB(34, 25)), |
+ new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(20, 15), |
+ new CBC_QRCoderECB(61, 16)))); |
+ } |
+ if (versionNumber < 1 || versionNumber > 40) { |
+ e = BCExceptionIllegalArgument; |
+ BC_EXCEPTION_CHECK_ReturnValue(e, NULL); |
+ } |
+ return (CBC_QRCoderVersion*)(*VERSION)[versionNumber - 1]; |
+} |
+void CBC_QRCoderVersion::Destroy() { |
+ int32_t i; |
+ for (i = 0; i < VERSION->GetSize(); i++) { |
+ delete ((CBC_QRCoderVersion*)(*VERSION)[i]); |
+ } |
+} |