| // 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(size_t dataCapacity, | 
 |                  size_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 const CBC_SymbolInfo* Lookup(size_t iDataCodewords, | 
 |                                       bool bAllowRectangular); | 
 |  | 
 |   int32_t getSymbolDataWidth() const; | 
 |   int32_t getSymbolDataHeight() const; | 
 |   int32_t getSymbolWidth() const; | 
 |   int32_t getSymbolHeight() const; | 
 |   size_t getCodewordCount() const; | 
 |   virtual size_t getInterleavedBlockCount() const; | 
 |   size_t getDataLengthForInterleavedBlock() const; | 
 |   size_t getErrorLengthForInterleavedBlock() const; | 
 |  | 
 |   size_t dataCapacity() const { return m_dataCapacity; } | 
 |   size_t errorCodewords() const { return m_errorCodewords; } | 
 |   int32_t matrixWidth() const { return m_matrixWidth; } | 
 |   int32_t matrixHeight() const { return m_matrixHeight; } | 
 |  | 
 |  protected: | 
 |   CBC_SymbolInfo(size_t dataCapacity, | 
 |                  size_t errorCodewords, | 
 |                  int32_t matrixWidth, | 
 |                  int32_t matrixHeight, | 
 |                  int32_t dataRegions, | 
 |                  size_t rsBlockData, | 
 |                  size_t rsBlockError); | 
 |  | 
 |  private: | 
 |   int32_t getHorizontalDataRegions() const; | 
 |   int32_t getVerticalDataRegions() const; | 
 |  | 
 |   const bool m_rectangular; | 
 |   const size_t m_dataCapacity; | 
 |   const size_t m_errorCodewords; | 
 |   const int32_t m_matrixWidth; | 
 |   const int32_t m_matrixHeight; | 
 |   const int32_t m_dataRegions; | 
 |   const size_t m_rsBlockData; | 
 |   const size_t m_rsBlockError; | 
 | }; | 
 |  | 
 | #endif  // FXBARCODE_DATAMATRIX_BC_SYMBOLINFO_H_ |