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 7 #ifndef XFA_FXBARCODE_QRCODE_BC_QRCODERVERSION_H_ 8 #define XFA_FXBARCODE_QRCODE_BC_QRCODERVERSION_H_ 9 10 #include "core/fxcrt/fx_basic.h" 11 12 class CBC_CommonBitMatrix; 13 class CBC_QRCoderECBlocks; 14 class CBC_QRCoderErrorCorrectionLevel; 15 16 class CBC_QRCoderVersion { 17 public: 18 virtual ~CBC_QRCoderVersion(); 19 static void Initialize(); 20 static void Finalize(); 21 22 int32_t GetVersionNumber(); 23 int32_t GetTotalCodeWords(); 24 int32_t GetDimensionForVersion(); 25 CBC_CommonBitMatrix* BuildFunctionPattern(int32_t& e); 26 CFX_ArrayTemplate<int32_t>* GetAlignmentPatternCenters(); 27 CBC_QRCoderECBlocks* GetECBlocksForLevel( 28 CBC_QRCoderErrorCorrectionLevel* ecLevel); 29 static CBC_QRCoderVersion* GetVersionForNumber(int32_t versionNumber, 30 int32_t& e); 31 static CBC_QRCoderVersion* GetProvisionalVersionForDimension( 32 int32_t dimension, 33 int32_t& e); 34 static CBC_QRCoderVersion* DecodeVersionInformation(int32_t versionBits, 35 int32_t& e); 36 static void Destroy(); 37 38 private: 39 CBC_QRCoderVersion(); 40 CBC_QRCoderVersion(int32_t versionNumber, 41 CBC_QRCoderECBlocks* ecBlocks1, 42 CBC_QRCoderECBlocks* ecBlocks2, 43 CBC_QRCoderECBlocks* ecBlocks3, 44 CBC_QRCoderECBlocks* ecBlocks4); 45 46 static const int32_t VERSION_DECODE_INFO[34]; 47 static CFX_ArrayTemplate<CBC_QRCoderVersion*>* VERSION; 48 49 int32_t m_versionNumber; 50 int32_t m_totalCodeWords; 51 CFX_ArrayTemplate<int32_t> m_alignmentPatternCenters; 52 CFX_ArrayTemplate<CBC_QRCoderECBlocks*> m_ecBlocksArray; 53 }; 54 55 #endif // XFA_FXBARCODE_QRCODE_BC_QRCODERVERSION_H_ 56