ZXIReaderOptions.mm 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. // Copyright 2022 KURZ Digital Solutions GmbH
  2. //
  3. // SPDX-License-Identifier: Apache-2.0
  4. #import "ZXIReaderOptions.h"
  5. #import "ReaderOptions.h"
  6. @interface ZXIReaderOptions()
  7. @property(nonatomic) ZXing::ReaderOptions cppOpts;
  8. @end
  9. @implementation ZXIReaderOptions
  10. -(instancetype)init {
  11. self = [super init];
  12. self.cppOpts = ZXing::ReaderOptions();
  13. return self;
  14. }
  15. -(BOOL)tryHarder {
  16. return self.cppOpts.tryHarder();
  17. }
  18. -(void)setTryHarder:(BOOL)tryHarder {
  19. self.cppOpts = self.cppOpts.setTryHarder(tryHarder);
  20. }
  21. -(BOOL)tryRotate {
  22. return self.cppOpts.tryRotate();
  23. }
  24. -(void)setTryRotate:(BOOL)tryRotate {
  25. self.cppOpts = self.cppOpts.setTryRotate(tryRotate);
  26. }
  27. -(BOOL)tryInvert {
  28. return self.cppOpts.tryInvert();
  29. }
  30. -(void)setTryInvert:(BOOL)tryInvert {
  31. self.cppOpts = self.cppOpts.setTryInvert(tryInvert);
  32. }
  33. -(BOOL)tryDownscale {
  34. return self.cppOpts.tryDownscale();
  35. }
  36. -(void)setTryDownscale:(BOOL)tryDownscale {
  37. self.cppOpts = self.cppOpts.setTryDownscale(tryDownscale);
  38. }
  39. -(BOOL)isPure {
  40. return self.cppOpts.isPure();
  41. }
  42. -(void)setIsPure:(BOOL)isPure {
  43. self.cppOpts = self.cppOpts.setIsPure(isPure);
  44. }
  45. -(ZXIBinarizer)binarizer {
  46. switch (self.cppOpts.binarizer()) {
  47. default:
  48. case ZXing::Binarizer::LocalAverage:
  49. return ZXIBinarizer::ZXIBinarizerLocalAverage;
  50. case ZXing::Binarizer::GlobalHistogram:
  51. return ZXIBinarizer::ZXIBinarizerGlobalHistogram;
  52. case ZXing::Binarizer::FixedThreshold:
  53. return ZXIBinarizer::ZXIBinarizerFixedThreshold;
  54. case ZXing::Binarizer::BoolCast:
  55. return ZXIBinarizer::ZXIBinarizerBoolCast;
  56. }
  57. }
  58. ZXing::Binarizer toNativeBinarizer(ZXIBinarizer binarizer) {
  59. switch (binarizer) {
  60. default:
  61. case ZXIBinarizerLocalAverage:
  62. return ZXing::Binarizer::LocalAverage;
  63. case ZXIBinarizerGlobalHistogram:
  64. return ZXing::Binarizer::GlobalHistogram;
  65. case ZXIBinarizerFixedThreshold:
  66. return ZXing::Binarizer::FixedThreshold;
  67. case ZXIBinarizerBoolCast:
  68. return ZXing::Binarizer::BoolCast;
  69. }
  70. }
  71. -(void)setBinarizer:(ZXIBinarizer)binarizer {
  72. self.cppOpts = self.cppOpts.setBinarizer(toNativeBinarizer(binarizer));
  73. }
  74. -(NSInteger)downscaleFactor {
  75. return self.cppOpts.downscaleFactor();
  76. }
  77. -(void)setDownscaleFactor:(NSInteger)downscaleFactor {
  78. self.cppOpts = self.cppOpts.setDownscaleFactor(downscaleFactor);
  79. }
  80. -(NSInteger)downscaleThreshold {
  81. return self.cppOpts.downscaleThreshold();
  82. }
  83. -(void)setDownscaleThreshold:(NSInteger)downscaleThreshold {
  84. self.cppOpts = self.cppOpts.setDownscaleThreshold(downscaleThreshold);
  85. }
  86. -(NSInteger)minLineCount {
  87. return self.cppOpts.minLineCount();
  88. }
  89. -(void)setMinLineCount:(NSInteger)minLineCount {
  90. self.cppOpts = self.cppOpts.setMinLineCount(minLineCount);
  91. }
  92. - (NSInteger)maxNumberOfSymbols {
  93. return self.cppOpts.maxNumberOfSymbols();
  94. }
  95. -(void)setMaxNumberOfSymbols:(NSInteger)maxNumberOfSymbols {
  96. self.cppOpts = self.cppOpts.setMaxNumberOfSymbols(maxNumberOfSymbols);
  97. }
  98. -(BOOL)tryCode39ExtendedMode {
  99. return self.cppOpts.tryCode39ExtendedMode();
  100. }
  101. -(void)setTryCode39ExtendedMode:(BOOL)tryCode39ExtendedMode {
  102. self.cppOpts = self.cppOpts.setTryCode39ExtendedMode(tryCode39ExtendedMode);
  103. }
  104. -(BOOL)validateCode39CheckSum {
  105. return self.cppOpts.validateCode39CheckSum();
  106. }
  107. -(void)setValidateCode39CheckSum:(BOOL)validateCode39CheckSum {
  108. self.cppOpts = self.cppOpts.setValidateCode39CheckSum(validateCode39CheckSum);
  109. }
  110. -(BOOL)validateITFCheckSum {
  111. return self.cppOpts.validateITFCheckSum();
  112. }
  113. -(void)setValidateITFCheckSum:(BOOL)validateITFCheckSum {
  114. self.cppOpts = self.cppOpts.setValidateITFCheckSum(validateITFCheckSum);
  115. }
  116. -(BOOL)returnCodabarStartEnd {
  117. return self.cppOpts.returnCodabarStartEnd();
  118. }
  119. -(void)setReturnCodabarStartEnd:(BOOL)returnCodabarStartEnd {
  120. self.cppOpts = self.cppOpts.setReturnCodabarStartEnd(returnCodabarStartEnd);
  121. }
  122. -(BOOL)returnErrors {
  123. return self.cppOpts.returnErrors();
  124. }
  125. -(void)setReturnErrors:(BOOL)returnErrors {
  126. self.cppOpts = self.cppOpts.setReturnErrors(returnErrors);
  127. }
  128. -(ZXIEanAddOnSymbol)eanAddOnSymbol {
  129. switch (self.cppOpts.eanAddOnSymbol()) {
  130. default:
  131. case ZXing::EanAddOnSymbol::Ignore:
  132. return ZXIEanAddOnSymbol::ZXIEanAddOnSymbolIgnore;
  133. case ZXing::EanAddOnSymbol::Read:
  134. return ZXIEanAddOnSymbol::ZXIEanAddOnSymbolRead;
  135. case ZXing::EanAddOnSymbol::Require:
  136. return ZXIEanAddOnSymbol::ZXIEanAddOnSymbolRequire;
  137. }
  138. }
  139. ZXing::EanAddOnSymbol toNativeEanAddOnSymbol(ZXIEanAddOnSymbol eanAddOnSymbol) {
  140. switch (eanAddOnSymbol) {
  141. default:
  142. case ZXIEanAddOnSymbolIgnore:
  143. return ZXing::EanAddOnSymbol::Ignore;
  144. case ZXIEanAddOnSymbolRead:
  145. return ZXing::EanAddOnSymbol::Read;
  146. case ZXIEanAddOnSymbolRequire:
  147. return ZXing::EanAddOnSymbol::Require;
  148. }
  149. }
  150. -(void)setEanAddOnSymbol:(ZXIEanAddOnSymbol)eanAddOnSymbol {
  151. self.cppOpts = self.cppOpts.setEanAddOnSymbol(toNativeEanAddOnSymbol(eanAddOnSymbol));
  152. }
  153. -(ZXITextMode)textMode {
  154. switch (self.cppOpts.textMode()) {
  155. default:
  156. case ZXing::TextMode::Plain:
  157. return ZXITextMode::ZXITextModePlain;
  158. case ZXing::TextMode::ECI:
  159. return ZXITextMode::ZXITextModeECI;
  160. case ZXing::TextMode::HRI:
  161. return ZXITextMode::ZXITextModeHRI;
  162. case ZXing::TextMode::Hex:
  163. return ZXITextMode::ZXITextModeHex;
  164. case ZXing::TextMode::Escaped:
  165. return ZXITextMode::ZXITextModeEscaped;
  166. }
  167. }
  168. ZXing::TextMode toNativeTextMode(ZXITextMode mode) {
  169. switch (mode) {
  170. default:
  171. case ZXITextModePlain:
  172. return ZXing::TextMode::Plain;
  173. case ZXITextModeECI:
  174. return ZXing::TextMode::ECI;
  175. case ZXITextModeHRI:
  176. return ZXing::TextMode::HRI;
  177. case ZXITextModeHex:
  178. return ZXing::TextMode::Hex;
  179. case ZXITextModeEscaped:
  180. return ZXing::TextMode::Escaped;
  181. }
  182. }
  183. -(void)setTextMode:(ZXITextMode)textMode {
  184. self.cppOpts = self.cppOpts.setTextMode(toNativeTextMode(textMode));
  185. }
  186. @end