Merge to XFA: Use stdint.h types throughout PDFium.
[pdfium.git] / xfa / include / fxbarcode / BC_BarCode.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_CODEBASE_H_\r
8 #define _BC_CODEBASE_H_\r
9 void BC_Library_Init();\r
10 void BC_Library_Destory();\r
11 class CBC_CodeBase;\r
12 class CBC_Writer;\r
13 class CBC_Reader;\r
14 enum BC_TEXT_LOC {\r
15     BC_TEXT_LOC_NONE            = 0,\r
16     BC_TEXT_LOC_ABOVE,\r
17     BC_TEXT_LOC_BELOW,\r
18     BC_TEXT_LOC_ABOVEEMBED,\r
19     BC_TEXT_LOC_BELOWEMBED\r
20 };\r
21 enum BC_CHAR_ENCODING {\r
22     CHAR_ENCODING_UTF8          = 0,\r
23     CHAR_ENCODING_UNICODE\r
24 };\r
25 enum BC_TYPE {\r
26     BC_UNKNOWN                          = -1,\r
27     BC_CODE39                           = 0,\r
28     BC_CODABAR,\r
29     BC_CODE128,\r
30     BC_CODE128_B,\r
31     BC_CODE128_C,\r
32     BC_EAN8,\r
33     BC_UPCA,\r
34     BC_EAN13,\r
35     BC_QR_CODE,\r
36     BC_PDF417,\r
37     BC_DATAMATRIX\r
38 };\r
39 class CBC_CodeBase\r
40 {\r
41 public:\r
42     CBC_CodeBase();\r
43     virtual ~CBC_CodeBase();\r
44     virtual BC_TYPE      GetType() = 0;\r
45     virtual FX_BOOL  Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e) = 0;\r
46     virtual FX_BOOL      RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e) = 0;\r
47     virtual FX_BOOL      RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e) = 0;\r
48     virtual CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e) = 0;\r
49     virtual CFX_WideString Decode(CFX_DIBitmap *pBitmap, int32_t &e) = 0;\r
50 \r
51     virtual FX_BOOL  SetCharEncoding(int32_t encoding);\r
52     virtual FX_BOOL  SetModuleHeight(int32_t moduleHeight);\r
53     virtual FX_BOOL  SetModuleWidth(int32_t moduleWidth);\r
54 \r
55     virtual FX_BOOL  SetHeight(int32_t height);\r
56     virtual FX_BOOL  SetWidth(int32_t width);\r
57     virtual void     SetBackgroundColor(FX_ARGB backgroundColor);\r
58     virtual void     SetBarcodeColor(FX_ARGB foregroundColor);\r
59 protected:\r
60     CBC_Writer *        m_pBCWriter;\r
61     CBC_Reader *        m_pBCReader;\r
62 };\r
63 class CBC_OneCode : public CBC_CodeBase\r
64 {\r
65 public:\r
66     CBC_OneCode();\r
67     virtual ~CBC_OneCode();\r
68     virtual BC_TYPE      GetType() = 0;\r
69     virtual FX_BOOL  Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e) = 0;\r
70     virtual FX_BOOL      RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e) = 0;\r
71     virtual FX_BOOL      RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e) = 0;\r
72     virtual CFX_WideString Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e) = 0;\r
73     virtual CFX_WideString Decode(CFX_DIBitmap *pBitmap, int32_t &e) = 0;\r
74     virtual FX_BOOL                     CheckContentValidity(FX_WSTR contents);\r
75     virtual CFX_WideString      FilterContents(FX_WSTR contents);\r
76     virtual void                        SetPrintChecksum(FX_BOOL checksum);\r
77     virtual void                        SetDataLength(int32_t length);\r
78     virtual void                        SetCalChecksum(FX_BOOL calc);\r
79     virtual FX_BOOL                     SetFont(CFX_Font * cFont);\r
80     virtual void                        SetFontSize(FX_FLOAT size);\r
81     virtual void                        SetFontStyle(int32_t style);\r
82     virtual void                        SetFontColor(FX_ARGB color);\r
83 };\r
84 class CBC_Code39 : public CBC_OneCode\r
85 {\r
86 public:\r
87     CBC_Code39();\r
88     CBC_Code39(FX_BOOL usingCheckDigit);\r
89     CBC_Code39(FX_BOOL usingCheckDigit, FX_BOOL extendedMode);\r
90     virtual ~CBC_Code39();\r
91     FX_BOOL             Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e);\r
92     FX_BOOL                     RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e);\r
93     FX_BOOL                     RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e);\r
94     CFX_WideString      Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e);\r
95     CFX_WideString      Decode(CFX_DIBitmap *pBitmap, int32_t &e);\r
96     BC_TYPE                     GetType()\r
97     {\r
98         return BC_CODE39;\r
99     }\r
100     FX_BOOL                     SetTextLocation(BC_TEXT_LOC location);\r
101     FX_BOOL                     SetWideNarrowRatio(int32_t ratio);\r
102 private:\r
103     CFX_WideString  m_renderContents;\r
104 };\r
105 class CBC_Codabar : public CBC_OneCode\r
106 {\r
107 public:\r
108     CBC_Codabar();\r
109     virtual ~CBC_Codabar();\r
110     FX_BOOL                 Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e);\r
111     FX_BOOL                     RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e);\r
112     FX_BOOL                     RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e);\r
113     CFX_WideString      Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e);\r
114     CFX_WideString      Decode(CFX_DIBitmap *pBitmap, int32_t &e);\r
115     BC_TYPE                     GetType()\r
116     {\r
117         return BC_CODABAR;\r
118     }\r
119     FX_BOOL                     SetStartChar(FX_CHAR start);\r
120     FX_BOOL                     SetEndChar(FX_CHAR end);\r
121     FX_BOOL                     SetTextLocation(BC_TEXT_LOC location);\r
122     FX_BOOL                     SetWideNarrowRatio(int32_t ratio);\r
123 private:\r
124     CFX_WideString  m_renderContents;\r
125 };\r
126 class CBC_Code128 : public CBC_OneCode\r
127 {\r
128 private:\r
129     BC_TYPE  m_type;\r
130 public:\r
131     CBC_Code128(BC_TYPE type);\r
132     virtual ~CBC_Code128();\r
133     FX_BOOL                     Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e);\r
134     FX_BOOL                     RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e);\r
135     FX_BOOL                     RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e);\r
136     CFX_WideString      Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e);\r
137     CFX_WideString      Decode(CFX_DIBitmap *pBitmap, int32_t &e);\r
138     BC_TYPE                     GetType()\r
139     {\r
140         return BC_CODE128;\r
141     }\r
142     FX_BOOL                     SetTextLocation(BC_TEXT_LOC loction);\r
143 private:\r
144     CFX_WideString  m_renderContents;\r
145 };\r
146 class CBC_EAN8 : public CBC_OneCode\r
147 {\r
148 public:\r
149     CBC_EAN8();\r
150     virtual ~CBC_EAN8();\r
151     FX_BOOL                     Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e);\r
152     FX_BOOL                     RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e);\r
153     FX_BOOL                     RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e);\r
154     CFX_WideString      Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e);\r
155     CFX_WideString      Decode(CFX_DIBitmap *pBitmap, int32_t &e);\r
156     BC_TYPE                     GetType()\r
157     {\r
158         return BC_EAN8;\r
159     }\r
160 private:\r
161     CFX_WideString      Preprocess(FX_WSTR contents);\r
162     CFX_WideString  m_renderContents;\r
163 };\r
164 class CBC_EAN13 : public CBC_OneCode\r
165 {\r
166 public:\r
167     CBC_EAN13();\r
168     virtual ~CBC_EAN13();\r
169     FX_BOOL             Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e);\r
170     FX_BOOL                     RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e);\r
171     FX_BOOL                     RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e);\r
172     CFX_WideString      Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e);\r
173     CFX_WideString      Decode(CFX_DIBitmap *pBitmap, int32_t &e);\r
174     BC_TYPE                     GetType()\r
175     {\r
176         return BC_EAN13;\r
177     }\r
178 private:\r
179     CFX_WideString      Preprocess(FX_WSTR contents);\r
180     CFX_WideString  m_renderContents;\r
181 };\r
182 class CBC_UPCA : public CBC_OneCode\r
183 {\r
184 public:\r
185     CBC_UPCA();\r
186     virtual ~CBC_UPCA();\r
187     FX_BOOL             Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e);\r
188     FX_BOOL                     RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e);\r
189     FX_BOOL                     RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e);\r
190     CFX_WideString      Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e);\r
191     CFX_WideString      Decode(CFX_DIBitmap *pBitmap, int32_t &e);\r
192     BC_TYPE                     GetType()\r
193     {\r
194         return BC_UPCA;\r
195     }\r
196 private:\r
197     CFX_WideString      Preprocess(FX_WSTR contents);\r
198     CFX_WideString  m_renderContents;\r
199 };\r
200 class CBC_QRCode : public CBC_CodeBase\r
201 {\r
202 public:\r
203     CBC_QRCode();\r
204     virtual ~CBC_QRCode();\r
205     FX_BOOL             Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e);\r
206     FX_BOOL                     RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e);\r
207     FX_BOOL                     RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e);\r
208     CFX_WideString      Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e);\r
209     CFX_WideString      Decode(CFX_DIBitmap *pBitmap, int32_t &e);\r
210     BC_TYPE             GetType()\r
211     {\r
212         return BC_QR_CODE;\r
213     }\r
214     FX_BOOL             SetVersion(int32_t version);\r
215     FX_BOOL             SetErrorCorrectionLevel (int32_t level);\r
216 };\r
217 class CBC_PDF417I : public CBC_CodeBase\r
218 {\r
219 public:\r
220     CBC_PDF417I();\r
221     virtual ~CBC_PDF417I();\r
222     FX_BOOL                     Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e);\r
223     FX_BOOL                     RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e);\r
224     FX_BOOL                     RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e);\r
225     CFX_WideString      Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e);\r
226     CFX_WideString      Decode(CFX_DIBitmap *pBitmap, int32_t &e);\r
227     BC_TYPE             GetType()\r
228     {\r
229         return BC_PDF417;\r
230     }\r
231     FX_BOOL             SetErrorCorrectionLevel (int32_t level);\r
232     void                SetTruncated(FX_BOOL truncated);\r
233 };\r
234 class CBC_DataMatrix : public CBC_CodeBase\r
235 {\r
236 public:\r
237     CBC_DataMatrix();\r
238     virtual ~CBC_DataMatrix();\r
239     FX_BOOL             Encode(FX_WSTR contents, FX_BOOL isDevice, int32_t &e);\r
240     FX_BOOL                     RenderDevice(CFX_RenderDevice* device, const CFX_Matrix* matirx, int32_t &e);\r
241     FX_BOOL                     RenderBitmap(CFX_DIBitmap *&pOutBitmap, int32_t &e);\r
242     CFX_WideString      Decode(uint8_t* buf, int32_t width, int32_t hight, int32_t &e);\r
243     CFX_WideString      Decode(CFX_DIBitmap *pBitmap, int32_t &e);\r
244     BC_TYPE             GetType()\r
245     {\r
246         return BC_DATAMATRIX;\r
247     }\r
248 };\r
249 #endif\r