BC_QRCoderVersion.h revision 4d3acf4ec42bf6e838f9060103aff98fbf170794
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
12class CBC_CommonBitMatrix;
13class CBC_QRCoderECBlocks;
14class CBC_QRCoderErrorCorrectionLevel;
15
16class 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_Int32Array* 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_Int32Array m_alignmentPatternCenters;
52  CFX_ArrayTemplate<CBC_QRCoderECBlocks*> m_ecBlocksArray;
53};
54
55#endif  // XFA_FXBARCODE_QRCODE_BC_QRCODERVERSION_H_
56