OLD | NEW |
| (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 } | |
OLD | NEW |