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

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

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 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/qrcode/BC_QRCoderVersion.h ('k') | xfa/src/fxbarcode/qrcode/BC_QRDataBlock.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 // Original code is licensed as follows: 6 // Original code is licensed as follows:
7 /* 7 /*
8 * Copyright 2007 ZXing authors 8 * Copyright 2007 ZXing authors
9 * 9 *
10 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * Licensed under the Apache License, Version 2.0 (the "License");
(...skipping 11 matching lines...) Expand all
22 22
23 #include "../barcode.h" 23 #include "../barcode.h"
24 #include "../utils.h" 24 #include "../utils.h"
25 #include "../common/BC_CommonBitMatrix.h" 25 #include "../common/BC_CommonBitMatrix.h"
26 #include "BC_QRCoderECB.h" 26 #include "BC_QRCoderECB.h"
27 #include "BC_QRCoderFormatInformation.h" 27 #include "BC_QRCoderFormatInformation.h"
28 #include "BC_QRCoderErrorCorrectionLevel.h" 28 #include "BC_QRCoderErrorCorrectionLevel.h"
29 #include "BC_QRCoderBitVector.h" 29 #include "BC_QRCoderBitVector.h"
30 #include "BC_QRCoderECBlocks.h" 30 #include "BC_QRCoderECBlocks.h"
31 #include "BC_QRCoderVersion.h" 31 #include "BC_QRCoderVersion.h"
32 const FX_INT32 CBC_QRCoderVersion::VERSION_DECODE_INFO[] = { 32 const int32_t CBC_QRCoderVersion::VERSION_DECODE_INFO[] = {
33 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 33 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6,
34 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78, 34 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78,
35 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683, 35 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683,
36 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 36 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB,
37 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 37 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250,
38 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B, 38 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B,
39 0x2542E, 0x26A64, 0x27541, 0x28C69 39 0x2542E, 0x26A64, 0x27541, 0x28C69
40 }; 40 };
41 CFX_PtrArray *CBC_QRCoderVersion::VERSION = NULL; 41 CFX_PtrArray *CBC_QRCoderVersion::VERSION = NULL;
42 void CBC_QRCoderVersion::Initialize() 42 void CBC_QRCoderVersion::Initialize()
43 { 43 {
44 VERSION = FX_NEW CFX_PtrArray(); 44 VERSION = FX_NEW CFX_PtrArray();
45 } 45 }
46 void CBC_QRCoderVersion::Finalize() 46 void CBC_QRCoderVersion::Finalize()
47 { 47 {
48 for(FX_INT32 i = 0 ; i < VERSION->GetSize(); i++) { 48 for(int32_t i = 0 ; i < VERSION->GetSize(); i++) {
49 CBC_QRCoderVersion* v = (CBC_QRCoderVersion*)(VERSION->GetAt(i)); 49 CBC_QRCoderVersion* v = (CBC_QRCoderVersion*)(VERSION->GetAt(i));
50 delete v; 50 delete v;
51 } 51 }
52 delete VERSION; 52 delete VERSION;
53 } 53 }
54 CBC_QRCoderVersion::CBC_QRCoderVersion(FX_INT32 versionNumber, 54 CBC_QRCoderVersion::CBC_QRCoderVersion(int32_t versionNumber,
55 CBC_QRCoderECBlocks* ecBlocks1, 55 CBC_QRCoderECBlocks* ecBlocks1,
56 CBC_QRCoderECBlocks* ecBlocks2, 56 CBC_QRCoderECBlocks* ecBlocks2,
57 CBC_QRCoderECBlocks* ecBlocks3, 57 CBC_QRCoderECBlocks* ecBlocks3,
58 CBC_QRCoderECBlocks* ecBlocks4) 58 CBC_QRCoderECBlocks* ecBlocks4)
59 { 59 {
60 m_versionNumber = versionNumber; 60 m_versionNumber = versionNumber;
61 m_ecBlocks.Add(ecBlocks1); 61 m_ecBlocks.Add(ecBlocks1);
62 m_ecBlocks.Add(ecBlocks2); 62 m_ecBlocks.Add(ecBlocks2);
63 m_ecBlocks.Add(ecBlocks3); 63 m_ecBlocks.Add(ecBlocks3);
64 m_ecBlocks.Add(ecBlocks4); 64 m_ecBlocks.Add(ecBlocks4);
65 FX_INT32 total = 0; 65 int32_t total = 0;
66 FX_INT32 ecCodeWords = ecBlocks1->GetECCodeWordsPerBlock(); 66 int32_t ecCodeWords = ecBlocks1->GetECCodeWordsPerBlock();
67 CFX_PtrArray* ecbArray = ecBlocks1->GetECBlocks(); 67 CFX_PtrArray* ecbArray = ecBlocks1->GetECBlocks();
68 for(FX_INT32 i = 0; i < ecbArray->GetSize(); i++) { 68 for(int32_t i = 0; i < ecbArray->GetSize(); i++) {
69 CBC_QRCoderECB* ecBlock = (CBC_QRCoderECB*)((*ecbArray)[i]); 69 CBC_QRCoderECB* ecBlock = (CBC_QRCoderECB*)((*ecbArray)[i]);
70 total += ecBlock->GetCount() * (ecBlock->GetDataCodeWords() + ecCodeWord s); 70 total += ecBlock->GetCount() * (ecBlock->GetDataCodeWords() + ecCodeWord s);
71 } 71 }
72 m_totalCodeWords = total; 72 m_totalCodeWords = total;
73 switch(versionNumber) { 73 switch(versionNumber) {
74 case 1: 74 case 1:
75 break; 75 break;
76 case 2: 76 case 2:
77 m_alignmentPatternCenters.Add(6); 77 m_alignmentPatternCenters.Add(6);
78 m_alignmentPatternCenters.Add(18); 78 m_alignmentPatternCenters.Add(18);
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 m_alignmentPatternCenters.Add(86); 327 m_alignmentPatternCenters.Add(86);
328 m_alignmentPatternCenters.Add(114); 328 m_alignmentPatternCenters.Add(114);
329 m_alignmentPatternCenters.Add(142); 329 m_alignmentPatternCenters.Add(142);
330 m_alignmentPatternCenters.Add(170); 330 m_alignmentPatternCenters.Add(170);
331 break; 331 break;
332 } 332 }
333 } 333 }
334 CBC_QRCoderVersion::~CBC_QRCoderVersion() 334 CBC_QRCoderVersion::~CBC_QRCoderVersion()
335 { 335 {
336 if(m_ecBlocks.GetSize() != 0) { 336 if(m_ecBlocks.GetSize() != 0) {
337 FX_INT32 itBeg = 0; 337 int32_t itBeg = 0;
338 FX_INT32 itEnd = m_ecBlocks.GetSize(); 338 int32_t itEnd = m_ecBlocks.GetSize();
339 while(itBeg != itEnd) { 339 while(itBeg != itEnd) {
340 delete ( (CBC_QRCoderECBlocks*)(m_ecBlocks[itBeg]) ); 340 delete ( (CBC_QRCoderECBlocks*)(m_ecBlocks[itBeg]) );
341 itBeg++; 341 itBeg++;
342 } 342 }
343 } 343 }
344 } 344 }
345 FX_INT32 CBC_QRCoderVersion::GetVersionNumber() 345 int32_t CBC_QRCoderVersion::GetVersionNumber()
346 { 346 {
347 return m_versionNumber; 347 return m_versionNumber;
348 } 348 }
349 CFX_Int32Array* CBC_QRCoderVersion::GetAlignmentPatternCenters() 349 CFX_Int32Array* CBC_QRCoderVersion::GetAlignmentPatternCenters()
350 { 350 {
351 return &m_alignmentPatternCenters; 351 return &m_alignmentPatternCenters;
352 } 352 }
353 FX_INT32 CBC_QRCoderVersion::GetTotalCodeWords() 353 int32_t CBC_QRCoderVersion::GetTotalCodeWords()
354 { 354 {
355 return m_totalCodeWords; 355 return m_totalCodeWords;
356 } 356 }
357 FX_INT32 CBC_QRCoderVersion::GetDimensionForVersion() 357 int32_t CBC_QRCoderVersion::GetDimensionForVersion()
358 { 358 {
359 return 17 + 4 * m_versionNumber; 359 return 17 + 4 * m_versionNumber;
360 } 360 }
361 CBC_QRCoderECBlocks* CBC_QRCoderVersion::GetECBlocksForLevel(CBC_QRCoderErrorCor rectionLevel *ecLevel) 361 CBC_QRCoderECBlocks* CBC_QRCoderVersion::GetECBlocksForLevel(CBC_QRCoderErrorCor rectionLevel *ecLevel)
362 { 362 {
363 return (CBC_QRCoderECBlocks*)m_ecBlocks[ecLevel->Ordinal()]; 363 return (CBC_QRCoderECBlocks*)m_ecBlocks[ecLevel->Ordinal()];
364 } 364 }
365 CBC_QRCoderVersion* CBC_QRCoderVersion::GetProvisionalVersionForDimension(FX_INT 32 dimension, FX_INT32 &e) 365 CBC_QRCoderVersion* CBC_QRCoderVersion::GetProvisionalVersionForDimension(int32_ t dimension, int32_t &e)
366 { 366 {
367 if((dimension % 4) != 1) { 367 if((dimension % 4) != 1) {
368 e = BCExceptionRead; 368 e = BCExceptionRead;
369 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 369 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
370 } 370 }
371 CBC_QRCoderVersion* qcv = GetVersionForNumber((dimension - 17) >> 2, e); 371 CBC_QRCoderVersion* qcv = GetVersionForNumber((dimension - 17) >> 2, e);
372 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 372 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
373 return qcv; 373 return qcv;
374 } 374 }
375 CBC_QRCoderVersion* CBC_QRCoderVersion::DecodeVersionInformation(FX_INT32 versio nBits, FX_INT32 &e) 375 CBC_QRCoderVersion* CBC_QRCoderVersion::DecodeVersionInformation(int32_t version Bits, int32_t &e)
376 { 376 {
377 FX_INT32 bestDifference = FXSYS_IntMax; 377 int32_t bestDifference = FXSYS_IntMax;
378 FX_INT32 bestVersion = 0; 378 int32_t bestVersion = 0;
379 for (FX_INT32 i = 0; i < 34; i++) { 379 for (int32_t i = 0; i < 34; i++) {
380 FX_INT32 targetVersion = VERSION_DECODE_INFO[i]; 380 int32_t targetVersion = VERSION_DECODE_INFO[i];
381 if(targetVersion == versionBits) { 381 if(targetVersion == versionBits) {
382 CBC_QRCoderVersion* qcv = GetVersionForNumber(i + 7, e); 382 CBC_QRCoderVersion* qcv = GetVersionForNumber(i + 7, e);
383 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 383 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
384 return qcv; 384 return qcv;
385 } 385 }
386 FX_INT32 bitsDifference = CBC_QRCoderFormatInformation::NumBitsDiffering (versionBits, targetVersion); 386 int32_t bitsDifference = CBC_QRCoderFormatInformation::NumBitsDiffering( versionBits, targetVersion);
387 if(bitsDifference < bestDifference) { 387 if(bitsDifference < bestDifference) {
388 bestVersion = i + 7; 388 bestVersion = i + 7;
389 bestDifference = bitsDifference; 389 bestDifference = bitsDifference;
390 } 390 }
391 } 391 }
392 if(bestDifference <= 3) { 392 if(bestDifference <= 3) {
393 CBC_QRCoderVersion* qcv = GetVersionForNumber(bestVersion, e); 393 CBC_QRCoderVersion* qcv = GetVersionForNumber(bestVersion, e);
394 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 394 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
395 return qcv; 395 return qcv;
396 } 396 }
397 return NULL; 397 return NULL;
398 } 398 }
399 CBC_CommonBitMatrix* CBC_QRCoderVersion::BuildFunctionPattern(FX_INT32 &e) 399 CBC_CommonBitMatrix* CBC_QRCoderVersion::BuildFunctionPattern(int32_t &e)
400 { 400 {
401 FX_INT32 dimension = GetDimensionForVersion(); 401 int32_t dimension = GetDimensionForVersion();
402 CBC_CommonBitMatrix* bitMatrix = FX_NEW CBC_CommonBitMatrix(); 402 CBC_CommonBitMatrix* bitMatrix = FX_NEW CBC_CommonBitMatrix();
403 bitMatrix->Init(dimension); 403 bitMatrix->Init(dimension);
404 bitMatrix->SetRegion(0, 0 , 9, 9, e); 404 bitMatrix->SetRegion(0, 0 , 9, 9, e);
405 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 405 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
406 bitMatrix->SetRegion(dimension - 8, 0, 8, 9, e); 406 bitMatrix->SetRegion(dimension - 8, 0, 8, 9, e);
407 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 407 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
408 bitMatrix->SetRegion(0, dimension - 8, 9, 8, e); 408 bitMatrix->SetRegion(0, dimension - 8, 9, 8, e);
409 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 409 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
410 FX_INT32 max = m_alignmentPatternCenters.GetSize(); 410 int32_t max = m_alignmentPatternCenters.GetSize();
411 for (FX_INT32 x = 0; x < max; x++) { 411 for (int32_t x = 0; x < max; x++) {
412 FX_INT32 i = m_alignmentPatternCenters[x] - 2; 412 int32_t i = m_alignmentPatternCenters[x] - 2;
413 for (FX_INT32 y = 0; y < max; y++) { 413 for (int32_t y = 0; y < max; y++) {
414 if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0) ) { 414 if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0) ) {
415 continue; 415 continue;
416 } 416 }
417 bitMatrix->SetRegion(m_alignmentPatternCenters[y] - 2, i, 5, 5, e); 417 bitMatrix->SetRegion(m_alignmentPatternCenters[y] - 2, i, 5, 5, e);
418 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 418 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
419 } 419 }
420 } 420 }
421 bitMatrix->SetRegion(6, 9, 1, dimension - 17, e); 421 bitMatrix->SetRegion(6, 9, 1, dimension - 17, e);
422 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 422 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
423 bitMatrix->SetRegion(9, 6, dimension - 17, 1, e); 423 bitMatrix->SetRegion(9, 6, dimension - 17, 1, e);
424 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 424 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
425 if (m_versionNumber > 6) { 425 if (m_versionNumber > 6) {
426 bitMatrix->SetRegion(dimension - 11, 0, 3, 6, e); 426 bitMatrix->SetRegion(dimension - 11, 0, 3, 6, e);
427 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 427 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
428 bitMatrix->SetRegion(0, dimension - 11, 6, 3, e); 428 bitMatrix->SetRegion(0, dimension - 11, 6, 3, e);
429 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 429 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
430 } 430 }
431 return bitMatrix; 431 return bitMatrix;
432 } 432 }
433 CBC_QRCoderVersion* CBC_QRCoderVersion::GetVersionForNumber(FX_INT32 versionNumb er, FX_INT32 &e) 433 CBC_QRCoderVersion* CBC_QRCoderVersion::GetVersionForNumber(int32_t versionNumbe r, int32_t &e)
434 { 434 {
435 if(VERSION->GetSize() == 0) { 435 if(VERSION->GetSize() == 0) {
436 VERSION->Add(FX_NEW CBC_QRCoderVersion(1, 436 VERSION->Add(FX_NEW CBC_QRCoderVersion(1,
437 FX_NEW CBC_QRCoderECBlocks(7, FX_ NEW CBC_QRCoderECB(1, 19)), 437 FX_NEW CBC_QRCoderECBlocks(7, FX_ NEW CBC_QRCoderECB(1, 19)),
438 FX_NEW CBC_QRCoderECBlocks(10, FX _NEW CBC_QRCoderECB(1, 16)), 438 FX_NEW CBC_QRCoderECBlocks(10, FX _NEW CBC_QRCoderECB(1, 16)),
439 FX_NEW CBC_QRCoderECBlocks(13, FX _NEW CBC_QRCoderECB(1, 13)), 439 FX_NEW CBC_QRCoderECBlocks(13, FX _NEW CBC_QRCoderECB(1, 13)),
440 FX_NEW CBC_QRCoderECBlocks(17, FX _NEW CBC_QRCoderECB(1, 9)))); 440 FX_NEW CBC_QRCoderECBlocks(17, FX _NEW CBC_QRCoderECB(1, 9))));
441 VERSION->Add(FX_NEW CBC_QRCoderVersion(2, 441 VERSION->Add(FX_NEW CBC_QRCoderVersion(2,
442 FX_NEW CBC_QRCoderECBlocks(10, FX _NEW CBC_QRCoderECB(1, 34)), 442 FX_NEW CBC_QRCoderECBlocks(10, FX _NEW CBC_QRCoderECB(1, 34)),
443 FX_NEW CBC_QRCoderECBlocks(16, FX _NEW CBC_QRCoderECB(1, 28)), 443 FX_NEW CBC_QRCoderECBlocks(16, FX _NEW CBC_QRCoderECB(1, 28)),
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 FX_NEW CBC_QRCoderECB(61, 16)))); 763 FX_NEW CBC_QRCoderECB(61, 16))));
764 } 764 }
765 if(versionNumber < 1 || versionNumber > 40) { 765 if(versionNumber < 1 || versionNumber > 40) {
766 e = BCExceptionIllegalArgument; 766 e = BCExceptionIllegalArgument;
767 BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 767 BC_EXCEPTION_CHECK_ReturnValue(e, NULL);
768 } 768 }
769 return (CBC_QRCoderVersion*)(*VERSION)[versionNumber - 1]; 769 return (CBC_QRCoderVersion*)(*VERSION)[versionNumber - 1];
770 } 770 }
771 void CBC_QRCoderVersion::Destroy() 771 void CBC_QRCoderVersion::Destroy()
772 { 772 {
773 FX_INT32 i; 773 int32_t i;
774 for(i = 0; i < VERSION->GetSize(); i++) { 774 for(i = 0; i < VERSION->GetSize(); i++) {
775 delete ( (CBC_QRCoderVersion*)(*VERSION)[i] ); 775 delete ( (CBC_QRCoderVersion*)(*VERSION)[i] );
776 } 776 }
777 } 777 }
OLDNEW
« no previous file with comments | « xfa/src/fxbarcode/qrcode/BC_QRCoderVersion.h ('k') | xfa/src/fxbarcode/qrcode/BC_QRDataBlock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698