// 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; | |
class CBC_PDF417 : public CFX_Object | |
{ | |
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 |