Enrollment 28.2.0
Loading...
Searching...
No Matches
ANSITemplateAdapter.h
Go to the documentation of this file.
1
9
10#pragma once
11
21
22namespace inno
23{
30 {
31 public:
37 */
38 [[nodiscard]] ANSITemplate Adapt(const ISONCTemplate& tmpl) const
39 {
40 return ConvertFrom(PrintExecutor::INNO_ISO_NC_TEMPLATE, tmpl.GetData());
41 }
47 */
48 [[nodiscard]] ANSITemplate Adapt(const ILOSIDTemplate& tmpl) const
49 {
50 return ConvertFrom(PrintExecutor::INNO_ILO_SID_TEMPLATE, tmpl.GetData());
51 }
57 */
58 [[nodiscard]] ANSITemplate Adapt(const ISOCCTemplate& tmpl) const
59 {
60 return ConvertFrom(PrintExecutor::INNO_ISO_CC_TEMPLATE, tmpl.GetData());
61 }
67 */
68 [[nodiscard]] ANSITemplate Adapt(const ISOTemplate& tmpl) const
69 {
70 return ConvertFrom(PrintExecutor::INNO_ISO_TEMPLATE, tmpl.data);
71 }
77 */
78 [[nodiscard]] ANSITemplate Adapt(const ICSTemplate& tmpl) const
79 {
80 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.icsTemplateData);
81 }
87 */
88 [[nodiscard]] ANSITemplate Adapt(const ExtractedPrint& tmpl) const
89 {
90 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.icsTemplateData);
91 }
97 */
98 [[nodiscard]] ANSITemplate Adapt(const PrintTemplate& tmpl) const
99 {
100 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.GetICSRepresentation()->icsTemplateData);
101 }
102
106 */
108 : exec(GlobalPrintExecutor::Get())
109 {
110 }
115 */
116 explicit ANSITemplateAdapter(std::shared_ptr<PrintExecutor> executor)
117 : exec(std::move(executor))
118 {
119 if (exec == nullptr)
120 {
121 throw NullArgumentException("Print executor cannot be null in ANSITemplateAdapter");
122 }
123 }
124
125 private:
126 std::shared_ptr<PrintExecutor> exec;
127
128 [[nodiscard]] ANSITemplate ConvertFrom(uint8_t templateType, const std::vector<uint8_t>& input) const
129 {
130
131 std::vector<uint8_t> data;
132 auto tmplAllocator = +[](void* container, size_t length) -> uint8_t*
133 {
134 // It is "safe" cast because we forward pointer to vector created in "user cpp space"
135 // (the space where this header is compiled) and the "own cpp space" (out compiled shared library)
136 // wil provide it back for us to the same "user cpp space". We have all spaces under control.
137 // It is used to do not have unecessary copy data from "own cpp space" into "user cpp space".
138 std::vector<uint8_t>& vec = *static_cast<std::vector<uint8_t>*>(container);
139 vec.resize(length);
140 return vec.data();
141 };
142 exec->ConvertTemplates(templateType,
143 input.data(),
144 input.size(),
145 PrintExecutor::INNO_ANSI_TEMPLATE,
146 tmplAllocator,
147 &data,
148 ThrowOnError{});
149
150 return ANSITemplate(std::move(data));
151 }
152 };
153} // namespace inno
ANSITemplate Adapt(const PrintTemplate &tmpl) const
Adapts PrintTemplate to ANSITemplate.
Definition ANSITemplateAdapter.h:97
ANSITemplate Adapt(const ILOSIDTemplate &tmpl) const
Adapts ILOSIDTemplate to ANSITemplate.
Definition ANSITemplateAdapter.h:47
ANSITemplate Adapt(const ISONCTemplate &tmpl) const
Adapts ISONCTemplate to ANSITemplate.
Definition ANSITemplateAdapter.h:37
ANSITemplate Adapt(const ISOTemplate &tmpl) const
Adapts ISOTemplate to ANSITemplate.
Definition ANSITemplateAdapter.h:67
ANSITemplateAdapter()
Creates ANSITemplateAdapter object with GlobalPrintExecutor used to execute template functionality.
Definition ANSITemplateAdapter.h:106
ANSITemplate Adapt(const ExtractedPrint &tmpl) const
Adapts ExtractedPrint to ANSITemplate.
Definition ANSITemplateAdapter.h:87
ANSITemplateAdapter(std::shared_ptr< PrintExecutor > executor)
Creates ANSITemplateAdapter object.
Definition ANSITemplateAdapter.h:115
ANSITemplate Adapt(const ICSTemplate &tmpl) const
Adapts ICSTemplate to ANSITemplate.
Definition ANSITemplateAdapter.h:77
ANSITemplate Adapt(const ISOCCTemplate &tmpl) const
Adapts ISOCCTemplate to ANSITemplate.
Definition ANSITemplateAdapter.h:57
ANSI INCITS 378 print compliant template.
Definition ANSITemplate.h:28
Print template in ICS format used for biometric operations with Print that was extracted.
Definition ExtractedPrint.h:36
Holds instance of PrintExecutor.
Definition PrintExecutor.h:1300
Print template in ICS format used for biometric operations.
Definition ICSTemplate.h:41
const std::vector< uint8_t > icsTemplateData
template data
Definition ICSTemplate.h:44
International Labour Organisation Seafarers Identity Document template.
Definition ILOSIDTemplate.h:24
std::vector< uint8_t > GetData() const
Provides template data.
Definition ILOSIDTemplate.h:30
ISO/IEC 19794-2:2005 template, template version 2.0, 3-byte format for minutiae (compact card encodin...
Definition ISOCCTemplate.h:22
std::vector< uint8_t > GetData() const
Provides template data.
Definition ISOCCTemplate.h:28
ISO/IEC 19794-2:2005 template, template version 2.0, 5-byte format for minutiae (normal card encoding...
Definition ISONCTemplate.h:22
std::vector< uint8_t > GetData() const
Provides template data.
Definition ISONCTemplate.h:28
ISO/IEC 19794-2 print compliant template.
Definition ISOTemplate.h:28
const std::vector< uint8_t > data
Template data.
Definition ISOTemplate.h:31
Null argument is not allowed.
Definition EnrollmentException.h:156
Holds various biometric representation types for print.
Definition PrintTemplate.h:26
std::shared_ptr< ICSTemplate > GetICSRepresentation() const
Provides ICS (Innovatrics proprietary extracted template) representation of print.
Definition PrintTemplate.h:72