CVB++ 15.0
decl_config_2d_codes.hpp
1#pragma once
2
3#include "../../_cexports/c_code_reader.h"
4
5namespace Cvb
6{
7 CVB_BEGIN_INLINE_NS
8
9 namespace CodeReader
10 {
11 class Decoder;
12
13 namespace Config
14 {
15#pragma region DataMatrix
17
35 class DataMatrix final : public ConfigBase<DataMatrix>
36 {
37 friend class Cvb::CodeReader::Decoder;
38
39 public:
41
46
48
52
54
59
61
64 bool IsMirroringEnabled() const;
65
67
72
74
78
80
86 DataMatrix &SetMinimumSize(int size);
87
89
93 int MinimumSize() const;
94
96
102 DataMatrix &SetMaximumSize(int size);
103
105
109 int MaximumSize() const;
110
112
119
121
125 int MinNumberModules() const;
126
128
135
137
141 int MaxNumberModules() const;
142
144
150 DataMatrix &SetMaxModuleSize(int size);
151
153
157 int MaxModuleSize() const;
158
160
167
169
173 int MaxLineFilterSize() const;
174
175 private:
176 using ConfigBase<DataMatrix>::ConfigBase;
177
178 enum class Properties
179 {
180 Rect = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_Rect,
181 RectExtended = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_RectExtended,
182 Polarity = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_Polarity,
183 Mirror = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_Mirror,
184 MinSize = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_MinimumSize,
185 MaxSize = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_MaximumSize,
186 MinNumModules = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_MinNumModule,
187 MaxNumModules = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_MaxNumModule,
188 MaxModuleSize = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_MaxModuleSize,
189 MaxLineFilterSize = CExports::CVCRSymbologyPropertiesDataMatrix::CVCRSPDM_MaxLineFilterSize
190 };
191 };
192
193 template <>
194 struct Mapper<Symbology::DataMatrix>
195 {
196 using Type = Config::DataMatrix;
197 };
198
199 template <>
200 struct ReverseMapper<Config::DataMatrix>
201 {
202 static constexpr Symbology type = Symbology::DataMatrix;
203 };
204#pragma endregion
205
206#pragma region QR and MicroQR
208
223 class QR : public ConfigBase<QR>
224 {
225 friend class Cvb::CodeReader::Decoder;
226
227 public:
229
233 QR &SetPolarity(Polarity value);
234
236
240
242
246 QR &SetMirroringEnabled(bool value);
247
249
252 bool IsMirroringEnabled() const;
253
255
262 QR &SetPreciseCornersEnabled(bool value);
263
265
268 bool IsPreciseCornersEnabled() const;
269
270 protected:
271 QR(Decoder &decoder) noexcept
272 : ConfigBase<QR>(decoder)
273 {
274 }
275
276 enum class Properties
277 {
278 Polarity = CExports::CVCRSymbologyPropertiesQR::CVCRSPQR_Polarity,
279 Mirror = CExports::CVCRSymbologyPropertiesQR::CVCRSPQR_Mirror,
280 PreciseCorner = CExports::CVCRSymbologyPropertiesQR::CVCRSPQR_PreciseCornerQR
281 };
282 };
283
284 template <>
285 struct Mapper<Symbology::QR>
286 {
287 using Type = Config::QR;
288 };
289
290 template <>
291 struct ReverseMapper<Config::QR>
292 {
293 static constexpr Symbology type = Symbology::QR;
294 };
295
297
312 class MicroQR final : public QR
313 {
314 friend class Cvb::CodeReader::Decoder;
315
316 private:
317 MicroQR(Decoder &decoder) noexcept
318 : QR(decoder)
319 {
320 }
321
322 public:
324
327 bool Enabled() const;
328
330
339 MicroQR &Enable();
340
342
345 MicroQR &Disable();
346 };
347
348 template <>
349 struct Mapper<Symbology::MicroQR>
350 {
351 using Type = Config::MicroQR;
352 };
353
354 template <>
355 struct ReverseMapper<Config::MicroQR>
356 {
357 static constexpr Symbology type = Symbology::MicroQR;
358 };
359#pragma endregion
360
361#pragma region Pdf417 and MicroPdf417
363
378 class Pdf417 final : public ConfigBase<Pdf417>
379 {
380 friend class Cvb::CodeReader::Decoder;
381
382 private:
383 Pdf417(Decoder &decoder) noexcept
384 : ConfigBase<Pdf417>(decoder)
385 {
386 }
387 };
388
389 template <>
390 struct Mapper<Symbology::Pdf417>
391 {
392 using Type = Config::Pdf417;
393 };
394
395 template <>
396 struct ReverseMapper<Config::Pdf417>
397 {
398 static constexpr Symbology type = Symbology::Pdf417;
399 };
400
402
417 class MicroPdf417 final : public ConfigBase<MicroPdf417>
418 {
419 friend class Cvb::CodeReader::Decoder;
420
421 private:
422 MicroPdf417(Decoder &decoder) noexcept
423 : ConfigBase<MicroPdf417>(decoder)
424 {
425 }
426 };
427
428 template <>
429 struct Mapper<Symbology::MicroPdf417>
430 {
431 using Type = Config::MicroPdf417;
432 };
433
434 template <>
435 struct ReverseMapper<Config::MicroPdf417>
436 {
437 static constexpr Symbology type = Symbology::MicroPdf417;
438 };
439#pragma endregion
440
441 } // namespace Config
442 } // namespace CodeReader
443
444 CVB_END_INLINE_NS
445} // namespace Cvb
Configuration class for Data Matrix codes.
Definition decl_config_2d_codes.hpp:36
DataMatrix & SetMirroringEnabled(bool value)
Enables or disables mirroring based on the given value.
Definition detail_config_2d_codes.hpp:21
int MaxNumberModules() const
Gets the maximum number of Data Matrix column modules.
Definition detail_config_2d_codes.hpp:103
DataMatrix & SetMinimumSize(int size)
Sets the minimum Data Matrix size.
Definition detail_config_2d_codes.hpp:68
Config::RectangularDecoding RectangularDecoding() const
Gets the currently configured rectangular decoding mode.
Definition detail_config_2d_codes.hpp:50
int MaximumSize() const
Gets the maximum Data Matrix size.
Definition detail_config_2d_codes.hpp:83
DataMatrix & SetMaximumSize(int size)
Sets the maximum Data Matrix size.
Definition detail_config_2d_codes.hpp:78
int MinNumberModules() const
Gets the minimum number of Data Matrix column modules.
Definition detail_config_2d_codes.hpp:93
DataMatrix & SetMinNumberModules(int value)
Sets the minimum number of Data Matrix column modules.
Definition detail_config_2d_codes.hpp:88
bool IsMirroringEnabled() const
Checks whether mirroring is enabled.
Definition detail_config_2d_codes.hpp:26
DataMatrix & SetPolarity(Polarity value)
Sets polarity mode for decoding.
Definition detail_config_2d_codes.hpp:11
Config::Polarity Polarity() const
Gets the currently configured polarity mode.
Definition detail_config_2d_codes.hpp:16
int MaxLineFilterSize() const
Gets the maximum line filter size in pixels.
Definition detail_config_2d_codes.hpp:123
DataMatrix & SetMaxLineFilterSize(int size)
Sets the maximum line filter size in pixels.
Definition detail_config_2d_codes.hpp:118
DataMatrix & SetMaxNumberModules(int value)
Sets the maximum number of Data Matrix column modules.
Definition detail_config_2d_codes.hpp:98
DataMatrix & SetRectangularDecoding(RectangularDecoding value)
Configures the rectangular decoding mode.
Definition detail_config_2d_codes.hpp:31
DataMatrix & SetMaxModuleSize(int size)
Sets the maximum module size of Data Matrix in pixels.
Definition detail_config_2d_codes.hpp:108
int MaxModuleSize() const
Gets the maximum module size of Data Matrix in pixels.
Definition detail_config_2d_codes.hpp:113
int MinimumSize() const
Gets the minimum Data Matrix size.
Definition detail_config_2d_codes.hpp:73
Configuration class for MicroPDF417 codes.
Definition decl_config_2d_codes.hpp:418
Configuration class for Micro QR codes.
Definition decl_config_2d_codes.hpp:313
bool Enabled() const
Checks if decoding for MicroQR codes is enabled.
Definition detail_config_2d_codes.hpp:174
MicroQR & Enable()
Enables decoding for the MicroQR codes.
Definition detail_config_2d_codes.hpp:160
MicroQR & Disable()
Disables decoding for MicroQR codes.
Definition detail_config_2d_codes.hpp:167
Configuration class for PDF417 codes.
Definition decl_config_2d_codes.hpp:379
Configuration class for QR codes.
Definition decl_config_2d_codes.hpp:224
QR & SetMirroringEnabled(bool value)
Enables or disables mirroring based on the given value.
Definition detail_config_2d_codes.hpp:140
bool IsMirroringEnabled() const
Check whether mirroring is enabled.
Definition detail_config_2d_codes.hpp:145
bool IsPreciseCornersEnabled() const
Check whether the calculation of more precise corner coordinates is enabled.
Definition detail_config_2d_codes.hpp:155
QR & SetPolarity(Polarity value)
Sets polarity mode for decoding.
Definition detail_config_2d_codes.hpp:130
Config::Polarity Polarity() const
Gets the currently configured polarity mode.
Definition detail_config_2d_codes.hpp:135
QR & SetPreciseCornersEnabled(bool value)
Enables or disables the calculation of more precise corner coordinates.
Definition detail_config_2d_codes.hpp:150
Class for decoding.
Definition decl_decoder.hpp:101
This namespace contains the configuration classes for all supported codes.
Definition decl_config_2d_codes.hpp:14
Polarity
Enumeration of code polarity options for 2D codes.
Definition decl_config_base.hpp:184
RectangularDecoding
Enumeration for rectangular decoding modes for DataMatrix codes.
Definition decl_config_base.hpp:195
Namespace for all decoding functionalities.
Definition decl_config_2d_codes.hpp:10
Symbology
Enum class listing all supported symbologies.
Definition decl_config_base.hpp:35
@ MicroQR
Micro QR code.
Definition decl_config_base.hpp:52
@ QR
QR code.
Definition decl_config_base.hpp:47
@ Pdf417
PDF417.
Definition decl_config_base.hpp:97
@ MicroPdf417
MicroPDF417.
Definition decl_config_base.hpp:102
@ DataMatrix
Data Matrix.
Definition decl_config_base.hpp:42
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17