Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxbarcode / src / include / BC_PDF417.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _BC_PDF417_H_\r
8 #define _BC_PDF417_H_\r
9 class CBC_Compaction;\r
10 class CBC_BarcodeRow;\r
11 class CBC_BarcodeMatrix;\r
12 class CBC_PDF417;\r
13 class CBC_PDF417 : public CFX_Object\r
14 {\r
15 public:\r
16     CBC_PDF417();\r
17     CBC_PDF417(FX_BOOL compact);\r
18     virtual ~CBC_PDF417();\r
19     CBC_BarcodeMatrix* getBarcodeMatrix();\r
20     void generateBarcodeLogic(CFX_WideString msg, FX_INT32 errorCorrectionLevel, FX_INT32 &e);\r
21     void setDimensions(FX_INT32 maxCols, FX_INT32 minCols, FX_INT32 maxRows, FX_INT32 minRows);\r
22     void setCompaction(Compaction compaction);\r
23     void setCompact(FX_BOOL compact);\r
24 private:\r
25     static FX_INT32 START_PATTERN;\r
26     static FX_INT32 STOP_PATTERN;\r
27     static FX_INT32 CODEWORD_TABLE[][1000];\r
28     static FX_FLOAT PREFERRED_RATIO;\r
29     static FX_FLOAT DEFAULT_MODULE_WIDTH;\r
30     static FX_FLOAT HEIGHT;\r
31     CBC_BarcodeMatrix* m_barcodeMatrix;\r
32     FX_BOOL m_compact;\r
33     Compaction m_compaction;\r
34     FX_INT32 m_minCols;\r
35     FX_INT32 m_maxCols;\r
36     FX_INT32 m_maxRows;\r
37     FX_INT32 m_minRows;\r
38 private:\r
39     static FX_INT32 calculateNumberOfRows(FX_INT32 m, FX_INT32 k, FX_INT32 c);\r
40     static FX_INT32 getNumberOfPadCodewords(FX_INT32 m, FX_INT32 k, FX_INT32 c, FX_INT32 r);\r
41     static void encodeChar(FX_INT32 pattern, FX_INT32 len, CBC_BarcodeRow* logic);\r
42     void encodeLowLevel(CFX_WideString fullCodewords, FX_INT32 c, FX_INT32 r, FX_INT32 errorCorrectionLevel, CBC_BarcodeMatrix* logic);\r
43     CFX_Int32Array* determineDimensions(FX_INT32 sourceCodeWords, FX_INT32 errorCorrectionCodeWords, FX_INT32 &e);\r
44 };\r
45 #endif\r