Home | History | Annotate | Download | only in qrcode
      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