CVB++ 15.0
decl_symbology_conversion.hpp
1#pragma once
2
3#include <unordered_map>
4
5#include "../../_cexports/c_code_reader.h"
6#include "decl_config_base.hpp"
7
8namespace Cvb
9{
10 CVB_BEGIN_INLINE_NS
11
12 namespace CodeReader
13 {
14 namespace SymbologyConversion
15 {
16
17 template <class T1, class T2>
18 T2 Convert(T1 symbolType, const std::unordered_map<T1, T2> &symbologyMap)
19 {
20 auto symbol = std::find_if(symbologyMap.begin(), symbologyMap.end(),
21 [symbolType](const auto &symbol) { return symbolType & symbol.first; });
22
23 return symbol != symbologyMap.end() ? symbol->second : static_cast<T2>(0);
24 }
25
26 inline Symbology Convert(CExports::CVCRValueSymbology symbolType)
27 {
28 const std::unordered_map<CExports::CVCRValueSymbology, Symbology> symbologyMap = {
29 {CExports::CVCRValueSymbology::CVCRVS_Code128, Symbology::Code128},
30 {CExports::CVCRValueSymbology::CVCRVS_Code39, Symbology::Code39},
31 {CExports::CVCRValueSymbology::CVCRVS_Code93, Symbology::Code93},
32 {CExports::CVCRValueSymbology::CVCRVS_DataMatrix, Symbology::DataMatrix},
33 {CExports::CVCRValueSymbology::CVCRVS_EAN13, Symbology::Ean13},
34 {CExports::CVCRValueSymbology::CVCRVS_EAN8, Symbology::Ean8},
35 {CExports::CVCRValueSymbology::CVCRVS_Interleaved2of5, Symbology::Interleaved2of5},
36 {CExports::CVCRValueSymbology::CVCRVS_MicroPDF417, Symbology::MicroPdf417},
37 {CExports::CVCRValueSymbology::CVCRVS_PDF417, Symbology::Pdf417},
38 {CExports::CVCRValueSymbology::CVCRVS_QR, Symbology::QR},
39 {CExports::CVCRValueSymbology::CVCRVS_MicroQR, Symbology::MicroQR},
40 {CExports::CVCRValueSymbology::CVCRVS_UPCA, Symbology::UpcA},
41 {CExports::CVCRValueSymbology::CVCRVS_UPCE, Symbology::UpcE},
42 {CExports::CVCRValueSymbology::CVCRVS_GS1DataBar14, Symbology::GS1DataBar14},
43 {CExports::CVCRValueSymbology::CVCRVS_GS1DataBar14Stacked, Symbology::GS1DataBarStacked},
44 {CExports::CVCRValueSymbology::CVCRVS_GS1DataBar14Limited, Symbology::GS1DataBarLimited},
45 {CExports::CVCRValueSymbology::CVCRVS_GS1DataBar14Expanded, Symbology::GS1DataBarExpanded},
46 {CExports::CVCRValueSymbology::CVCRVS_GS1DataBar14ExpandedStacked, Symbology::GS1DataBarExpandedStacked}};
47
48 return Convert(symbolType, symbologyMap);
49 }
50
51 inline Symbology Convert(CExports::CVCRValueSymbologyEx symbolType)
52 {
53 const std::unordered_map<CExports::CVCRValueSymbologyEx, Symbology> symbologyMap = {
54 {CExports::CVCRValueSymbologyEx::CVCRVSE_AustralianPost, Symbology::AustraliaPost},
55 {CExports::CVCRValueSymbologyEx::CVCRVSE_DutchPost, Symbology::DutchPost},
56 {CExports::CVCRValueSymbologyEx::CVCRVSE_RoyalMail, Symbology::RoyalMail},
57 {CExports::CVCRValueSymbologyEx::CVCRVSE_USPSIntelligentMail, Symbology::UspsIntelligentMail},
58 {CExports::CVCRValueSymbologyEx::CVCRVSE_Pharmacode, Symbology::Pharmacode},
59 {CExports::CVCRValueSymbologyEx::CVCRVSE_Code32, Symbology::Code32},
60 {CExports::CVCRValueSymbologyEx::CVCRVSE_Code11, Symbology::Code11}};
61
62 return Convert(symbolType, symbologyMap);
63 }
64 } // namespace SymbologyConversion
65 } // namespace CodeReader
66
67 CVB_END_INLINE_NS
68} // namespace Cvb
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
@ Code11
Code 11.
Definition decl_config_base.hpp:117
@ AustraliaPost
Australia Post.
Definition decl_config_base.hpp:122
@ Code128
Code 128.
Definition decl_config_base.hpp:77
@ GS1DataBarStacked
GS1 DataBar Stacked.
Definition decl_config_base.hpp:147
@ MicroQR
Micro QR code.
Definition decl_config_base.hpp:52
@ RoyalMail
RoyalMail 4-State Code.
Definition decl_config_base.hpp:132
@ GS1DataBarExpandedStacked
GS1 DataBar Expanded Stacked.
Definition decl_config_base.hpp:162
@ Ean13
EAN-13.
Definition decl_config_base.hpp:57
@ GS1DataBarExpanded
GS1 DataBar Expanded.
Definition decl_config_base.hpp:157
@ QR
QR code.
Definition decl_config_base.hpp:47
@ Pharmacode
Pharmacode.
Definition decl_config_base.hpp:107
@ Code39
Code 39.
Definition decl_config_base.hpp:82
@ Code32
Code 32 (Italian Pharmacode).
Definition decl_config_base.hpp:112
@ Pdf417
PDF417.
Definition decl_config_base.hpp:97
@ Interleaved2of5
Interleaved 2 of 5.
Definition decl_config_base.hpp:92
@ DutchPost
DutchPost (KIX Code).
Definition decl_config_base.hpp:127
@ UspsIntelligentMail
USPS Intelligent Mail.
Definition decl_config_base.hpp:137
@ MicroPdf417
MicroPDF417.
Definition decl_config_base.hpp:102
@ UpcA
UPC-A.
Definition decl_config_base.hpp:67
@ Ean8
EAN-8.
Definition decl_config_base.hpp:62
@ GS1DataBarLimited
GS1 DataBar Limited.
Definition decl_config_base.hpp:152
@ GS1DataBar14
GS1 DataBar-14.
Definition decl_config_base.hpp:142
@ Code93
Code 93.
Definition decl_config_base.hpp:87
@ DataMatrix
Data Matrix.
Definition decl_config_base.hpp:42
@ UpcE
UPC-E.
Definition decl_config_base.hpp:72
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17