diff options
Diffstat (limited to 'xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.cpp')
-rw-r--r-- | xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.cpp | 1536 |
1 files changed, 768 insertions, 768 deletions
diff --git a/xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.cpp b/xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.cpp index 15b99fbb6a..1798db760a 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]); + } +} |