// 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_PDF417_H_ #define _BC_PDF417_H_ class CBC_Compaction; class CBC_BarcodeRow; class CBC_BarcodeMatrix; class CBC_PDF417 { public: CBC_PDF417(); CBC_PDF417(FX_BOOL compact); virtual ~CBC_PDF417(); CBC_BarcodeMatrix* getBarcodeMatrix(); void generateBarcodeLogic(CFX_WideString msg, FX_INT32 errorCorrectionLevel, FX_INT32 &e); void setDimensions(FX_INT32 maxCols, FX_INT32 minCols, FX_INT32 maxRows, FX_INT32 minRows); void setCompaction(Compaction compaction); void setCompact(FX_BOOL compact); private: static FX_INT32 START_PATTERN; static FX_INT32 STOP_PATTERN; static FX_INT32 CODEWORD_TABLE[][1000]; static FX_FLOAT PREFERRED_RATIO; static FX_FLOAT DEFAULT_MODULE_WIDTH; static FX_FLOAT HEIGHT; CBC_BarcodeMatrix* m_barcodeMatrix; FX_BOOL m_compact; Compaction m_compaction; FX_INT32 m_minCols; FX_INT32 m_maxCols; FX_INT32 m_maxRows; FX_INT32 m_minRows; private: static FX_INT32 calculateNumberOfRows(FX_INT32 m, FX_INT32 k, FX_INT32 c); static FX_INT32 getNumberOfPadCodewords(FX_INT32 m, FX_INT32 k, FX_INT32 c, FX_INT32 r); static void encodeChar(FX_INT32 pattern, FX_INT32 len, CBC_BarcodeRow* logic); void encodeLowLevel(CFX_WideString fullCodewords, FX_INT32 c, FX_INT32 r, FX_INT32 errorCorrectionLevel, CBC_BarcodeMatrix* logic); CFX_Int32Array* determineDimensions(FX_INT32 sourceCodeWords, FX_INT32 errorCorrectionCodeWords, FX_INT32 &e); }; #endif