Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cfx_barcode.cpp
Go to the documentation of this file.
1// Copyright 2014 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#include "fxbarcode/cfx_barcode.h"
8
9#include <memory>
10
11#include "fxbarcode/cbc_codabar.h"
12#include "fxbarcode/cbc_code128.h"
13#include "fxbarcode/cbc_code39.h"
14#include "fxbarcode/cbc_codebase.h"
15#include "fxbarcode/cbc_datamatrix.h"
16#include "fxbarcode/cbc_ean13.h"
17#include "fxbarcode/cbc_ean8.h"
18#include "fxbarcode/cbc_pdf417i.h"
19#include "fxbarcode/cbc_qrcode.h"
20#include "fxbarcode/cbc_upca.h"
21#include "third_party/base/memory/ptr_util.h"
22#include "third_party/base/notreached.h"
23
24namespace {
25
26std::unique_ptr<CBC_CodeBase> CreateBarCodeEngineObject(BC_TYPE type) {
27 switch (type) {
29 return std::make_unique<CBC_Code39>();
31 return std::make_unique<CBC_Codabar>();
33 return std::make_unique<CBC_Code128>(BC_TYPE::kCode128B);
35 return std::make_unique<CBC_Code128>(BC_TYPE::kCode128B);
37 return std::make_unique<CBC_Code128>(BC_TYPE::kCode128C);
38 case BC_TYPE::kEAN8:
39 return std::make_unique<CBC_EAN8>();
40 case BC_TYPE::kUPCA:
41 return std::make_unique<CBC_UPCA>();
42 case BC_TYPE::kEAN13:
43 return std::make_unique<CBC_EAN13>();
45 return std::make_unique<CBC_QRCode>();
47 return std::make_unique<CBC_PDF417I>();
49 return std::make_unique<CBC_DataMatrix>();
51 return nullptr;
52 }
53 NOTREACHED_NORETURN();
54}
55
56} // namespace
57
58CFX_Barcode::CFX_Barcode() = default;
59
60CFX_Barcode::~CFX_Barcode() = default;
61
62std::unique_ptr<CFX_Barcode> CFX_Barcode::Create(BC_TYPE type) {
63 auto barcode = pdfium::WrapUnique(new CFX_Barcode()); // Private ctor.
64 barcode->m_pBCEngine = CreateBarCodeEngineObject(type);
65 return barcode;
66}
67
69 return m_pBCEngine ? m_pBCEngine->GetType() : BC_TYPE::kUnknown;
70}
71
73 if (m_pBCEngine)
74 m_pBCEngine->SetCharEncoding(encoding);
75}
76
77bool CFX_Barcode::SetModuleHeight(int32_t moduleHeight) {
78 return m_pBCEngine && m_pBCEngine->SetModuleHeight(moduleHeight);
79}
80
81bool CFX_Barcode::SetModuleWidth(int32_t moduleWidth) {
82 return m_pBCEngine && m_pBCEngine->SetModuleWidth(moduleWidth);
83}
84
85void CFX_Barcode::SetHeight(int32_t height) {
86 if (m_pBCEngine)
87 m_pBCEngine->SetHeight(height);
88}
89
90void CFX_Barcode::SetWidth(int32_t width) {
91 if (m_pBCEngine)
92 m_pBCEngine->SetWidth(width);
93}
94
95bool CFX_Barcode::SetPrintChecksum(bool checksum) {
96 if (!m_pBCEngine)
97 return false;
98
99 switch (GetType()) {
100 case BC_TYPE::kCode39:
101 case BC_TYPE::kCodabar:
102 case BC_TYPE::kCode128:
103 case BC_TYPE::kCode128B:
104 case BC_TYPE::kCode128C:
105 case BC_TYPE::kEAN8:
106 case BC_TYPE::kEAN13:
107 case BC_TYPE::kUPCA:
108 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetPrintChecksum(checksum);
109 return true;
110 default:
111 return false;
112 }
113}
114
115bool CFX_Barcode::SetDataLength(int32_t length) {
116 if (!m_pBCEngine)
117 return false;
118
119 switch (GetType()) {
120 case BC_TYPE::kCode39:
121 case BC_TYPE::kCodabar:
122 case BC_TYPE::kCode128:
123 case BC_TYPE::kCode128B:
124 case BC_TYPE::kCode128C:
125 case BC_TYPE::kEAN8:
126 case BC_TYPE::kEAN13:
127 case BC_TYPE::kUPCA:
128 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetDataLength(length);
129 return true;
130 default:
131 return false;
132 }
133}
134
135bool CFX_Barcode::SetCalChecksum(bool state) {
136 if (!m_pBCEngine)
137 return false;
138
139 switch (GetType()) {
140 case BC_TYPE::kCode39:
141 case BC_TYPE::kCodabar:
142 case BC_TYPE::kCode128:
143 case BC_TYPE::kCode128B:
144 case BC_TYPE::kCode128C:
145 case BC_TYPE::kEAN8:
146 case BC_TYPE::kEAN13:
147 case BC_TYPE::kUPCA:
148 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetCalChecksum(state);
149 return true;
150 default:
151 return false;
152 }
153}
154
156 if (!m_pBCEngine)
157 return false;
158
159 switch (GetType()) {
160 case BC_TYPE::kCode39:
161 case BC_TYPE::kCodabar:
162 case BC_TYPE::kCode128:
163 case BC_TYPE::kCode128B:
164 case BC_TYPE::kCode128C:
165 case BC_TYPE::kEAN8:
166 case BC_TYPE::kEAN13:
167 case BC_TYPE::kUPCA:
168 return static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetFont(pFont);
169 default:
170 return false;
171 }
172}
173
174bool CFX_Barcode::SetFontSize(float size) {
175 if (!m_pBCEngine)
176 return false;
177
178 switch (GetType()) {
179 case BC_TYPE::kCode39:
180 case BC_TYPE::kCodabar:
181 case BC_TYPE::kCode128:
182 case BC_TYPE::kCode128B:
183 case BC_TYPE::kCode128C:
184 case BC_TYPE::kEAN8:
185 case BC_TYPE::kEAN13:
186 case BC_TYPE::kUPCA:
187 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetFontSize(size);
188 return true;
189 default:
190 return false;
191 }
192}
193
194bool CFX_Barcode::SetFontColor(FX_ARGB color) {
195 if (!m_pBCEngine)
196 return false;
197
198 switch (GetType()) {
199 case BC_TYPE::kCode39:
200 case BC_TYPE::kCodabar:
201 case BC_TYPE::kCode128:
202 case BC_TYPE::kCode128B:
203 case BC_TYPE::kCode128C:
204 case BC_TYPE::kEAN8:
205 case BC_TYPE::kEAN13:
206 case BC_TYPE::kUPCA:
207 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetFontColor(color);
208 return true;
209 default:
210 return false;
211 }
212}
213
215 if (m_pBCEngine)
216 m_pBCEngine->SetTextLocation(location);
217}
218
219bool CFX_Barcode::SetWideNarrowRatio(int8_t ratio) {
220 return m_pBCEngine && m_pBCEngine->SetWideNarrowRatio(ratio);
221}
222
223bool CFX_Barcode::SetStartChar(char start) {
224 return m_pBCEngine && m_pBCEngine->SetStartChar(start);
225}
226
227bool CFX_Barcode::SetEndChar(char end) {
228 return m_pBCEngine && m_pBCEngine->SetEndChar(end);
229}
230
232 return m_pBCEngine && m_pBCEngine->SetErrorCorrectionLevel(level);
233}
234
235bool CFX_Barcode::Encode(WideStringView contents) {
236 return m_pBCEngine && m_pBCEngine->Encode(contents);
237}
238
240 const CFX_Matrix& matrix) {
241 return m_pBCEngine && m_pBCEngine->RenderDevice(device, matrix);
242}
BC_TEXT_LOC
Definition BC_Library.h:12
BC_TYPE
Definition BC_Library.h:25
BC_CHAR_ENCODING
Definition BC_Library.h:20
bool SetEndChar(char end)
bool SetModuleWidth(int32_t moduleWidth)
bool SetStartChar(char start)
bool SetPrintChecksum(bool checksum)
void SetTextLocation(BC_TEXT_LOC location)
void SetHeight(int32_t height)
bool SetErrorCorrectionLevel(int32_t level)
bool SetModuleHeight(int32_t moduleHeight)
bool SetCalChecksum(bool state)
bool SetDataLength(int32_t length)
bool SetFont(CFX_Font *pFont)
void SetCharEncoding(BC_CHAR_ENCODING encoding)
bool Encode(WideStringView contents)
BC_TYPE GetType()
bool SetFontSize(float size)
void SetWidth(int32_t width)
bool SetFontColor(FX_ARGB color)
bool RenderDevice(CFX_RenderDevice *device, const CFX_Matrix &matrix)
bool SetWideNarrowRatio(int8_t ratio)