Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Side by Side Diff: xfa/src/fxbarcode/src/BC_QRCoderVersion.cpp

Issue 842043002: Organize barcode codes into modules. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: rebase Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/src/fxbarcode/src/BC_QRCoderMode.cpp ('k') | xfa/src/fxbarcode/src/BC_QRDataBlock.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 // Original code is licensed as follows:
7 /*
8 * Copyright 2007 ZXing authors
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 */
22
23 #include "barcode.h"
24 #include "include/utils.h"
25 #include "include/BC_QRCoderECB.h"
26 #include "include/BC_CommonBitMatrix.h"
27 #include "include/BC_QRCoderFormatInformation.h"
28 #include "include/BC_QRCoderErrorCorrectionLevel.h"
29 #include "include/BC_QRCoderBitVector.h"
30 #include "include/BC_QRCoderECBlocks.h"
31 #include "include/BC_QRCoderVersion.h"
32 const FX_INT32 CBC_QRCoderVersion::VERSION_DECODE_INFO[] = {
33 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6,
34 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78,
35 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683,
36 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB,
37 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250,
38 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B,
39 0x2542E, 0x26A64, 0x27541, 0x28C69
40 };
41 CFX_PtrArray *CBC_QRCoderVersion::VERSION = NULL;
42 void CBC_QRCoderVersion::Initialize()
43 {
44 VERSION = FX_NEW CFX_PtrArray();
45 }
46 void CBC_QRCoderVersion::Finalize()
47 {
48 for(FX_INT32 i = 0 ; i < VERSION->GetSize(); i++) {
49 CBC_QRCoderVersion* v = (CBC_QRCoderVersion*)(VERSION->GetAt(i));
50 delete v;
51 }
52 delete VERSION;
53 }
54 CBC_QRCoderVersion::CBC_QRCoderVersion(FX_INT32 versionNumber,
55 CBC_QRCoderECBlocks* ecBlocks1,
56 CBC_QRCoderECBlocks* ecBlocks2,
57 CBC_QRCoderECBlocks* ecBlocks3,
58 CBC_QRCoderECBlocks* ecBlocks4)
59 {
60 m_versionNumber = versionNumber;
61 m_ecBlocks.Add(ecBlocks1);
62 m_ecBlocks.Add(ecBlocks2);
63 m_ecBlocks.Add(ecBlocks3);
64 m_ecBlocks.Add(ecBlocks4);
65 FX_INT32 total = 0;
66 FX_INT32 ecCodeWords = ecBlocks1->GetECCodeWordsPerBlock();
67 CFX_PtrArray* ecbArray = ecBlocks1->GetECBlocks();
68 for(FX_INT32 i = 0; i < ecbArray->GetSize(); i++) {
69 CBC_QRCoderECB* ecBlock = (CBC_QRCoderECB*)((*ecbArray)[i]);
70 total += ecBlock->GetCount() * (ecBlock->GetDataCodeWords() + ecCodeWord s);
71 }
72 m_totalCodeWords = total;
73 switch(versionNumber) {
74 case 1:
75 break;
76 case 2:
77 m_alignmentPatternCenters.Add(6);
78 m_alignmentPatternCenters.Add(18);
79 break;
80 case 3:
81 m_alignmentPatternCenters.Add(6);
82 m_alignmentPatternCenters.Add(22);
83 break;
84 case 4:
85 m_alignmentPatternCenters.Add(6);
86 m_alignmentPatternCenters.Add(26);
87 break;
88 case 5:
89 m_alignmentPatternCenters.Add(6);
90 m_alignmentPatternCenters.Add(30);
91 break;
92 case 6:
93 m_alignmentPatternCenters.Add(6);
94 m_alignmentPatternCenters.Add(34);
95 break;
96 case 7:
97 m_alignmentPatternCenters.Add(6);
98 m_alignmentPatternCenters.Add(22);
99 m_alignmentPatternCenters.Add(38);
100 break;
101 case 8:
102 m_alignmentPatternCenters.Add(6);
103 m_alignmentPatternCenters.Add(24);
104 m_alignmentPatternCenters.Add(42);
105 break;
106 case 9:
107 m_alignmentPatternCenters.Add(6);
108 m_alignmentPatternCenters.Add(26);
109 m_alignmentPatternCenters.Add(46);
110 break;
111 case 10:
112 m_alignmentPatternCenters.Add(6);
113 m_alignmentPatternCenters.Add(28);
114 m_alignmentPatternCenters.Add(50);
115 break;
116 case 11:
117 m_alignmentPatternCenters.Add(6);
118 m_alignmentPatternCenters.Add(30);
119 m_alignmentPatternCenters.Add(54);
120 break;
121 case 12:
122 m_alignmentPatternCenters.Add(6);
123 m_alignmentPatternCenters.Add(32);
124 m_alignmentPatternCenters.Add(58);
125 break;
126 case 13:
127 m_alignmentPatternCenters.Add(6);
128 m_alignmentPatternCenters.Add(34);
129 m_alignmentPatternCenters.Add(62);
130 break;
131 case 14:
132 m_alignmentPatternCenters.Add(6);
133 m_alignmentPatternCenters.Add(26);
134 m_alignmentPatternCenters.Add(46);
135 m_alignmentPatternCenters.Add(66);
136 break;
137 case 15:
138 m_alignmentPatternCenters.Add(6);
139 m_alignmentPatternCenters.Add(26);
140 m_alignmentPatternCenters.Add(48);
141 m_alignmentPatternCenters.Add(70);
142 break;
143 case 16:
144 m_alignmentPatternCenters.Add(6);
145 m_alignmentPatternCenters.Add(26);
146 m_alignmentPatternCenters.Add(50);
147 m_alignmentPatternCenters.Add(74);
148 break;
149 case 17:
150 m_alignmentPatternCenters.Add(6);
151 m_alignmentPatternCenters.Add(30);
152 m_alignmentPatternCenters.Add(54);
153 m_alignmentPatternCenters.Add(78);
154 break;
155 case 18:
156 m_alignmentPatternCenters.Add(6);
157 m_alignmentPatternCenters.Add(30);
158 m_alignmentPatternCenters.Add(56);
159 m_alignmentPatternCenters.Add(82);
160 break;
161 case 19:
162 m_alignmentPatternCenters.Add(6);
163 m_alignmentPatternCenters.Add(30);
164 m_alignmentPatternCenters.Add(58);
165 m_alignmentPatternCenters.Add(86);
166 break;
167 case 20:
168 m_alignmentPatternCenters.Add(6);
169 m_alignmentPatternCenters.Add(34);
170 m_alignmentPatternCenters.Add(62);
171 m_alignmentPatternCenters.Add(90);
172 break;
173 case 21:
174 m_alignmentPatternCenters.Add(6);
175 m_alignmentPatternCenters.Add(28);
176 m_alignmentPatternCenters.Add(50);
177 m_alignmentPatternCenters.Add(72);
178 m_alignmentPatternCenters.Add(94);
179 break;
180 case 22:
181 m_alignmentPatternCenters.Add(6);
182 m_alignmentPatternCenters.Add(26);
183 m_alignmentPatternCenters.Add(50);
184 m_alignmentPatternCenters.Add(74);
185 m_alignmentPatternCenters.Add(98);
186 break;
187 case 23:
188 m_alignmentPatternCenters.Add(6);
189 m_alignmentPatternCenters.Add(30);
190 m_alignmentPatternCenters.Add(54);
191 m_alignmentPatternCenters.Add(74);
192 m_alignmentPatternCenters.Add(102);
193 break;
194 case 24:
195 m_alignmentPatternCenters.Add(6);
196 m_alignmentPatternCenters.Add(28);
197 m_alignmentPatternCenters.Add(54);
198 m_alignmentPatternCenters.Add(80);
199 m_alignmentPatternCenters.Add(106);
200 break;
201 case 25:
202 m_alignmentPatternCenters.Add(6);
203 m_alignmentPatternCenters.Add(32);
204 m_alignmentPatternCenters.Add(58);
205 m_alignmentPatternCenters.Add(84);
206 m_alignmentPatternCenters.Add(110);
207 break;
208 case 26:
209 m_alignmentPatternCenters.Add(6);
210 m_alignmentPatternCenters.Add(30);
211 m_alignmentPatternCenters.Add(58);
212 m_alignmentPatternCenters.Add(86);
213 m_alignmentPatternCenters.Add(114);
214 break;
215 case 27:
216 m_alignmentPatternCenters.Add(6);
217 m_alignmentPatternCenters.Add(34);
218 m_alignmentPatternCenters.Add(62);
219 m_alignmentPatternCenters.Add(90);
220 m_alignmentPatternCenters.Add(118);
221 break;
222 case 28:
223 m_alignmentPatternCenters.Add(6);
224 m_alignmentPatternCenters.Add(26);
225 m_alignmentPatternCenters.Add(50);
226 m_alignmentPatternCenters.Add(74);
227 m_alignmentPatternCenters.Add(98);
228 m_alignmentPatternCenters.Add(122);
229 break;
230 case 29:
231 m_alignmentPatternCenters.Add(6);
232 m_alignmentPatternCenters.Add(30);
233 m_alignmentPatternCenters.Add(54);
234 m_alignmentPatternCenters.Add(78);
235 m_alignmentPatternCenters.Add(102);
236 m_alignmentPatternCenters.Add(126);
237 break;
238 case 30:
239 m_alignmentPatternCenters.Add(6);
240 m_alignmentPatternCenters.Add(26);
241 m_alignmentPatternCenters.Add(52);
242 m_alignmentPatternCenters.Add(78);
243 m_alignmentPatternCenters.Add(104);
244 m_alignmentPatternCenters.Add(130);
245 break;
246 case 31:
247 m_alignmentPatternCenters.Add(6);
248 m_alignmentPatternCenters.Add(30);
249 m_alignmentPatternCenters.Add(56);
250 m_alignmentPatternCenters.Add(82);
251 m_alignmentPatternCenters.Add(108);
252 m_alignmentPatternCenters.Add(134);
253 break;
254 case 32:
255 m_alignmentPatternCenters.Add(6);
256 m_alignmentPatternCenters.Add(34);
257 m_alignmentPatternCenters.Add(60);
258 m_alignmentPatternCenters.Add(86);
259 m_alignmentPatternCenters.Add(112);
260 m_alignmentPatternCenters.Add(138);
261 break;
262 case 33:
263 m_alignmentPatternCenters.Add(6);
264 m_alignmentPatternCenters.Add(30);
265 m_alignmentPatternCenters.Add(58);
266 m_alignmentPatternCenters.Add(86);
267 m_alignmentPatternCenters.Add(114);
268 m_alignmentPatternCenters.Add(142);
269 break;
270 case 34:
271 m_alignmentPatternCenters.Add(6);
272 m_alignmentPatternCenters.Add(34);
273 m_alignmentPatternCenters.Add(62);
274 m_alignmentPatternCenters.Add(90);
275 m_alignmentPatternCenters.Add(118);
276 m_alignmentPatternCenters.Add(146);
277 break;
278 case 35:
279 m_alignmentPatternCenters.Add(6);
280 m_alignmentPatternCenters.Add(30);
281 m_alignmentPatternCenters.Add(54);
282 m_alignmentPatternCenters.Add(78);
283 m_alignmentPatternCenters.Add(102);
284 m_alignmentPatternCenters.Add(126);
285 m_alignmentPatternCenters.Add(150);
286 break;
287 case 36:
288 m_alignmentPatternCenters.Add(6);
289 m_alignmentPatternCenters.Add(24);
290 m_alignmentPatternCenters.Add(50);
291 m_alignmentPatternCenters.Add(76);
292 m_alignmentPatternCenters.Add(102);
293 m_alignmentPatternCenters.Add(128);
294 m_alignmentPatternCenters.Add(154);
295 break;
296 case 37:
297 m_alignmentPatternCenters.Add(6);
298 m_alignmentPatternCenters.Add(28);
299 m_alignmentPatternCenters.Add(54);
300 m_alignmentPatternCenters.Add(80);
301 m_alignmentPatternCenters.Add(106);
302 m_alignmentPatternCenters.Add(132);
303 m_alignmentPatternCenters.Add(158);
304 break;
305 case 38:
306 m_alignmentPatternCenters.Add(6);
307 m_alignmentPatternCenters.Add(32);
308 m_alignmentPatternCenters.Add(58);
309 m_alignmentPatternCenters.Add(84);
310 m_alignmentPatternCenters.Add(110);
311 m_alignmentPatternCenters.Add(136);
312 m_alignmentPatternCenters.Add(162);
313 break;
314 case 39:
315 m_alignmentPatternCenters.Add(6);
316 m_alignmentPatternCenters.Add(26);
317 m_alignmentPatternCenters.Add(54);
318 m_alignmentPatternCenters.Add(82);
319 m_alignmentPatternCenters.Add(110);
320 m_alignmentPatternCenters.Add(138);
321 m_alignmentPatternCenters.Add(166);
322 break;
323 case 40:
324 m_alignmentPatternCenters.Add(6);
325 m_alignmentPatternCenters.Add(30);
326 m_alignmentPatternCenters.Add(58);
327 m_alignmentPatternCenters.Add(86);
328 m_alignmentPatternCenters.Add(114);
329 m_alignmentPatternCenters.Add(142);
330 m_alignmentPatternCenters.Add(170);
331 break;
332 }
333 }
334 CBC_QRCoderVersion::~CBC_QRCoderVersion()
335 {
336 if(m_ecBlocks.GetSize() != 0) {
337 FX_INT32 itBeg = 0;
338 FX_INT32 itEnd = m_ecBlocks.GetSize();
339 while(itBeg != itEnd) {
340 delete ( (CBC_QRCoderECBlocks*)(m_ecBlocks[itBeg]) );
341 itBeg++;
342 }
343 }
344 }
345 FX_INT32 CBC_QRCoderVersion::GetVersionNumber()
346 {
347 return m_versionNumber;
348 }
349 CFX_Int32Array* CBC_QRCoderVersion::GetAlignmentPatternCenters()
350 {
351 return &m_alignmentPatternCenters;
352 }
353 FX_INT32 CBC_QRCoderVersion::GetTotalCodeWords()
354 {
355 return m_totalCodeWords;
356 }
357 FX_INT32 CBC_QRCoderVersion::GetDimensionForVersion()
358 {
359 return 17 + 4 * m_versionNumber;
360 }
361 CBC_QRCoderECBlocks* CBC_QRCoderVersion::GetECBlocksForLevel(CBC_QRCoderErrorCor rectionLevel *ecLevel)
362 {
363 return (CBC_QRCoderECBlocks*)m_ecBlocks[ecLevel->Ordinal()];
364 }
365 CBC_QRCoderVersion* CBC_QRCoderVersion::GetProvisionalVersionForDimension(FX_INT 32 dimension, FX_INT32 &e)
366 {
367 if((dimension % 4) != 1) {
368 e = BCExceptionRead;
369 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
370 }
371 CBC_QRCoderVersion* qcv = GetVersionForNumber((dimension - 17) >> 2, e);
372 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
373 return qcv;
374 }
375 CBC_QRCoderVersion* CBC_QRCoderVersion::DecodeVersionInformation(FX_INT32 versio nBits, FX_INT32 &e)
376 {
377 FX_INT32 bestDifference = FXSYS_IntMax;
378 FX_INT32 bestVersion = 0;
379 for (FX_INT32 i = 0; i < 34; i++) {
380 FX_INT32 targetVersion = VERSION_DECODE_INFO[i];
381 if(targetVersion == versionBits) {
382 CBC_QRCoderVersion* qcv = GetVersionForNumber(i + 7, e);
383 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
384 return qcv;
385 }
386 FX_INT32 bitsDifference = CBC_QRCoderFormatInformation::NumBitsDiffering (versionBits, targetVersion);
387 if(bitsDifference < bestDifference) {
388 bestVersion = i + 7;
389 bestDifference = bitsDifference;
390 }
391 }
392 if(bestDifference <= 3) {
393 CBC_QRCoderVersion* qcv = GetVersionForNumber(bestVersion, e);
394 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
395 return qcv;
396 }
397 return NULL;
398 }
399 CBC_CommonBitMatrix* CBC_QRCoderVersion::BuildFunctionPattern(FX_INT32 &e)
400 {
401 FX_INT32 dimension = GetDimensionForVersion();
402 CBC_CommonBitMatrix* bitMatrix = FX_NEW CBC_CommonBitMatrix();
403 bitMatrix->Init(dimension);
404 bitMatrix->SetRegion(0, 0 , 9, 9, e);
405 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
406 bitMatrix->SetRegion(dimension - 8, 0, 8, 9, e);
407 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
408 bitMatrix->SetRegion(0, dimension - 8, 9, 8, e);
409 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
410 FX_INT32 max = m_alignmentPatternCenters.GetSize();
411 for (FX_INT32 x = 0; x < max; x++) {
412 FX_INT32 i = m_alignmentPatternCenters[x] - 2;
413 for (FX_INT32 y = 0; y < max; y++) {
414 if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0) ) {
415 continue;
416 }
417 bitMatrix->SetRegion(m_alignmentPatternCenters[y] - 2, i, 5, 5, e);
418 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
419 }
420 }
421 bitMatrix->SetRegion(6, 9, 1, dimension - 17, e);
422 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
423 bitMatrix->SetRegion(9, 6, dimension - 17, 1, e);
424 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
425 if (m_versionNumber > 6) {
426 bitMatrix->SetRegion(dimension - 11, 0, 3, 6, e);
427 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
428 bitMatrix->SetRegion(0, dimension - 11, 6, 3, e);
429 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
430 }
431 return bitMatrix;
432 }
433 CBC_QRCoderVersion* CBC_QRCoderVersion::GetVersionForNumber(FX_INT32 versionNumb er, FX_INT32 &e)
434 {
435 if(VERSION->GetSize() == 0) {
436 VERSION->Add(FX_NEW CBC_QRCoderVersion(1,
437 FX_NEW CBC_QRCoderECBlocks(7, FX_ NEW CBC_QRCoderECB(1, 19)),
438 FX_NEW CBC_QRCoderECBlocks(10, FX _NEW CBC_QRCoderECB(1, 16)),
439 FX_NEW CBC_QRCoderECBlocks(13, FX _NEW CBC_QRCoderECB(1, 13)),
440 FX_NEW CBC_QRCoderECBlocks(17, FX _NEW CBC_QRCoderECB(1, 9))));
441 VERSION->Add(FX_NEW CBC_QRCoderVersion(2,
442 FX_NEW CBC_QRCoderECBlocks(10, FX _NEW CBC_QRCoderECB(1, 34)),
443 FX_NEW CBC_QRCoderECBlocks(16, FX _NEW CBC_QRCoderECB(1, 28)),
444 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(1, 22)),
445 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(1, 16))));
446 VERSION->Add(FX_NEW CBC_QRCoderVersion(3,
447 FX_NEW CBC_QRCoderECBlocks(15, FX _NEW CBC_QRCoderECB(1, 55)),
448 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(1, 44)),
449 FX_NEW CBC_QRCoderECBlocks(18, FX _NEW CBC_QRCoderECB(2, 17)),
450 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(2, 13))));
451 VERSION->Add(FX_NEW CBC_QRCoderVersion(4,
452 FX_NEW CBC_QRCoderECBlocks(20, FX _NEW CBC_QRCoderECB(1, 80)),
453 FX_NEW CBC_QRCoderECBlocks(18, FX _NEW CBC_QRCoderECB(2, 32)),
454 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(2, 24)),
455 FX_NEW CBC_QRCoderECBlocks(16, FX _NEW CBC_QRCoderECB(4, 9))));
456 VERSION->Add(FX_NEW CBC_QRCoderVersion(5,
457 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(1, 108)),
458 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(2, 43)),
459 FX_NEW CBC_QRCoderECBlocks(18, FX _NEW CBC_QRCoderECB(2, 15),
460 FX_NEW CBC_QRCoderECB(2, 16)),
461 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(2, 11),
462 FX_NEW CBC_QRCoderECB(2, 12))));
463 VERSION->Add(FX_NEW CBC_QRCoderVersion(6,
464 FX_NEW CBC_QRCoderECBlocks(18, FX _NEW CBC_QRCoderECB(2, 68)),
465 FX_NEW CBC_QRCoderECBlocks(16, FX _NEW CBC_QRCoderECB(4, 27)),
466 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(4, 19)),
467 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(4, 15))));
468 VERSION->Add(FX_NEW CBC_QRCoderVersion(7,
469 FX_NEW CBC_QRCoderECBlocks(20, FX _NEW CBC_QRCoderECB(2, 78)),
470 FX_NEW CBC_QRCoderECBlocks(18, FX _NEW CBC_QRCoderECB(4, 31)),
471 FX_NEW CBC_QRCoderECBlocks(18, FX _NEW CBC_QRCoderECB(2, 14),
472 FX_NEW CBC_QRCoderECB(4, 15)),
473 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(4, 13),
474 FX_NEW CBC_QRCoderECB(1, 14))));
475 VERSION->Add(FX_NEW CBC_QRCoderVersion(8,
476 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(2, 97)),
477 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(2, 38),
478 FX_NEW CBC_QRCoderECB(2, 39)),
479 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(4, 18),
480 FX_NEW CBC_QRCoderECB(2, 19)),
481 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(4, 14),
482 FX_NEW CBC_QRCoderECB(2, 15))));
483 VERSION->Add(FX_NEW CBC_QRCoderVersion(9,
484 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(2, 116)),
485 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(3, 36),
486 FX_NEW CBC_QRCoderECB(2, 37)),
487 FX_NEW CBC_QRCoderECBlocks(20, FX _NEW CBC_QRCoderECB(4, 16),
488 FX_NEW CBC_QRCoderECB(4, 17)),
489 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(4, 12),
490 FX_NEW CBC_QRCoderECB(4, 13))));
491 VERSION->Add(FX_NEW CBC_QRCoderVersion(10,
492 FX_NEW CBC_QRCoderECBlocks(18, FX _NEW CBC_QRCoderECB(2, 68),
493 FX_NEW CBC_QRCoderECB(2, 69)),
494 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(4, 43),
495 FX_NEW CBC_QRCoderECB(1, 44)),
496 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(6, 19),
497 FX_NEW CBC_QRCoderECB(2, 20)),
498 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(6, 15),
499 FX_NEW CBC_QRCoderECB(2, 16))));
500 VERSION->Add(FX_NEW CBC_QRCoderVersion(11,
501 FX_NEW CBC_QRCoderECBlocks(20, FX _NEW CBC_QRCoderECB(4, 81)),
502 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(1, 50),
503 FX_NEW CBC_QRCoderECB(4, 51)),
504 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(4, 22),
505 FX_NEW CBC_QRCoderECB(4, 23)),
506 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(3, 12),
507 FX_NEW CBC_QRCoderECB(8, 13))));
508 VERSION->Add(FX_NEW CBC_QRCoderVersion(12,
509 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(2, 92),
510 FX_NEW CBC_QRCoderECB(2, 93)),
511 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(6, 36),
512 FX_NEW CBC_QRCoderECB(2, 37)),
513 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(4, 20),
514 FX_NEW CBC_QRCoderECB(6, 21)),
515 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(7, 14),
516 FX_NEW CBC_QRCoderECB(4, 15))));
517 VERSION->Add(FX_NEW CBC_QRCoderVersion(13,
518 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(4, 107)),
519 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(8, 37),
520 FX_NEW CBC_QRCoderECB(1, 38)),
521 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(8, 20),
522 FX_NEW CBC_QRCoderECB(4, 21)),
523 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(12, 11),
524 FX_NEW CBC_QRCoderECB(4, 12))));
525 VERSION->Add(FX_NEW CBC_QRCoderVersion(14,
526 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(3, 115),
527 FX_NEW CBC_QRCoderECB(1, 116)),
528 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(4, 40),
529 FX_NEW CBC_QRCoderECB(5, 41)),
530 FX_NEW CBC_QRCoderECBlocks(20, FX _NEW CBC_QRCoderECB(11, 16),
531 FX_NEW CBC_QRCoderECB(5, 17)),
532 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(11, 12),
533 FX_NEW CBC_QRCoderECB(5, 13))));
534 VERSION->Add(FX_NEW CBC_QRCoderVersion(15,
535 FX_NEW CBC_QRCoderECBlocks(22, FX _NEW CBC_QRCoderECB(5, 87),
536 FX_NEW CBC_QRCoderECB(1, 88)),
537 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(5, 41),
538 FX_NEW CBC_QRCoderECB(5, 42)),
539 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(5, 24),
540 FX_NEW CBC_QRCoderECB(7, 25)),
541 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(11, 12),
542 FX_NEW CBC_QRCoderECB(7, 13))));
543 VERSION->Add(FX_NEW CBC_QRCoderVersion(16,
544 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(5, 98),
545 FX_NEW CBC_QRCoderECB(1, 99)),
546 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(7, 45),
547 FX_NEW CBC_QRCoderECB(3, 46)),
548 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(15, 19),
549 FX_NEW CBC_QRCoderECB(2, 20)),
550 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(3, 15),
551 FX_NEW CBC_QRCoderECB(13, 16))));
552 VERSION->Add(FX_NEW CBC_QRCoderVersion(17,
553 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(1, 107),
554 FX_NEW CBC_QRCoderECB(5, 108)),
555 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(10, 46),
556 FX_NEW CBC_QRCoderECB(1, 47)),
557 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(1, 22),
558 FX_NEW CBC_QRCoderECB(15, 23)),
559 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(2, 14),
560 FX_NEW CBC_QRCoderECB(17, 15))));
561 VERSION->Add(FX_NEW CBC_QRCoderVersion(18,
562 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(5, 120),
563 FX_NEW CBC_QRCoderECB(1, 121)),
564 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(9, 43),
565 FX_NEW CBC_QRCoderECB(4, 44)),
566 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(17, 22),
567 FX_NEW CBC_QRCoderECB(1, 23)),
568 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(2, 14),
569 FX_NEW CBC_QRCoderECB(19, 15))));
570 VERSION->Add(FX_NEW CBC_QRCoderVersion(19,
571 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(3, 113),
572 FX_NEW CBC_QRCoderECB(4, 114)),
573 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(3, 44),
574 FX_NEW CBC_QRCoderECB(11, 45)),
575 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(17, 21),
576 FX_NEW CBC_QRCoderECB(4, 22)),
577 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(9, 13),
578 FX_NEW CBC_QRCoderECB(16, 14))));
579 VERSION->Add(FX_NEW CBC_QRCoderVersion(20,
580 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(3, 107),
581 FX_NEW CBC_QRCoderECB(5, 108)),
582 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(3, 41),
583 FX_NEW CBC_QRCoderECB(13, 42)),
584 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(15, 24),
585 FX_NEW CBC_QRCoderECB(5, 25)),
586 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(15, 15),
587 FX_NEW CBC_QRCoderECB(10, 16))));
588 VERSION->Add(FX_NEW CBC_QRCoderVersion(21,
589 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(4, 116),
590 FX_NEW CBC_QRCoderECB(4, 117)),
591 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(17, 42)),
592 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(17, 22),
593 FX_NEW CBC_QRCoderECB(6, 23)),
594 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(19, 16),
595 FX_NEW CBC_QRCoderECB(6, 17))));
596 VERSION->Add(FX_NEW CBC_QRCoderVersion(22,
597 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(2, 111),
598 FX_NEW CBC_QRCoderECB(7, 112)),
599 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(17, 46)),
600 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(7, 24),
601 FX_NEW CBC_QRCoderECB(16, 25)),
602 FX_NEW CBC_QRCoderECBlocks(24, FX _NEW CBC_QRCoderECB(34, 13))));
603 VERSION->Add(FX_NEW CBC_QRCoderVersion(23,
604 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(4, 121),
605 FX_NEW CBC_QRCoderECB(5, 122)),
606 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(4, 47),
607 FX_NEW CBC_QRCoderECB(14, 48)),
608 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(11, 24),
609 FX_NEW CBC_QRCoderECB(14, 25)),
610 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(16, 15),
611 FX_NEW CBC_QRCoderECB(14, 16))));
612 VERSION->Add(FX_NEW CBC_QRCoderVersion(24,
613 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(6, 117),
614 FX_NEW CBC_QRCoderECB(4, 118)),
615 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(6, 45),
616 FX_NEW CBC_QRCoderECB(14, 46)),
617 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(11, 24),
618 FX_NEW CBC_QRCoderECB(16, 25)),
619 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(30, 16),
620 FX_NEW CBC_QRCoderECB(2, 17))));
621 VERSION->Add(FX_NEW CBC_QRCoderVersion(25,
622 FX_NEW CBC_QRCoderECBlocks(26, FX _NEW CBC_QRCoderECB(8, 106),
623 FX_NEW CBC_QRCoderECB(4, 107)),
624 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(8, 47),
625 FX_NEW CBC_QRCoderECB(13, 48)),
626 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(7, 24),
627 FX_NEW CBC_QRCoderECB(22, 25)),
628 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(22, 15),
629 FX_NEW CBC_QRCoderECB(13, 16))));
630 VERSION->Add(FX_NEW CBC_QRCoderVersion(26,
631 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(10, 114),
632 FX_NEW CBC_QRCoderECB(2, 115)),
633 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(19, 46),
634 FX_NEW CBC_QRCoderECB(4, 47)),
635 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(28, 22),
636 FX_NEW CBC_QRCoderECB(6, 23)),
637 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(33, 16),
638 FX_NEW CBC_QRCoderECB(4, 17))));
639 VERSION->Add(FX_NEW CBC_QRCoderVersion(27,
640 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(8, 122),
641 FX_NEW CBC_QRCoderECB(4, 123)),
642 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(22, 45),
643 FX_NEW CBC_QRCoderECB(3, 46)),
644 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(8, 23),
645 FX_NEW CBC_QRCoderECB(26, 24)),
646 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(12, 15),
647 FX_NEW CBC_QRCoderECB(28, 16))));
648 VERSION->Add(FX_NEW CBC_QRCoderVersion(28,
649 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(3, 117),
650 FX_NEW CBC_QRCoderECB(10, 118)),
651 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(3, 45),
652 FX_NEW CBC_QRCoderECB(23, 46)),
653 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(4, 24),
654 FX_NEW CBC_QRCoderECB(31, 25)),
655 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(11, 15),
656 FX_NEW CBC_QRCoderECB(31, 16))));
657 VERSION->Add(FX_NEW CBC_QRCoderVersion(29,
658 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(7, 116),
659 FX_NEW CBC_QRCoderECB(7, 117)),
660 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(21, 45),
661 FX_NEW CBC_QRCoderECB(7, 46)),
662 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(1, 23),
663 FX_NEW CBC_QRCoderECB(37, 24)),
664 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(19, 15),
665 FX_NEW CBC_QRCoderECB(26, 16))));
666 VERSION->Add(FX_NEW CBC_QRCoderVersion(30,
667 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(5, 115),
668 FX_NEW CBC_QRCoderECB(10, 116)),
669 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(19, 47),
670 FX_NEW CBC_QRCoderECB(10, 48)),
671 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(15, 24),
672 FX_NEW CBC_QRCoderECB(25, 25)),
673 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(23, 15),
674 FX_NEW CBC_QRCoderECB(25, 16))));
675 VERSION->Add(FX_NEW CBC_QRCoderVersion(31,
676 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(13, 115),
677 FX_NEW CBC_QRCoderECB(3, 116)),
678 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(2, 46),
679 FX_NEW CBC_QRCoderECB(29, 47)),
680 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(42, 24),
681 FX_NEW CBC_QRCoderECB(1, 25)),
682 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(23, 15),
683 FX_NEW CBC_QRCoderECB(28, 16))));
684 VERSION->Add(FX_NEW CBC_QRCoderVersion(32,
685 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(17, 115)),
686 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(10, 46),
687 FX_NEW CBC_QRCoderECB(23, 47)),
688 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(10, 24),
689 FX_NEW CBC_QRCoderECB(35, 25)),
690 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(19, 15),
691 FX_NEW CBC_QRCoderECB(35, 16))));
692 VERSION->Add(FX_NEW CBC_QRCoderVersion(33,
693 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(17, 115),
694 FX_NEW CBC_QRCoderECB(1, 116)),
695 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(14, 46),
696 FX_NEW CBC_QRCoderECB(21, 47)),
697 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(29, 24),
698 FX_NEW CBC_QRCoderECB(19, 25)),
699 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(11, 15),
700 FX_NEW CBC_QRCoderECB(46, 16))));
701 VERSION->Add(FX_NEW CBC_QRCoderVersion(34,
702 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(13, 115),
703 FX_NEW CBC_QRCoderECB(6, 116)),
704 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(14, 46),
705 FX_NEW CBC_QRCoderECB(23, 47)),
706 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(44, 24),
707 FX_NEW CBC_QRCoderECB(7, 25)),
708 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(59, 16),
709 FX_NEW CBC_QRCoderECB(1, 17))));
710 VERSION->Add(FX_NEW CBC_QRCoderVersion(35,
711 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(12, 121),
712 FX_NEW CBC_QRCoderECB(7, 122)),
713 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(12, 47),
714 FX_NEW CBC_QRCoderECB(26, 48)),
715 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(39, 24),
716 FX_NEW CBC_QRCoderECB(14, 25)),
717 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(22, 15),
718 FX_NEW CBC_QRCoderECB(41, 16))));
719 VERSION->Add(FX_NEW CBC_QRCoderVersion(36,
720 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(6, 121),
721 FX_NEW CBC_QRCoderECB(14, 122)),
722 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(6, 47),
723 FX_NEW CBC_QRCoderECB(34, 48)),
724 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(46, 24),
725 FX_NEW CBC_QRCoderECB(10, 25)),
726 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(2, 15),
727 FX_NEW CBC_QRCoderECB(64, 16))));
728 VERSION->Add(FX_NEW CBC_QRCoderVersion(37,
729 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(17, 122),
730 FX_NEW CBC_QRCoderECB(4, 123)),
731 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(29, 46),
732 FX_NEW CBC_QRCoderECB(14, 47)),
733 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(49, 24),
734 FX_NEW CBC_QRCoderECB(10, 25)),
735 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(24, 15),
736 FX_NEW CBC_QRCoderECB(46, 16))));
737 VERSION->Add(FX_NEW CBC_QRCoderVersion(38,
738 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(4, 122),
739 FX_NEW CBC_QRCoderECB(18, 123)),
740 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(13, 46),
741 FX_NEW CBC_QRCoderECB(32, 47)),
742 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(48, 24),
743 FX_NEW CBC_QRCoderECB(14, 25)),
744 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(42, 15),
745 FX_NEW CBC_QRCoderECB(32, 16))));
746 VERSION->Add(FX_NEW CBC_QRCoderVersion(39,
747 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(20, 117),
748 FX_NEW CBC_QRCoderECB(4, 118)),
749 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(40, 47),
750 FX_NEW CBC_QRCoderECB(7, 48)),
751 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(43, 24),
752 FX_NEW CBC_QRCoderECB(22, 25)),
753 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(10, 15),
754 FX_NEW CBC_QRCoderECB(67, 16))));
755 VERSION->Add(FX_NEW CBC_QRCoderVersion(40,
756 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(19, 118),
757 FX_NEW CBC_QRCoderECB(6, 119)),
758 FX_NEW CBC_QRCoderECBlocks(28, FX _NEW CBC_QRCoderECB(18, 47),
759 FX_NEW CBC_QRCoderECB(31, 48)),
760 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(34, 24),
761 FX_NEW CBC_QRCoderECB(34, 25)),
762 FX_NEW CBC_QRCoderECBlocks(30, FX _NEW CBC_QRCoderECB(20, 15),
763 FX_NEW CBC_QRCoderECB(61, 16))));
764 }
765 if(versionNumber < 1 || versionNumber > 40) {
766 e = BCExceptionIllegalArgument;
767 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
768 }
769 return (CBC_QRCoderVersion*)(*VERSION)[versionNumber - 1];
770 }
771 void CBC_QRCoderVersion::Destroy()
772 {
773 FX_INT32 i;
774 for(i = 0; i < VERSION->GetSize(); i++) {
775 delete ( (CBC_QRCoderVersion*)(*VERSION)[i] );
776 }
777 }
OLDNEW
« no previous file with comments | « xfa/src/fxbarcode/src/BC_QRCoderMode.cpp ('k') | xfa/src/fxbarcode/src/BC_QRDataBlock.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698