// 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 _BC_SYMBOLINFO_H_ #define _BC_SYMBOLINFO_H_ class CBC_SymbolShapeHint; class CBC_Dimension; class CBC_SymbolInfo; class CBC_SymbolInfo : public CBC_SymbolShapeHint { public: CBC_SymbolInfo(FX_BOOL rectangular, 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, int32_t& e); static CBC_SymbolInfo* lookup(int32_t dataCodewords, SymbolShapeHint shape, int32_t& e); static CBC_SymbolInfo* lookup(int32_t dataCodewords, FX_BOOL allowRectangular, FX_BOOL fail, int32_t& e); static CBC_SymbolInfo* lookup(int32_t dataCodewords, SymbolShapeHint shape, FX_BOOL fail, int32_t& e); static CBC_SymbolInfo* lookup(int32_t dataCodewords, SymbolShapeHint shape, CBC_Dimension* minSize, CBC_Dimension* maxSize, FX_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); CFX_WideString toString(int32_t& e); public: int32_t m_dataCapacity; int32_t m_errorCodewords; int32_t m_matrixWidth; int32_t m_matrixHeight; int32_t m_rsBlockData; int32_t m_rsBlockError; static CBC_SymbolInfo* m_PROD_SYMBOLS[30]; private: static CBC_SymbolInfo* m_symbols[30]; FX_BOOL m_rectangular; int32_t m_dataRegions; private: CBC_SymbolInfo(FX_BOOL rectangular, int32_t dataCapacity, int32_t errorCodewords, int32_t matrixWidth, int32_t matrixHeight, int32_t dataRegions, int32_t rsBlockData, int32_t rsBlockError); }; #endif