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