OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fwl/basewidget/cfx_barcode.h" | 7 #include "xfa/fwl/basewidget/cfx_barcode.h" |
8 | 8 |
9 #include "xfa/fxbarcode/cbc_codabar.h" | 9 #include "xfa/fxbarcode/cbc_codabar.h" |
10 #include "xfa/fxbarcode/cbc_code128.h" | 10 #include "xfa/fxbarcode/cbc_code128.h" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 case BC_UNKNOWN: | 47 case BC_UNKNOWN: |
48 default: | 48 default: |
49 return nullptr; | 49 return nullptr; |
50 } | 50 } |
51 } | 51 } |
52 | 52 |
53 } // namespace | 53 } // namespace |
54 | 54 |
55 CFX_Barcode::CFX_Barcode() {} | 55 CFX_Barcode::CFX_Barcode() {} |
56 | 56 |
57 CFX_Barcode::~CFX_Barcode() { | 57 CFX_Barcode::~CFX_Barcode() {} |
58 delete m_pBCEngine; | |
59 } | |
60 | 58 |
61 FX_BOOL CFX_Barcode::Create(BC_TYPE type) { | 59 FX_BOOL CFX_Barcode::Create(BC_TYPE type) { |
62 m_pBCEngine = CreateBarCodeEngineObject(type); | 60 m_pBCEngine.reset(CreateBarCodeEngineObject(type)); |
63 return !!m_pBCEngine; | 61 return !!m_pBCEngine; |
64 } | 62 } |
65 BC_TYPE CFX_Barcode::GetType() { | 63 BC_TYPE CFX_Barcode::GetType() { |
66 return m_pBCEngine ? m_pBCEngine->GetType() : BC_UNKNOWN; | 64 return m_pBCEngine ? m_pBCEngine->GetType() : BC_UNKNOWN; |
67 } | 65 } |
68 FX_BOOL CFX_Barcode::SetCharEncoding(BC_CHAR_ENCODING encoding) { | 66 FX_BOOL CFX_Barcode::SetCharEncoding(BC_CHAR_ENCODING encoding) { |
69 return m_pBCEngine ? m_pBCEngine->SetCharEncoding(encoding) : FALSE; | 67 return m_pBCEngine ? m_pBCEngine->SetCharEncoding(encoding) : FALSE; |
70 } | 68 } |
71 FX_BOOL CFX_Barcode::SetModuleHeight(int32_t moduleHeight) { | 69 FX_BOOL CFX_Barcode::SetModuleHeight(int32_t moduleHeight) { |
72 return m_pBCEngine ? m_pBCEngine->SetModuleHeight(moduleHeight) : FALSE; | 70 return m_pBCEngine ? m_pBCEngine->SetModuleHeight(moduleHeight) : FALSE; |
(...skipping 11 matching lines...) Expand all Loading... |
84 switch (GetType()) { | 82 switch (GetType()) { |
85 case BC_CODE39: | 83 case BC_CODE39: |
86 case BC_CODABAR: | 84 case BC_CODABAR: |
87 case BC_CODE128: | 85 case BC_CODE128: |
88 case BC_CODE128_B: | 86 case BC_CODE128_B: |
89 case BC_CODE128_C: | 87 case BC_CODE128_C: |
90 case BC_EAN8: | 88 case BC_EAN8: |
91 case BC_EAN13: | 89 case BC_EAN13: |
92 case BC_UPCA: | 90 case BC_UPCA: |
93 return m_pBCEngine | 91 return m_pBCEngine |
94 ? static_cast<CBC_OneCode*>(m_pBCEngine) | 92 ? static_cast<CBC_OneCode*>(m_pBCEngine.get()) |
95 ->CheckContentValidity(contents) | 93 ->CheckContentValidity(contents) |
96 : TRUE; | 94 : TRUE; |
97 default: | 95 default: |
98 return TRUE; | 96 return TRUE; |
99 } | 97 } |
100 } | 98 } |
101 FX_BOOL CFX_Barcode::SetPrintChecksum(FX_BOOL checksum) { | 99 FX_BOOL CFX_Barcode::SetPrintChecksum(FX_BOOL checksum) { |
102 switch (GetType()) { | 100 switch (GetType()) { |
103 case BC_CODE39: | 101 case BC_CODE39: |
104 case BC_CODABAR: | 102 case BC_CODABAR: |
105 case BC_CODE128: | 103 case BC_CODE128: |
106 case BC_CODE128_B: | 104 case BC_CODE128_B: |
107 case BC_CODE128_C: | 105 case BC_CODE128_C: |
108 case BC_EAN8: | 106 case BC_EAN8: |
109 case BC_EAN13: | 107 case BC_EAN13: |
110 case BC_UPCA: | 108 case BC_UPCA: |
111 return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine) | 109 return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) |
112 ->SetPrintChecksum(checksum), | 110 ->SetPrintChecksum(checksum), |
113 TRUE) | 111 TRUE) |
114 : FALSE; | 112 : FALSE; |
115 default: | 113 default: |
116 return FALSE; | 114 return FALSE; |
117 } | 115 } |
118 } | 116 } |
119 FX_BOOL CFX_Barcode::SetDataLength(int32_t length) { | 117 FX_BOOL CFX_Barcode::SetDataLength(int32_t length) { |
120 switch (GetType()) { | 118 switch (GetType()) { |
121 case BC_CODE39: | 119 case BC_CODE39: |
122 case BC_CODABAR: | 120 case BC_CODABAR: |
123 case BC_CODE128: | 121 case BC_CODE128: |
124 case BC_CODE128_B: | 122 case BC_CODE128_B: |
125 case BC_CODE128_C: | 123 case BC_CODE128_C: |
126 case BC_EAN8: | 124 case BC_EAN8: |
127 case BC_EAN13: | 125 case BC_EAN13: |
128 case BC_UPCA: | 126 case BC_UPCA: |
129 return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine) | 127 return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) |
130 ->SetDataLength(length), | 128 ->SetDataLength(length), |
131 TRUE) | 129 TRUE) |
132 : FALSE; | 130 : FALSE; |
133 default: | 131 default: |
134 return FALSE; | 132 return FALSE; |
135 } | 133 } |
136 } | 134 } |
137 FX_BOOL CFX_Barcode::SetCalChecksum(int32_t state) { | 135 FX_BOOL CFX_Barcode::SetCalChecksum(int32_t state) { |
138 switch (GetType()) { | 136 switch (GetType()) { |
139 case BC_CODE39: | 137 case BC_CODE39: |
140 case BC_CODABAR: | 138 case BC_CODABAR: |
141 case BC_CODE128: | 139 case BC_CODE128: |
142 case BC_CODE128_B: | 140 case BC_CODE128_B: |
143 case BC_CODE128_C: | 141 case BC_CODE128_C: |
144 case BC_EAN8: | 142 case BC_EAN8: |
145 case BC_EAN13: | 143 case BC_EAN13: |
146 case BC_UPCA: | 144 case BC_UPCA: |
147 return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine) | 145 return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) |
148 ->SetCalChecksum(state), | 146 ->SetCalChecksum(state), |
149 TRUE) | 147 TRUE) |
150 : FALSE; | 148 : FALSE; |
151 default: | 149 default: |
152 return FALSE; | 150 return FALSE; |
153 } | 151 } |
154 } | 152 } |
155 FX_BOOL CFX_Barcode::SetFont(CFX_Font* pFont) { | 153 FX_BOOL CFX_Barcode::SetFont(CFX_Font* pFont) { |
156 switch (GetType()) { | 154 switch (GetType()) { |
157 case BC_CODE39: | 155 case BC_CODE39: |
158 case BC_CODABAR: | 156 case BC_CODABAR: |
159 case BC_CODE128: | 157 case BC_CODE128: |
160 case BC_CODE128_B: | 158 case BC_CODE128_B: |
161 case BC_CODE128_C: | 159 case BC_CODE128_C: |
162 case BC_EAN8: | 160 case BC_EAN8: |
163 case BC_EAN13: | 161 case BC_EAN13: |
164 case BC_UPCA: | 162 case BC_UPCA: |
165 return m_pBCEngine | 163 return m_pBCEngine |
166 ? static_cast<CBC_OneCode*>(m_pBCEngine)->SetFont(pFont) | 164 ? static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetFont(pFont) |
167 : FALSE; | 165 : FALSE; |
168 default: | 166 default: |
169 return FALSE; | 167 return FALSE; |
170 } | 168 } |
171 } | 169 } |
172 FX_BOOL CFX_Barcode::SetFontSize(FX_FLOAT size) { | 170 FX_BOOL CFX_Barcode::SetFontSize(FX_FLOAT size) { |
173 switch (GetType()) { | 171 switch (GetType()) { |
174 case BC_CODE39: | 172 case BC_CODE39: |
175 case BC_CODABAR: | 173 case BC_CODABAR: |
176 case BC_CODE128: | 174 case BC_CODE128: |
177 case BC_CODE128_B: | 175 case BC_CODE128_B: |
178 case BC_CODE128_C: | 176 case BC_CODE128_C: |
179 case BC_EAN8: | 177 case BC_EAN8: |
180 case BC_EAN13: | 178 case BC_EAN13: |
181 case BC_UPCA: | 179 case BC_UPCA: |
182 return m_pBCEngine | 180 return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) |
183 ? (static_cast<CBC_OneCode*>(m_pBCEngine)->SetFontSize(size), | 181 ->SetFontSize(size), |
184 TRUE) | 182 TRUE) |
185 : FALSE; | 183 : FALSE; |
186 default: | 184 default: |
187 return FALSE; | 185 return FALSE; |
188 } | 186 } |
189 } | 187 } |
190 FX_BOOL CFX_Barcode::SetFontStyle(int32_t style) { | 188 FX_BOOL CFX_Barcode::SetFontStyle(int32_t style) { |
191 switch (GetType()) { | 189 switch (GetType()) { |
192 case BC_CODE39: | 190 case BC_CODE39: |
193 case BC_CODABAR: | 191 case BC_CODABAR: |
194 case BC_CODE128: | 192 case BC_CODE128: |
195 case BC_CODE128_B: | 193 case BC_CODE128_B: |
196 case BC_CODE128_C: | 194 case BC_CODE128_C: |
197 case BC_EAN8: | 195 case BC_EAN8: |
198 case BC_EAN13: | 196 case BC_EAN13: |
199 case BC_UPCA: | 197 case BC_UPCA: |
200 return m_pBCEngine | 198 return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) |
201 ? (static_cast<CBC_OneCode*>(m_pBCEngine)->SetFontStyle(style), | 199 ->SetFontStyle(style), |
202 TRUE) | 200 TRUE) |
203 : FALSE; | 201 : FALSE; |
204 default: | 202 default: |
205 return FALSE; | 203 return FALSE; |
206 } | 204 } |
207 } | 205 } |
208 FX_BOOL CFX_Barcode::SetFontColor(FX_ARGB color) { | 206 FX_BOOL CFX_Barcode::SetFontColor(FX_ARGB color) { |
209 switch (GetType()) { | 207 switch (GetType()) { |
210 case BC_CODE39: | 208 case BC_CODE39: |
211 case BC_CODABAR: | 209 case BC_CODABAR: |
212 case BC_CODE128: | 210 case BC_CODE128: |
213 case BC_CODE128_B: | 211 case BC_CODE128_B: |
214 case BC_CODE128_C: | 212 case BC_CODE128_C: |
215 case BC_EAN8: | 213 case BC_EAN8: |
216 case BC_EAN13: | 214 case BC_EAN13: |
217 case BC_UPCA: | 215 case BC_UPCA: |
218 return m_pBCEngine | 216 return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine.get()) |
219 ? (static_cast<CBC_OneCode*>(m_pBCEngine)->SetFontColor(color), | 217 ->SetFontColor(color), |
220 TRUE) | 218 TRUE) |
221 : FALSE; | 219 : FALSE; |
222 default: | 220 default: |
223 return FALSE; | 221 return FALSE; |
224 } | 222 } |
225 } | 223 } |
226 FX_BOOL CFX_Barcode::SetTextLocation(BC_TEXT_LOC location) { | 224 FX_BOOL CFX_Barcode::SetTextLocation(BC_TEXT_LOC location) { |
227 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(BC_TEXT_LOC); | 225 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(BC_TEXT_LOC); |
228 memptrtype memptr = nullptr; | 226 memptrtype memptr = nullptr; |
229 switch (GetType()) { | 227 switch (GetType()) { |
230 case BC_CODE39: | 228 case BC_CODE39: |
231 memptr = (memptrtype)&CBC_Code39::SetTextLocation; | 229 memptr = (memptrtype)&CBC_Code39::SetTextLocation; |
232 break; | 230 break; |
233 case BC_CODABAR: | 231 case BC_CODABAR: |
234 memptr = (memptrtype)&CBC_Codabar::SetTextLocation; | 232 memptr = (memptrtype)&CBC_Codabar::SetTextLocation; |
235 break; | 233 break; |
236 case BC_CODE128: | 234 case BC_CODE128: |
237 case BC_CODE128_B: | 235 case BC_CODE128_B: |
238 case BC_CODE128_C: | 236 case BC_CODE128_C: |
239 memptr = (memptrtype)&CBC_Code128::SetTextLocation; | 237 memptr = (memptrtype)&CBC_Code128::SetTextLocation; |
240 break; | 238 break; |
241 default: | 239 default: |
242 break; | 240 break; |
243 } | 241 } |
244 return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(location) : FALSE; | 242 return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(location) : FALSE; |
245 } | 243 } |
246 FX_BOOL CFX_Barcode::SetWideNarrowRatio(int32_t ratio) { | 244 FX_BOOL CFX_Barcode::SetWideNarrowRatio(int32_t ratio) { |
247 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(int32_t); | 245 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(int32_t); |
248 memptrtype memptr = nullptr; | 246 memptrtype memptr = nullptr; |
249 switch (GetType()) { | 247 switch (GetType()) { |
250 case BC_CODE39: | 248 case BC_CODE39: |
251 memptr = (memptrtype)&CBC_Code39::SetWideNarrowRatio; | 249 memptr = (memptrtype)&CBC_Code39::SetWideNarrowRatio; |
252 break; | 250 break; |
253 case BC_CODABAR: | 251 case BC_CODABAR: |
254 memptr = (memptrtype)&CBC_Codabar::SetWideNarrowRatio; | 252 memptr = (memptrtype)&CBC_Codabar::SetWideNarrowRatio; |
255 break; | 253 break; |
256 default: | 254 default: |
257 break; | 255 break; |
258 } | 256 } |
259 return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(ratio) : FALSE; | 257 return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(ratio) : FALSE; |
260 } | 258 } |
261 FX_BOOL CFX_Barcode::SetStartChar(FX_CHAR start) { | 259 FX_BOOL CFX_Barcode::SetStartChar(FX_CHAR start) { |
262 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(FX_CHAR); | 260 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(FX_CHAR); |
263 memptrtype memptr = nullptr; | 261 memptrtype memptr = nullptr; |
264 switch (GetType()) { | 262 switch (GetType()) { |
265 case BC_CODABAR: | 263 case BC_CODABAR: |
266 memptr = (memptrtype)&CBC_Codabar::SetStartChar; | 264 memptr = (memptrtype)&CBC_Codabar::SetStartChar; |
267 break; | 265 break; |
268 default: | 266 default: |
269 break; | 267 break; |
270 } | 268 } |
271 return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(start) : FALSE; | 269 return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(start) : FALSE; |
272 } | 270 } |
273 FX_BOOL CFX_Barcode::SetEndChar(FX_CHAR end) { | 271 FX_BOOL CFX_Barcode::SetEndChar(FX_CHAR end) { |
274 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(FX_CHAR); | 272 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(FX_CHAR); |
275 memptrtype memptr = nullptr; | 273 memptrtype memptr = nullptr; |
276 switch (GetType()) { | 274 switch (GetType()) { |
277 case BC_CODABAR: | 275 case BC_CODABAR: |
278 memptr = (memptrtype)&CBC_Codabar::SetEndChar; | 276 memptr = (memptrtype)&CBC_Codabar::SetEndChar; |
279 break; | 277 break; |
280 default: | 278 default: |
281 break; | 279 break; |
282 } | 280 } |
283 return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(end) : FALSE; | 281 return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(end) : FALSE; |
284 } | 282 } |
285 FX_BOOL CFX_Barcode::SetVersion(int32_t version) { | 283 FX_BOOL CFX_Barcode::SetVersion(int32_t version) { |
286 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(int32_t); | 284 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(int32_t); |
287 memptrtype memptr = nullptr; | 285 memptrtype memptr = nullptr; |
288 switch (GetType()) { | 286 switch (GetType()) { |
289 case BC_QR_CODE: | 287 case BC_QR_CODE: |
290 memptr = (memptrtype)&CBC_QRCode::SetVersion; | 288 memptr = (memptrtype)&CBC_QRCode::SetVersion; |
291 break; | 289 break; |
292 default: | 290 default: |
293 break; | 291 break; |
294 } | 292 } |
295 return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(version) : FALSE; | 293 return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(version) : FALSE; |
296 } | 294 } |
297 FX_BOOL CFX_Barcode::SetErrorCorrectionLevel(int32_t level) { | 295 FX_BOOL CFX_Barcode::SetErrorCorrectionLevel(int32_t level) { |
298 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(int32_t); | 296 typedef FX_BOOL (CBC_CodeBase::*memptrtype)(int32_t); |
299 memptrtype memptr = nullptr; | 297 memptrtype memptr = nullptr; |
300 switch (GetType()) { | 298 switch (GetType()) { |
301 case BC_QR_CODE: | 299 case BC_QR_CODE: |
302 memptr = (memptrtype)&CBC_QRCode::SetErrorCorrectionLevel; | 300 memptr = (memptrtype)&CBC_QRCode::SetErrorCorrectionLevel; |
303 break; | 301 break; |
304 case BC_PDF417: | 302 case BC_PDF417: |
305 memptr = (memptrtype)&CBC_PDF417I::SetErrorCorrectionLevel; | 303 memptr = (memptrtype)&CBC_PDF417I::SetErrorCorrectionLevel; |
306 break; | 304 break; |
307 default: | 305 default: |
308 return FALSE; | 306 return FALSE; |
309 } | 307 } |
310 return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(level) : FALSE; | 308 return m_pBCEngine && memptr ? (m_pBCEngine.get()->*memptr)(level) : FALSE; |
311 } | 309 } |
312 FX_BOOL CFX_Barcode::SetTruncated(FX_BOOL truncated) { | 310 FX_BOOL CFX_Barcode::SetTruncated(FX_BOOL truncated) { |
313 typedef void (CBC_CodeBase::*memptrtype)(FX_BOOL); | 311 typedef void (CBC_CodeBase::*memptrtype)(FX_BOOL); |
314 memptrtype memptr = nullptr; | 312 memptrtype memptr = nullptr; |
315 switch (GetType()) { | 313 switch (GetType()) { |
316 case BC_PDF417: | 314 case BC_PDF417: |
317 memptr = (memptrtype)&CBC_PDF417I::SetTruncated; | 315 memptr = (memptrtype)&CBC_PDF417I::SetTruncated; |
318 break; | 316 break; |
319 default: | 317 default: |
320 break; | 318 break; |
321 } | 319 } |
322 return m_pBCEngine && memptr ? ((m_pBCEngine->*memptr)(truncated), TRUE) | 320 return m_pBCEngine && memptr ? ((m_pBCEngine.get()->*memptr)(truncated), TRUE) |
323 : FALSE; | 321 : FALSE; |
324 } | 322 } |
325 | 323 |
326 FX_BOOL CFX_Barcode::Encode(const CFX_WideStringC& contents, | 324 FX_BOOL CFX_Barcode::Encode(const CFX_WideStringC& contents, |
327 FX_BOOL isDevice, | 325 FX_BOOL isDevice, |
328 int32_t& e) { | 326 int32_t& e) { |
329 if (!m_pBCEngine) { | 327 return m_pBCEngine && m_pBCEngine->Encode(contents, isDevice, e); |
330 return FALSE; | |
331 } | |
332 return m_pBCEngine->Encode(contents, isDevice, e); | |
333 } | 328 } |
| 329 |
334 FX_BOOL CFX_Barcode::RenderDevice(CFX_RenderDevice* device, | 330 FX_BOOL CFX_Barcode::RenderDevice(CFX_RenderDevice* device, |
335 const CFX_Matrix* matrix, | 331 const CFX_Matrix* matrix, |
336 int32_t& e) { | 332 int32_t& e) { |
337 if (!m_pBCEngine) { | 333 return m_pBCEngine && m_pBCEngine->RenderDevice(device, matrix, e); |
338 return FALSE; | |
339 } | |
340 return m_pBCEngine->RenderDevice(device, matrix, e); | |
341 } | 334 } |
| 335 |
342 FX_BOOL CFX_Barcode::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) { | 336 FX_BOOL CFX_Barcode::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) { |
343 if (!m_pBCEngine) { | 337 return m_pBCEngine && m_pBCEngine->RenderBitmap(pOutBitmap, e); |
344 return FALSE; | |
345 } | |
346 return m_pBCEngine->RenderBitmap(pOutBitmap, e); | |
347 } | 338 } |
OLD | NEW |