// 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 XFA_FXBARCODE_PDF417_BC_PDF417_H_
|
#define XFA_FXBARCODE_PDF417_BC_PDF417_H_
|
|
#include "core/fxcrt/include/fx_basic.h"
|
#include "xfa/fxbarcode/pdf417/BC_PDF417Compaction.h"
|
|
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,
|
int32_t errorCorrectionLevel,
|
int32_t& e);
|
void setDimensions(int32_t maxCols,
|
int32_t minCols,
|
int32_t maxRows,
|
int32_t minRows);
|
void setCompaction(Compaction compaction);
|
void setCompact(FX_BOOL compact);
|
|
private:
|
static const int32_t START_PATTERN = 0x1fea8;
|
static const int32_t STOP_PATTERN = 0x3fa29;
|
static const int32_t CODEWORD_TABLE[][929];
|
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;
|
int32_t m_minCols;
|
int32_t m_maxCols;
|
int32_t m_maxRows;
|
int32_t m_minRows;
|
|
private:
|
static int32_t calculateNumberOfRows(int32_t m, int32_t k, int32_t c);
|
static int32_t getNumberOfPadCodewords(int32_t m,
|
int32_t k,
|
int32_t c,
|
int32_t r);
|
static void encodeChar(int32_t pattern, int32_t len, CBC_BarcodeRow* logic);
|
void encodeLowLevel(CFX_WideString fullCodewords,
|
int32_t c,
|
int32_t r,
|
int32_t errorCorrectionLevel,
|
CBC_BarcodeMatrix* logic);
|
CFX_Int32Array* determineDimensions(int32_t sourceCodeWords,
|
int32_t errorCorrectionCodeWords,
|
int32_t& e);
|
};
|
|
#endif // XFA_FXBARCODE_PDF417_BC_PDF417_H_
|