| 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]);
|
| + }
|
| +}
|
|
|