| // Copyright 2014 PDFium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
 |  | 
 | #ifndef FXBARCODE_DATAMATRIX_BC_SYMBOLINFO_H_ | 
 | #define FXBARCODE_DATAMATRIX_BC_SYMBOLINFO_H_ | 
 |  | 
 | #include "core/fxcrt/fx_string.h" | 
 | #include "core/fxcrt/fx_system.h" | 
 |  | 
 | class CBC_SymbolInfo { | 
 |  public: | 
 |   CBC_SymbolInfo(int32_t dataCapacity, | 
 |                  int32_t errorCodewords, | 
 |                  int32_t matrixWidth, | 
 |                  int32_t matrixHeight, | 
 |                  int32_t dataRegions); | 
 |   virtual ~CBC_SymbolInfo(); | 
 |  | 
 |   static void Initialize(); | 
 |   static void Finalize(); | 
 |   static void overrideSymbolSet(CBC_SymbolInfo* override); | 
 |   static CBC_SymbolInfo* lookup(int32_t dataCodewords, | 
 |                                 bool allowRectangular, | 
 |                                 int32_t& e); | 
 |  | 
 |   int32_t getSymbolDataWidth() const; | 
 |   int32_t getSymbolDataHeight() const; | 
 |   int32_t getSymbolWidth() const; | 
 |   int32_t getSymbolHeight() const; | 
 |   int32_t getCodewordCount() const; | 
 |   virtual int32_t getInterleavedBlockCount() const; | 
 |   int32_t getDataLengthForInterleavedBlock(int32_t index) const; | 
 |   int32_t getErrorLengthForInterleavedBlock(int32_t index) const; | 
 |  | 
 |   int32_t dataCapacity() const { return m_dataCapacity; } | 
 |   int32_t errorCodewords() const { return m_errorCodewords; } | 
 |   int32_t matrixWidth() const { return m_matrixWidth; } | 
 |   int32_t matrixHeight() const { return m_matrixHeight; } | 
 |  | 
 |  protected: | 
 |   CBC_SymbolInfo(int32_t dataCapacity, | 
 |                  int32_t errorCodewords, | 
 |                  int32_t matrixWidth, | 
 |                  int32_t matrixHeight, | 
 |                  int32_t dataRegions, | 
 |                  int32_t rsBlockData, | 
 |                  int32_t rsBlockError); | 
 |  | 
 |  private: | 
 |   int32_t getHorizontalDataRegions() const; | 
 |   int32_t getVerticalDataRegions() const; | 
 |  | 
 |   const bool m_rectangular; | 
 |   const int32_t m_dataCapacity; | 
 |   const int32_t m_errorCodewords; | 
 |   const int32_t m_matrixWidth; | 
 |   const int32_t m_matrixHeight; | 
 |   const int32_t m_dataRegions; | 
 |   const int32_t m_rsBlockData; | 
 |   const int32_t m_rsBlockError; | 
 | }; | 
 |  | 
 | #endif  // FXBARCODE_DATAMATRIX_BC_SYMBOLINFO_H_ |