14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code is licensed as follows: 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann/* 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * Copyright 2007 ZXing authors 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * Licensed under the Apache License, Version 2.0 (the "License"); 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * you may not use this file except in compliance with the License. 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * You may obtain a copy of the License at 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * http://www.apache.org/licenses/LICENSE-2.0 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * Unless required by applicable law or agreed to in writing, software 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * distributed under the License is distributed on an "AS IS" BASIS, 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * See the License for the specific language governing permissions and 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann * limitations under the License. 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann */ 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxbarcode/common/BC_CommonBitMatrix.h" 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxbarcode/qrcode/BC_QRCoderBitVector.h" 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxbarcode/qrcode/BC_QRCoderECB.h" 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxbarcode/qrcode/BC_QRCoderECBlocks.h" 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxbarcode/qrcode/BC_QRCoderErrorCorrectionLevel.h" 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxbarcode/qrcode/BC_QRCoderVersion.h" 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxbarcode/utils.h" 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannnamespace { 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst uint8_t BITS_SET_IN_HALF_BYTE[] = {0, 1, 1, 2, 1, 2, 2, 3, 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1, 2, 2, 3, 2, 3, 3, 4}; 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t NumBitsDiffering(int32_t a, int32_t b) { 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann a ^= b; 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return BITS_SET_IN_HALF_BYTE[a & 0x0F] + 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann BITS_SET_IN_HALF_BYTE[(a >> 4) & 0x0F] + 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann BITS_SET_IN_HALF_BYTE[(a >> 8) & 0x0F] + 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann BITS_SET_IN_HALF_BYTE[(a >> 12) & 0x0F] + 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann BITS_SET_IN_HALF_BYTE[(a >> 16) & 0x0F] + 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann BITS_SET_IN_HALF_BYTE[(a >> 20) & 0x0F] + 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann BITS_SET_IN_HALF_BYTE[(a >> 24) & 0x0F] + 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann BITS_SET_IN_HALF_BYTE[(a >> 28) & 0x0F]; 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} // namespace 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannconst int32_t CBC_QRCoderVersion::VERSION_DECODE_INFO[] = { 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 0x0E60D, 0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 0x15683, 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 0x1B08E, 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 0x209D5, 0x216F0, 0x228BA, 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 0x2379F, 0x24B0B, 0x2542E, 0x26A64, 0x27541, 0x28C69}; 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCFX_ArrayTemplate<CBC_QRCoderVersion*>* CBC_QRCoderVersion::VERSION = nullptr; 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CBC_QRCoderVersion::Initialize() { 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION = new CFX_ArrayTemplate<CBC_QRCoderVersion*>(); 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CBC_QRCoderVersion::Finalize() { 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < VERSION->GetSize(); i++) 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann delete VERSION->GetAt(i); 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann delete VERSION; 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION = nullptr; 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCBC_QRCoderVersion::CBC_QRCoderVersion(int32_t versionNumber, 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_QRCoderECBlocks* ecBlocks1, 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_QRCoderECBlocks* ecBlocks2, 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_QRCoderECBlocks* ecBlocks3, 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_QRCoderECBlocks* ecBlocks4) { 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_versionNumber = versionNumber; 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_ecBlocksArray.Add(ecBlocks1); 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_ecBlocksArray.Add(ecBlocks2); 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_ecBlocksArray.Add(ecBlocks3); 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_ecBlocksArray.Add(ecBlocks4); 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t total = 0; 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t ecCodeWords = ecBlocks1->GetECCodeWordsPerBlock(); 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ArrayTemplate<CBC_QRCoderECB*>* ecbArray = ecBlocks1->GetECBlocks(); 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < ecbArray->GetSize(); i++) { 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_QRCoderECB* ecBlock = (*ecbArray)[i]; 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann total += ecBlock->GetCount() * (ecBlock->GetDataCodeWords() + ecCodeWords); 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_totalCodeWords = total; 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann switch (versionNumber) { 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 1: 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 2: 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(18); 934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 3: 954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(22); 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 4: 994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(26); 1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 5: 1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 1054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 6: 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(34); 1094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 7: 1114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(22); 1134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(38); 1144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 8: 1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(24); 1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(42); 1194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 9: 1214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(26); 1234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(46); 1244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 10: 1264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(28); 1284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(50); 1294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 11: 1314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 1334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(54); 1344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 12: 1364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(32); 1384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(58); 1394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 13: 1414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(34); 1434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(62); 1444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 14: 1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(26); 1484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(46); 1494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(66); 1504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 15: 1524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(26); 1544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(48); 1554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(70); 1564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 16: 1584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(26); 1604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(50); 1614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(74); 1624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 17: 1644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 1664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(54); 1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(78); 1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 18: 1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(56); 1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(82); 1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 19: 1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(58); 1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(86); 1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 20: 1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(34); 1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(62); 1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(90); 1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 21: 1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(28); 1904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(50); 1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(72); 1924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(94); 1934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 22: 1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(26); 1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(50); 1984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(74); 1994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(98); 2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 23: 2024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 2044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(54); 2054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(74); 2064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(102); 2074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 24: 2094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(28); 2114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(54); 2124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(80); 2134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(106); 2144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 25: 2164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(32); 2184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(58); 2194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(84); 2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(110); 2214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 26: 2234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 2254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(58); 2264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(86); 2274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(114); 2284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 27: 2304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(34); 2324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(62); 2334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(90); 2344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(118); 2354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 28: 2374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(26); 2394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(50); 2404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(74); 2414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(98); 2424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(122); 2434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 29: 2454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 2474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(54); 2484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(78); 2494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(102); 2504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(126); 2514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 30: 2534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(26); 2554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(52); 2564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(78); 2574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(104); 2584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(130); 2594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 31: 2614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 2634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(56); 2644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(82); 2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(108); 2664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(134); 2674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 32: 2694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(34); 2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(60); 2724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(86); 2734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(112); 2744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(138); 2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 33: 2774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 2794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(58); 2804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(86); 2814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(114); 2824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(142); 2834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 34: 2854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(34); 2874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(62); 2884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(90); 2894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(118); 2904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(146); 2914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 2924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 35: 2934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 2944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 2954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(54); 2964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(78); 2974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(102); 2984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(126); 2994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(150); 3004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 3014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 36: 3024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 3034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(24); 3044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(50); 3054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(76); 3064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(102); 3074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(128); 3084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(154); 3094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 3104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 37: 3114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 3124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(28); 3134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(54); 3144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(80); 3154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(106); 3164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(132); 3174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(158); 3184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 3194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 38: 3204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 3214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(32); 3224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(58); 3234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(84); 3244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(110); 3254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(136); 3264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(162); 3274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 3284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 39: 3294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 3304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(26); 3314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(54); 3324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(82); 3334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(110); 3344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(138); 3354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(166); 3364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 3374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann case 40: 3384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(6); 3394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(30); 3404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(58); 3414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(86); 3424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(114); 3434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(142); 3444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_alignmentPatternCenters.Add(170); 3454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 3464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCBC_QRCoderVersion::~CBC_QRCoderVersion() { 3504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < m_ecBlocksArray.GetSize(); ++i) 3514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann delete m_ecBlocksArray[i]; 3524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CBC_QRCoderVersion::GetVersionNumber() { 3554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_versionNumber; 3564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 35733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. MoltmannCFX_ArrayTemplate<int32_t>* CBC_QRCoderVersion::GetAlignmentPatternCenters() { 3584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return &m_alignmentPatternCenters; 3594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CBC_QRCoderVersion::GetTotalCodeWords() { 3614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_totalCodeWords; 3624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannint32_t CBC_QRCoderVersion::GetDimensionForVersion() { 3644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return 17 + 4 * m_versionNumber; 3654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCBC_QRCoderECBlocks* CBC_QRCoderVersion::GetECBlocksForLevel( 3674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_QRCoderErrorCorrectionLevel* ecLevel) { 3684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return m_ecBlocksArray[ecLevel->Ordinal()]; 3694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCBC_QRCoderVersion* CBC_QRCoderVersion::GetProvisionalVersionForDimension( 3714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t dimension, 3724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t& e) { 3734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((dimension % 4) != 1) { 3744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann e = BCExceptionRead; 37533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 3764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_QRCoderVersion* qcv = GetVersionForNumber((dimension - 17) >> 2, e); 37833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 37933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 3804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return qcv; 3814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCBC_QRCoderVersion* CBC_QRCoderVersion::DecodeVersionInformation( 3834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t versionBits, 3844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t& e) { 3854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t bestDifference = FXSYS_IntMax; 3864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t bestVersion = 0; 3874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < 34; i++) { 3884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t targetVersion = VERSION_DECODE_INFO[i]; 3894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (targetVersion == versionBits) { 3904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_QRCoderVersion* qcv = GetVersionForNumber(i + 7, e); 39133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 39233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 3934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return qcv; 3944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t bitsDifference = NumBitsDiffering(versionBits, targetVersion); 3964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bitsDifference < bestDifference) { 3974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bestVersion = i + 7; 3984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bestDifference = bitsDifference; 3994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bestDifference <= 3) { 4024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_QRCoderVersion* qcv = GetVersionForNumber(bestVersion, e); 40333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 40433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 4054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return qcv; 4064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nullptr; 4084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCBC_CommonBitMatrix* CBC_QRCoderVersion::BuildFunctionPattern(int32_t& e) { 4104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t dimension = GetDimensionForVersion(); 4114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CBC_CommonBitMatrix* bitMatrix = new CBC_CommonBitMatrix(); 4124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bitMatrix->Init(dimension); 4134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bitMatrix->SetRegion(0, 0, 9, 9, e); 41433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 41533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 4164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bitMatrix->SetRegion(dimension - 8, 0, 8, 9, e); 41733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 41833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 4194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bitMatrix->SetRegion(0, dimension - 8, 9, 8, e); 42033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 42133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 4224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t max = m_alignmentPatternCenters.GetSize(); 4234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t x = 0; x < max; x++) { 4244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t i = m_alignmentPatternCenters[x] - 2; 4254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t y = 0; y < max; y++) { 4264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) { 4274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 4284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bitMatrix->SetRegion(m_alignmentPatternCenters[y] - 2, i, 5, 5, e); 43033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 43133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 4324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bitMatrix->SetRegion(6, 9, 1, dimension - 17, e); 43533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 43633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 4374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bitMatrix->SetRegion(9, 6, dimension - 17, 1, e); 43833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 43933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 4404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_versionNumber > 6) { 4414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bitMatrix->SetRegion(dimension - 11, 0, 3, 6, e); 44233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 44333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 4444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bitMatrix->SetRegion(0, dimension - 11, 6, 3, e); 44533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann if (e != BCExceptionNO) 44633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 4474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return bitMatrix; 4494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCBC_QRCoderVersion* CBC_QRCoderVersion::GetVersionForNumber( 4514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t versionNumber, 4524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t& e) { 4534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (VERSION->GetSize() == 0) { 4544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 4554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1, new CBC_QRCoderECBlocks(7, new CBC_QRCoderECB(1, 19)), 4564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(10, new CBC_QRCoderECB(1, 16)), 4574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(13, new CBC_QRCoderECB(1, 13)), 4584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(17, new CBC_QRCoderECB(1, 9)))); 4594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 4604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2, new CBC_QRCoderECBlocks(10, new CBC_QRCoderECB(1, 34)), 4614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(16, new CBC_QRCoderECB(1, 28)), 4624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(1, 22)), 4634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(1, 16)))); 4644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 4654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3, new CBC_QRCoderECBlocks(15, new CBC_QRCoderECB(1, 55)), 4664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(1, 44)), 4674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 17)), 4684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(2, 13)))); 4694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 4704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4, new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(1, 80)), 4714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 32)), 4724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(2, 24)), 4734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(16, new CBC_QRCoderECB(4, 9)))); 4744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 4754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 5, new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(1, 108)), 4764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(2, 43)), 4774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 15), 4784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 16)), 4794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(2, 11), 4804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 12)))); 4814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 4824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6, new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 68)), 4834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(16, new CBC_QRCoderECB(4, 27)), 4844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(4, 19)), 4854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 15)))); 4864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 4874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7, new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(2, 78)), 4884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(4, 31)), 4894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 14), 4904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 15)), 4914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 13), 4924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 14)))); 4934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 4944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 8, new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(2, 97)), 4954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(2, 38), 4964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 39)), 4974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(4, 18), 4984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 19)), 4994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 14), 5004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 15)))); 5014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 9, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(2, 116)), 5034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(3, 36), 5044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 37)), 5054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(4, 16), 5064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 17)), 5074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(4, 12), 5084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 13)))); 5094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 10, new CBC_QRCoderECBlocks(18, new CBC_QRCoderECB(2, 68), 5114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 69)), 5124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 43), 5134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 44)), 5144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(6, 19), 5154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 20)), 5164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(6, 15), 5174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 16)))); 5184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 11, new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(4, 81)), 5204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(1, 50), 5214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 51)), 5224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 22), 5234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 23)), 5244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(3, 12), 5254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(8, 13)))); 5264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12, new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(2, 92), 5284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 93)), 5294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(6, 36), 5304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 37)), 5314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 20), 5324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(6, 21)), 5334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(7, 14), 5344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 15)))); 5354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 13, new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(4, 107)), 5374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(8, 37), 5384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 38)), 5394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(8, 20), 5404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 21)), 5414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(12, 11), 5424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 12)))); 5434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 14, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(3, 115), 5454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 116)), 5464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(4, 40), 5474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(5, 41)), 5484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(20, new CBC_QRCoderECB(11, 16), 5494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(5, 17)), 5504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(11, 12), 5514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(5, 13)))); 5524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15, new CBC_QRCoderECBlocks(22, new CBC_QRCoderECB(5, 87), 5544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 88)), 5554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(5, 41), 5564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(5, 42)), 5574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(5, 24), 5584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(7, 25)), 5594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(11, 12), 5604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(7, 13)))); 5614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 16, new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(5, 98), 5634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 99)), 5644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(7, 45), 5654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(3, 46)), 5664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(15, 19), 5674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 20)), 5684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(3, 15), 5694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(13, 16)))); 5704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 17, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(1, 107), 5724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(5, 108)), 5734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(10, 46), 5744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 47)), 5754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(1, 22), 5764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(15, 23)), 5774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 14), 5784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(17, 15)))); 5794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 18, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(5, 120), 5814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 121)), 5824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(9, 43), 5834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 44)), 5844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(17, 22), 5854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 23)), 5864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 14), 5874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(19, 15)))); 5884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 19, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(3, 113), 5904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 114)), 5914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(3, 44), 5924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(11, 45)), 5934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(17, 21), 5944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 22)), 5954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(9, 13), 5964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(16, 14)))); 5974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 5984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 20, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(3, 107), 5994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(5, 108)), 6004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(3, 41), 6014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(13, 42)), 6024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(15, 24), 6034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(5, 25)), 6044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(15, 15), 6054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(10, 16)))); 6064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 21, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 116), 6084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 117)), 6094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(17, 42)), 6104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(17, 22), 6114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(6, 23)), 6124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 16), 6134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(6, 17)))); 6144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 22, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 111), 6164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(7, 112)), 6174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(17, 46)), 6184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(7, 24), 6194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(16, 25)), 6204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(24, new CBC_QRCoderECB(34, 13)))); 6214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 23, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(4, 121), 6234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(5, 122)), 6244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(4, 47), 6254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(14, 48)), 6264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 24), 6274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(14, 25)), 6284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(16, 15), 6294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(14, 16)))); 6304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 24, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(6, 117), 6324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 118)), 6334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(6, 45), 6344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(14, 46)), 6354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 24), 6364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(16, 25)), 6374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(30, 16), 6384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 17)))); 6394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 25, new CBC_QRCoderECBlocks(26, new CBC_QRCoderECB(8, 106), 6414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 107)), 6424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(8, 47), 6434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(13, 48)), 6444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(7, 24), 6454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(22, 25)), 6464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(22, 15), 6474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(13, 16)))); 6484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26, new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(10, 114), 6504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(2, 115)), 6514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(19, 46), 6524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 47)), 6534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(28, 22), 6544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(6, 23)), 6554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(33, 16), 6564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 17)))); 6574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 27, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(8, 122), 6594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 123)), 6604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(22, 45), 6614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(3, 46)), 6624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(8, 23), 6634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(26, 24)), 6644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(12, 15), 6654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(28, 16)))); 6664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 28, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(3, 117), 6684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(10, 118)), 6694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(3, 45), 6704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(23, 46)), 6714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(4, 24), 6724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(31, 25)), 6734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 15), 6744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(31, 16)))); 6754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 29, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(7, 116), 6774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(7, 117)), 6784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(21, 45), 6794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(7, 46)), 6804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(1, 23), 6814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(37, 24)), 6824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 15), 6834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(26, 16)))); 6844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 30, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(5, 115), 6864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(10, 116)), 6874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(19, 47), 6884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(10, 48)), 6894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(15, 24), 6904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(25, 25)), 6914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(23, 15), 6924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(25, 16)))); 6934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 6944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 31, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(13, 115), 6954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(3, 116)), 6964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(2, 46), 6974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(29, 47)), 6984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(42, 24), 6994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 25)), 7004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(23, 15), 7014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(28, 16)))); 7024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 7034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 32, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(17, 115)), 7044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(10, 46), 7054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(23, 47)), 7064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(10, 24), 7074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(35, 25)), 7084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 15), 7094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(35, 16)))); 7104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 7114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 33, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(17, 115), 7124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 116)), 7134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(14, 46), 7144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(21, 47)), 7154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(29, 24), 7164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(19, 25)), 7174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(11, 15), 7184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(46, 16)))); 7194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 7204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 34, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(13, 115), 7214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(6, 116)), 7224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(14, 46), 7234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(23, 47)), 7244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(44, 24), 7254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(7, 25)), 7264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(59, 16), 7274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(1, 17)))); 7284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 7294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 35, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(12, 121), 7304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(7, 122)), 7314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(12, 47), 7324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(26, 48)), 7334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(39, 24), 7344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(14, 25)), 7354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(22, 15), 7364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(41, 16)))); 7374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 7384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 36, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(6, 121), 7394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(14, 122)), 7404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(6, 47), 7414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(34, 48)), 7424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(46, 24), 7434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(10, 25)), 7444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(2, 15), 7454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(64, 16)))); 7464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 7474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 37, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(17, 122), 7484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 123)), 7494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(29, 46), 7504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(14, 47)), 7514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(49, 24), 7524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(10, 25)), 7534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(24, 15), 7544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(46, 16)))); 7554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 7564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 38, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(4, 122), 7574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(18, 123)), 7584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(13, 46), 7594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(32, 47)), 7604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(48, 24), 7614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(14, 25)), 7624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(42, 15), 7634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(32, 16)))); 7644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 7654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 39, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(20, 117), 7664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(4, 118)), 7674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(40, 47), 7684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(7, 48)), 7694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(43, 24), 7704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(22, 25)), 7714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(10, 15), 7724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(67, 16)))); 7734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->Add(new CBC_QRCoderVersion( 7744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 40, new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(19, 118), 7754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(6, 119)), 7764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(28, new CBC_QRCoderECB(18, 47), 7774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(31, 48)), 7784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(34, 24), 7794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(34, 25)), 7804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECBlocks(30, new CBC_QRCoderECB(20, 15), 7814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann new CBC_QRCoderECB(61, 16)))); 7824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (versionNumber < 1 || versionNumber > 40) { 7844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann e = BCExceptionIllegalArgument; 78533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann return nullptr; 7864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 7874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return (*VERSION)[versionNumber - 1]; 7884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 7894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CBC_QRCoderVersion::Destroy() { 7914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann for (int32_t i = 0; i < VERSION->GetSize(); i++) 7924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann delete (*VERSION)[i]; 7934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann VERSION->RemoveAll(); 7944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 795