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 "core/fxcrt/notreached.h"
12#include "core/fxcrt/ptr_util.h"
13#include "fxbarcode/cbc_codabar.h"
14#include "fxbarcode/cbc_code128.h"
15#include "fxbarcode/cbc_code39.h"
16#include "fxbarcode/cbc_codebase.h"
17#include "fxbarcode/cbc_datamatrix.h"
18#include "fxbarcode/cbc_ean13.h"
19#include "fxbarcode/cbc_ean8.h"
20#include "fxbarcode/cbc_pdf417i.h"
21#include "fxbarcode/cbc_qrcode.h"
22#include "fxbarcode/cbc_upca.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 }
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
72bool CFX_Barcode::SetModuleHeight(int32_t moduleHeight) {
73 return m_pBCEngine && m_pBCEngine->SetModuleHeight(moduleHeight);
74}
75
76bool CFX_Barcode::SetModuleWidth(int32_t moduleWidth) {
77 return m_pBCEngine && m_pBCEngine->SetModuleWidth(moduleWidth);
78}
79
80void CFX_Barcode::SetHeight(int32_t height) {
81 if (m_pBCEngine)
82 m_pBCEngine->SetHeight(height);
83}
84
85void CFX_Barcode::SetWidth(int32_t width) {
86 if (m_pBCEngine)
87 m_pBCEngine->SetWidth(width);
88}
89
90bool CFX_Barcode::SetPrintChecksum(bool checksum) {
91 if (!m_pBCEngine)
92 return false;
93
94 switch (GetType()) {
95 case BC_TYPE::kCode39:
96 case BC_TYPE::kCodabar:
97 case BC_TYPE::kCode128:
98 case BC_TYPE::kCode128B:
99 case BC_TYPE::kCode128C:
100 case BC_TYPE::kEAN8:
101 case BC_TYPE::kEAN13:
102 case BC_TYPE::kUPCA:
103 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetPrintChecksum(checksum);
104 return true;
105 default:
106 return false;
107 }
108}
109
110bool CFX_Barcode::SetDataLength(int32_t length) {
111 if (!m_pBCEngine)
112 return false;
113
114 switch (GetType()) {
115 case BC_TYPE::kCode39:
116 case BC_TYPE::kCodabar:
117 case BC_TYPE::kCode128:
118 case BC_TYPE::kCode128B:
119 case BC_TYPE::kCode128C:
120 case BC_TYPE::kEAN8:
121 case BC_TYPE::kEAN13:
122 case BC_TYPE::kUPCA:
123 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetDataLength(length);
124 return true;
125 default:
126 return false;
127 }
128}
129
130bool CFX_Barcode::SetCalChecksum(bool state) {
131 if (!m_pBCEngine)
132 return false;
133
134 switch (GetType()) {
135 case BC_TYPE::kCode39:
136 case BC_TYPE::kCodabar:
137 case BC_TYPE::kCode128:
138 case BC_TYPE::kCode128B:
139 case BC_TYPE::kCode128C:
140 case BC_TYPE::kEAN8:
141 case BC_TYPE::kEAN13:
142 case BC_TYPE::kUPCA:
143 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetCalChecksum(state);
144 return true;
145 default:
146 return false;
147 }
148}
149
151 if (!m_pBCEngine)
152 return false;
153
154 switch (GetType()) {
155 case BC_TYPE::kCode39:
156 case BC_TYPE::kCodabar:
157 case BC_TYPE::kCode128:
158 case BC_TYPE::kCode128B:
159 case BC_TYPE::kCode128C:
160 case BC_TYPE::kEAN8:
161 case BC_TYPE::kEAN13:
162 case BC_TYPE::kUPCA:
163 return static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetFont(pFont);
164 default:
165 return false;
166 }
167}
168
169bool CFX_Barcode::SetFontSize(float size) {
170 if (!m_pBCEngine)
171 return false;
172
173 switch (GetType()) {
174 case BC_TYPE::kCode39:
175 case BC_TYPE::kCodabar:
176 case BC_TYPE::kCode128:
177 case BC_TYPE::kCode128B:
178 case BC_TYPE::kCode128C:
179 case BC_TYPE::kEAN8:
180 case BC_TYPE::kEAN13:
181 case BC_TYPE::kUPCA:
182 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetFontSize(size);
183 return true;
184 default:
185 return false;
186 }
187}
188
190 if (!m_pBCEngine)
191 return false;
192
193 switch (GetType()) {
194 case BC_TYPE::kCode39:
195 case BC_TYPE::kCodabar:
196 case BC_TYPE::kCode128:
197 case BC_TYPE::kCode128B:
198 case BC_TYPE::kCode128C:
199 case BC_TYPE::kEAN8:
200 case BC_TYPE::kEAN13:
201 case BC_TYPE::kUPCA:
202 static_cast<CBC_OneCode*>(m_pBCEngine.get())->SetFontColor(color);
203 return true;
204 default:
205 return false;
206 }
207}
208
210 if (m_pBCEngine)
211 m_pBCEngine->SetTextLocation(location);
212}
213
214bool CFX_Barcode::SetWideNarrowRatio(int8_t ratio) {
215 return m_pBCEngine && m_pBCEngine->SetWideNarrowRatio(ratio);
216}
217
218bool CFX_Barcode::SetStartChar(char start) {
219 return m_pBCEngine && m_pBCEngine->SetStartChar(start);
220}
221
222bool CFX_Barcode::SetEndChar(char end) {
223 return m_pBCEngine && m_pBCEngine->SetEndChar(end);
224}
225
227 return m_pBCEngine && m_pBCEngine->SetErrorCorrectionLevel(level);
228}
229
231 return m_pBCEngine && m_pBCEngine->Encode(contents);
232}
233
235 const CFX_Matrix& matrix) {
236 return m_pBCEngine && m_pBCEngine->RenderDevice(device, matrix);
237}
BC_TEXT_LOC
Definition BC_Library.h:12
BC_TYPE
Definition BC_Library.h:20
@ kCode128C
Definition BC_Library.h:26
@ kDataMatrix
Definition BC_Library.h:32
@ kCode128B
Definition BC_Library.h:25
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)
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)
uint32_t FX_ARGB
Definition fx_dib.h:36
#define NOTREACHED_NORETURN()
Definition notreached.h:22
fxcrt::WideStringView WideStringView