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 _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