1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved.
2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file.
4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/foxitlib.h"
8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fwl/src/basewidget/include/fxmath_barcodeimp.h"
9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstatic CBC_CodeBase* FX_Barcode_CreateBarCodeEngineObject(BC_TYPE type) {
10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (type) {
11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_Code39();
13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_Codabar();
15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_Code128(BC_CODE128_B);
17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_Code128(BC_CODE128_B);
19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_Code128(BC_CODE128_C);
21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN8:
22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_EAN8();
23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UPCA:
24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_UPCA();
25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN13:
26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_EAN13();
27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_QR_CODE:
28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_QRCode();
29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_PDF417:
30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_PDF417I();
31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_DATAMATRIX:
32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return new CBC_DataMatrix();
33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UNKNOWN:
34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return NULL;
36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_Barcode::CFX_Barcode() {}
39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_Barcode::~CFX_Barcode() {
40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  if (m_pBCEngine) {
41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    delete m_pBCEngine;
42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    m_pBCEngine = NULL;
43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::Crreate(BC_TYPE type) {
46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_pBCEngine = FX_Barcode_CreateBarCodeEngineObject(type);
47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine != NULL;
48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CFX_Barcode::Release() {
50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  delete this;
51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannBC_TYPE CFX_Barcode::GetType() {
53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine ? m_pBCEngine->GetType() : BC_UNKNOWN;
54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetCharEncoding(BC_CHAR_ENCODING encoding) {
56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine ? m_pBCEngine->SetCharEncoding(encoding) : FALSE;
57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetModuleHeight(int32_t moduleHeight) {
59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine ? m_pBCEngine->SetModuleHeight(moduleHeight) : FALSE;
60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetModuleWidth(int32_t moduleWidth) {
62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine ? m_pBCEngine->SetModuleWidth(moduleWidth) : FALSE;
63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetHeight(int32_t height) {
65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine ? m_pBCEngine->SetHeight(height) : FALSE;
66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetWidth(int32_t width) {
68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine ? m_pBCEngine->SetWidth(width) : FALSE;
69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::CheckContentValidity(const CFX_WideStringC& contents) {
71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN8:
78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN13:
79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UPCA:
80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return m_pBCEngine
81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 ? static_cast<CBC_OneCode*>(m_pBCEngine)
82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                       ->CheckContentValidity(contents)
83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 : TRUE;
84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return TRUE;
86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetPrintChecksum(FX_BOOL checksum) {
89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN8:
96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN13:
97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UPCA:
98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine)
99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                ->SetPrintChecksum(checksum),
100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                            TRUE)
101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                         : FALSE;
102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return FALSE;
104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetDataLength(int32_t length) {
107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN8:
114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN13:
115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UPCA:
116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine)
117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                ->SetDataLength(length),
118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                            TRUE)
119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                         : FALSE;
120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return FALSE;
122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetCalChecksum(int32_t state) {
125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN8:
132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN13:
133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UPCA:
134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return m_pBCEngine ? (static_cast<CBC_OneCode*>(m_pBCEngine)
135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                ->SetCalChecksum(state),
136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                            TRUE)
137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                         : FALSE;
138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return FALSE;
140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetFont(CFX_Font* pFont) {
143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN8:
150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN13:
151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UPCA:
152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return m_pBCEngine
153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 ? static_cast<CBC_OneCode*>(m_pBCEngine)->SetFont(pFont)
154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 : FALSE;
155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return FALSE;
157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetFontSize(FX_FLOAT size) {
160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN8:
167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN13:
168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UPCA:
169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return m_pBCEngine
170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 ? (static_cast<CBC_OneCode*>(m_pBCEngine)->SetFontSize(size),
171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                    TRUE)
172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 : FALSE;
173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return FALSE;
175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetFontStyle(int32_t style) {
178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN8:
185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN13:
186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UPCA:
187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return m_pBCEngine
188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 ? (static_cast<CBC_OneCode*>(m_pBCEngine)->SetFontStyle(style),
189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                    TRUE)
190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 : FALSE;
191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return FALSE;
193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetFontColor(FX_ARGB color) {
196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN8:
203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_EAN13:
204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_UPCA:
205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return m_pBCEngine
206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 ? (static_cast<CBC_OneCode*>(m_pBCEngine)->SetFontColor(color),
207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                    TRUE)
208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                 : FALSE;
209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return FALSE;
211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetTextLocation(BC_TEXT_LOC location) {
214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  typedef FX_BOOL (CBC_CodeBase::*memptrtype)(BC_TEXT_LOC);
215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  memptrtype memptr = NULL;
216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_Code39::SetTextLocation;
219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
220ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_Codabar::SetTextLocation;
222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128:
224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_B:
225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE128_C:
226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_Code128::SetTextLocation;
227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
230ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(location) : FALSE;
232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetWideNarrowRatio(int32_t ratio) {
234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  typedef FX_BOOL (CBC_CodeBase::*memptrtype)(int32_t);
235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  memptrtype memptr = NULL;
236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODE39:
238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_Code39::SetWideNarrowRatio;
239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_Codabar::SetWideNarrowRatio;
242ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
244ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(ratio) : FALSE;
247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetStartChar(FX_CHAR start) {
249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  typedef FX_BOOL (CBC_CodeBase::*memptrtype)(FX_CHAR);
250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  memptrtype memptr = NULL;
251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_Codabar::SetStartChar;
254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(start) : FALSE;
259ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
260ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetEndChar(FX_CHAR end) {
261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  typedef FX_BOOL (CBC_CodeBase::*memptrtype)(FX_CHAR);
262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  memptrtype memptr = NULL;
263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_CODABAR:
265ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_Codabar::SetEndChar;
266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
268ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
269ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
270ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(end) : FALSE;
271ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
272ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetVersion(int32_t version) {
273ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  typedef FX_BOOL (CBC_CodeBase::*memptrtype)(int32_t);
274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  memptrtype memptr = NULL;
275ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
276ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_QR_CODE:
277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_QRCode::SetVersion;
278ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(version) : FALSE;
283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetErrorCorrectionLevel(int32_t level) {
285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  typedef FX_BOOL (CBC_CodeBase::*memptrtype)(int32_t);
286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  memptrtype memptr = NULL;
287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_QR_CODE:
289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_QRCode::SetErrorCorrectionLevel;
290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
291ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_PDF417:
292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_PDF417I::SetErrorCorrectionLevel;
293ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return FALSE;
296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine && memptr ? (m_pBCEngine->*memptr)(level) : FALSE;
298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::SetTruncated(FX_BOOL truncated) {
300ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  typedef void (CBC_CodeBase::*memptrtype)(FX_BOOL);
301ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  memptrtype memptr = NULL;
302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  switch (GetType()) {
303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    case BC_PDF417:
304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      memptr = (memptrtype)&CBC_PDF417I::SetTruncated;
305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
306ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    default:
307ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      break;
308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
309ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine && memptr ? ((m_pBCEngine->*memptr)(truncated), TRUE)
310ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                               : FALSE;
311ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef BCExceptionNO
313ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define BCExceptionNO 0
314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif
315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef BCExceptionFormatException
316ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define BCExceptionFormatException 8
317ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif
318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef BCExceptionUnSupportedBarcode
319ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define BCExceptionUnSupportedBarcode 18
320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif
321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::Encode(const CFX_WideStringC& contents,
322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                            FX_BOOL isDevice,
323ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                            int32_t& e) {
324ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  if (!m_pBCEngine) {
325ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    return FALSE;
326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine->Encode(contents, isDevice, e);
328ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
329ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::RenderDevice(CFX_RenderDevice* device,
330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                  const CFX_Matrix* matirx,
331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                  int32_t& e) {
332ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  if (!m_pBCEngine) {
333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    return FALSE;
334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine->RenderDevice(device, matirx, e);
336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CFX_Barcode::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) {
338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  if (!m_pBCEngine) {
339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    return FALSE;
340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pBCEngine->RenderBitmap(pOutBitmap, e);
342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define BC_TYPE_MIN BC_CODE39
344ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define BC_TYPE_MAX BC_DATAMATRIX
345ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_WideString CFX_Barcode::Decode(uint8_t* buf,
346ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                   int32_t width,
347ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                   int32_t height,
348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                   int32_t& errorCode) {
349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  for (BC_TYPE t = BC_TYPE_MIN; t <= BC_TYPE_MAX;
350ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann       t = (BC_TYPE)((int32_t)t + 1)) {
351ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    CBC_CodeBase* pTmpEngine = FX_Barcode_CreateBarCodeEngineObject(t);
352ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    if (!pTmpEngine) {
353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      continue;
354ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    }
355ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    CFX_WideString ret = pTmpEngine->Decode(buf, width, height, errorCode);
356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    if (errorCode == BCExceptionNO) {
357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return ret;
358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    }
359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
360ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  errorCode = BCExceptionUnSupportedBarcode;
361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return CFX_WideString();
362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_WideString CFX_Barcode::Decode(CFX_DIBitmap* pBitmap, int32_t& errorCode) {
364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  for (BC_TYPE t = BC_TYPE_MIN; t <= BC_TYPE_MAX;
365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann       t = (BC_TYPE)((int32_t)t + 1)) {
366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    CBC_CodeBase* pTmpEngine = FX_Barcode_CreateBarCodeEngineObject(t);
367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    if (!pTmpEngine) {
368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      continue;
369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    }
370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    CFX_WideString ret = pTmpEngine->Decode(pBitmap, errorCode);
371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    if (errorCode == BCExceptionNO) {
372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      return ret;
373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    }
374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  errorCode = BCExceptionUnSupportedBarcode;
376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return CFX_WideString();
377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFX_Barcode* FX_Barcode_Create(BC_TYPE type) {
379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Barcode* pBarcode = new CFX_Barcode;
380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  if (pBarcode->Crreate(type)) {
381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann    return pBarcode;
382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  }
383ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  pBarcode->Release();
384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return NULL;
385ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}
386