// 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" #include "fxbarcode/datamatrix/BC_SymbolShapeHint.h" class CBC_Dimension; class CBC_SymbolInfo : public CBC_SymbolShapeHint { public: CBC_SymbolInfo(bool rectangular, int32_t dataCapacity, int32_t errorCodewords, int32_t matrixWidth, int32_t matrixHeight, int32_t dataRegions); ~CBC_SymbolInfo() override; static void Initialize(); static void Finalize(); static void overrideSymbolSet(CBC_SymbolInfo* override); static CBC_SymbolInfo* lookup(int32_t dataCodewords, int32_t& e); static CBC_SymbolInfo* lookup(int32_t dataCodewords, SymbolShapeHint shape, int32_t& e); static CBC_SymbolInfo* lookup(int32_t dataCodewords, bool allowRectangular, bool fail, int32_t& e); static CBC_SymbolInfo* lookup(int32_t dataCodewords, SymbolShapeHint shape, bool fail, int32_t& e); static CBC_SymbolInfo* lookup(int32_t dataCodewords, SymbolShapeHint shape, CBC_Dimension* minSize, CBC_Dimension* maxSize, bool fail, int32_t& e); int32_t getHorizontalDataRegions(int32_t& e); int32_t getVerticalDataRegions(int32_t& e); int32_t getSymbolDataWidth(int32_t& e); int32_t getSymbolDataHeight(int32_t& e); int32_t getSymbolWidth(int32_t& e); int32_t getSymbolHeight(int32_t& e); int32_t getCodewordCount(); int32_t getInterleavedBlockCount(); int32_t getDataLengthForInterleavedBlock(int32_t index); int32_t getErrorLengthForInterleavedBlock(int32_t index); int32_t m_dataCapacity; int32_t m_errorCodewords; int32_t m_matrixWidth; int32_t m_matrixHeight; int32_t m_rsBlockData; int32_t m_rsBlockError; private: CBC_SymbolInfo(bool rectangular, int32_t dataCapacity, int32_t errorCodewords, int32_t matrixWidth, int32_t matrixHeight, int32_t dataRegions, int32_t rsBlockData, int32_t rsBlockError); bool m_rectangular; int32_t m_dataRegions; }; #endif // FXBARCODE_DATAMATRIX_BC_SYMBOLINFO_H_