qr_grading.hpp
1 #pragma once
2 
3 #include "../../_cexports/c_barcode.h"
4 #include "grader_2d_config_base.hpp"
5 
6 namespace Cvb
7 {
8  CVB_BEGIN_INLINE_NS
9 
10  namespace Barcode
11  {
12 
14 
17  {
18  public:
19 
21 
26  void SetExpectReducedQuietzone(bool expectReducedQuietzone)
27  {
28  SetDirty();
29  expectReducedQuietzone_ = expectReducedQuietzone;
30  };
31 
33 
39  {
40  return expectReducedQuietzone_;
41  };
42 
43 
45 
50  void SetGradeFormatInformation(bool formatInformation)
51  {
52  SetDirty();
53  formatInformation_ = formatInformation;
54  };
55 
57 
63  {
64  return formatInformation_;
65  };
66 
67 
69 
74  void SetGradeVersionInformation(bool versionInformation)
75  {
76  SetDirty();
77  versionInformation_ = versionInformation;
78  };
79 
81 
87  {
88  return versionInformation_;
89  };
90 
91 
92  protected:
93  SmartBool expectReducedQuietzone_;
94  SmartBool formatInformation_;
95  SmartBool versionInformation_;
96 
97  public:
98  virtual Symbology Type() const override { return Symbology::QrGrading; };
99 
101 
107  static std::unique_ptr<QrGrading> FromHandle(const HandleGuard<ReaderConfig>& guard, bool& isActiveOut)
108  {
109  auto pConfig = std::unique_ptr<QrGrading>(new QrGrading());
110  isActiveOut = pConfig->ReadFromHandle(guard);
111  return pConfig;
112  }
113 
114  protected:
115  virtual bool ReadFromHandle_(const HandleGuard<ReaderConfig>& guard) override
116  {
117  short rMin, rMax;
118  CExports::cvbbool_t active;
119  CVB_CALL_CAPI(CvcBcGetQRCodeGradingEx(
120  reinterpret_cast<std::intptr_t>(guard.Handle()), &active,
121  symbolContrast_.Ptr(),
122  axialNonUniformity_.Ptr(),
123  gridNonUniformity_.Ptr(),
124  unusedErrorCorrection_.Ptr(),
125  angleOfDistortion_.Ptr(),
126  modulation_.Ptr(),
127  reflectanceMargin_.Ptr(),
128  fixedPatternDamage_.Ptr(),
129  formatInformation_.Ptr(),
130  versionInformation_.Ptr(),
131  expectReducedQuietzone_.Ptr(),
132  &rMin,
133  &rMax
134  ));
135  reflectanceReference_ = Cvb::ValueRange<int>(rMin, rMax);
136 
137  return SmartBool(active);
138  }
139 
140  virtual void WriteToHandle_(bool active, HandleGuard<ReaderConfig>& guard) override
141  {
142  Internal::DoResCall([&]()
143  {
144  return CVB_CALL_CAPI(CvcBcSetQRCodeGradingEx(reinterpret_cast<intptr_t>(guard.Handle()),
145  SmartBool(active),
146  symbolContrast_,
147  axialNonUniformity_,
148  gridNonUniformity_,
149  unusedErrorCorrection_,
150  angleOfDistortion_,
151  modulation_,
152  reflectanceMargin_,
153  fixedPatternDamage_,
154  formatInformation_,
155  versionInformation_,
156  expectReducedQuietzone_,
157  static_cast<short>(reflectanceReference_.Min()),
158  static_cast<short>(reflectanceReference_.Max())));
159  });
160  }
161 
162  QrGrading()
163  : Grader2DConfigBase()
164  {
165  }
166 
167 
168  };
169 
170  using QrGradingPtr = std::shared_ptr<QrGrading>;
171  }
172 
173  CVB_END_INLINE_NS
174 }
bool GradeFormatInformation() const
Returns the calculation of the format information grade.
Definition: qr_grading.hpp:62
STL class.
virtual Symbology Type() const override
Symbology of configuration object.
Definition: qr_grading.hpp:98
T Min() const noexcept
Gets the minimum value.
Definition: value_range.hpp:50
T Max() const noexcept
Gets the maximum value.
Definition: value_range.hpp:72
void SetGradeFormatInformation(bool formatInformation)
Activates (true) or deactivates (false) the calculation of the format information grade.
Definition: qr_grading.hpp:50
Symbology
The symbologies supported by Barcode.
Definition: barcode.hpp:96
bool ExpectReducedQuietzone() const
Returns whether the quiet zone expected may be reduced to one module size (standard are 4 module size...
Definition: qr_grading.hpp:38
Root namespace for the Image Manager interface.
Definition: version.hpp:11
static std::unique_ptr< QrGrading > FromHandle(const HandleGuard< ReaderConfig > &guard, bool &isActiveOut)
Create object from handle.
Definition: qr_grading.hpp:107
bool GradeVersionInformation() const
Returns the calculation of the version information grade.
Definition: qr_grading.hpp:86
Configuration to access parameters of Grader2DConfigBase.
Definition: grader_2d_config_base.hpp:18
STL class.
void SetExpectReducedQuietzone(bool expectReducedQuietzone)
With this flag the quiet zone expected may be reduced to one module size (standard are 4 module sizes...
Definition: qr_grading.hpp:26
void SetGradeVersionInformation(bool versionInformation)
Activates (true) or deactivates (false) the calculation of the version information grade.
Definition: qr_grading.hpp:74
Configuration to access parameters of QrGrading.
Definition: qr_grading.hpp:16