qrscanner 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. data/CHANGELOG +2 -0
  2. data/Manifest +478 -0
  3. data/README +41 -0
  4. data/Rakefile +9 -0
  5. data/bin/qrscanner +9 -0
  6. data/ext/qrscanner/extconf.rb +70 -0
  7. data/ext/qrscanner/qrscanner.c +32 -0
  8. data/ext/qrscanner/zxing/README +43 -0
  9. data/ext/qrscanner/zxing/SConscript +55 -0
  10. data/ext/qrscanner/zxing/SConstruct +7 -0
  11. data/ext/qrscanner/zxing/astyle-options +12 -0
  12. data/ext/qrscanner/zxing/blackboxtest.sh +45 -0
  13. data/ext/qrscanner/zxing/core/src/zxing/BarcodeFormat.cpp +38 -0
  14. data/ext/qrscanner/zxing/core/src/zxing/BarcodeFormat.h +42 -0
  15. data/ext/qrscanner/zxing/core/src/zxing/Binarizer.cpp +36 -0
  16. data/ext/qrscanner/zxing/core/src/zxing/Binarizer.h +46 -0
  17. data/ext/qrscanner/zxing/core/src/zxing/BinaryBitmap.cpp +67 -0
  18. data/ext/qrscanner/zxing/core/src/zxing/BinaryBitmap.h +57 -0
  19. data/ext/qrscanner/zxing/core/src/zxing/DecodeHints.cpp +111 -0
  20. data/ext/qrscanner/zxing/core/src/zxing/DecodeHints.h +69 -0
  21. data/ext/qrscanner/zxing/core/src/zxing/Exception.cpp +25 -0
  22. data/ext/qrscanner/zxing/core/src/zxing/Exception.h +39 -0
  23. data/ext/qrscanner/zxing/core/src/zxing/LuminanceSource.cpp +47 -0
  24. data/ext/qrscanner/zxing/core/src/zxing/LuminanceSource.h +49 -0
  25. data/ext/qrscanner/zxing/core/src/zxing/MultiFormatReader.cpp +102 -0
  26. data/ext/qrscanner/zxing/core/src/zxing/MultiFormatReader.h +49 -0
  27. data/ext/qrscanner/zxing/core/src/zxing/Reader.cpp +31 -0
  28. data/ext/qrscanner/zxing/core/src/zxing/Reader.h +40 -0
  29. data/ext/qrscanner/zxing/core/src/zxing/ReaderException.cpp +32 -0
  30. data/ext/qrscanner/zxing/core/src/zxing/ReaderException.h +34 -0
  31. data/ext/qrscanner/zxing/core/src/zxing/Result.cpp +59 -0
  32. data/ext/qrscanner/zxing/core/src/zxing/Result.h +53 -0
  33. data/ext/qrscanner/zxing/core/src/zxing/ResultPoint.cpp +27 -0
  34. data/ext/qrscanner/zxing/core/src/zxing/ResultPoint.h +39 -0
  35. data/ext/qrscanner/zxing/core/src/zxing/ResultPointCallback.cpp +26 -0
  36. data/ext/qrscanner/zxing/core/src/zxing/ResultPointCallback.h +39 -0
  37. data/ext/qrscanner/zxing/core/src/zxing/common/Array.cpp +22 -0
  38. data/ext/qrscanner/zxing/core/src/zxing/common/Array.h +207 -0
  39. data/ext/qrscanner/zxing/core/src/zxing/common/BitArray.cpp +129 -0
  40. data/ext/qrscanner/zxing/core/src/zxing/common/BitArray.h +55 -0
  41. data/ext/qrscanner/zxing/core/src/zxing/common/BitMatrix.cpp +178 -0
  42. data/ext/qrscanner/zxing/core/src/zxing/common/BitMatrix.h +65 -0
  43. data/ext/qrscanner/zxing/core/src/zxing/common/BitSource.cpp +75 -0
  44. data/ext/qrscanner/zxing/core/src/zxing/common/BitSource.h +67 -0
  45. data/ext/qrscanner/zxing/core/src/zxing/common/Counted.cpp +32 -0
  46. data/ext/qrscanner/zxing/core/src/zxing/common/Counted.h +205 -0
  47. data/ext/qrscanner/zxing/core/src/zxing/common/DecoderResult.cpp +37 -0
  48. data/ext/qrscanner/zxing/core/src/zxing/common/DecoderResult.h +43 -0
  49. data/ext/qrscanner/zxing/core/src/zxing/common/DetectorResult.cpp +41 -0
  50. data/ext/qrscanner/zxing/core/src/zxing/common/DetectorResult.h +46 -0
  51. data/ext/qrscanner/zxing/core/src/zxing/common/EdgeDetector.cpp +191 -0
  52. data/ext/qrscanner/zxing/core/src/zxing/common/EdgeDetector.h +38 -0
  53. data/ext/qrscanner/zxing/core/src/zxing/common/GlobalHistogramBinarizer.cpp +209 -0
  54. data/ext/qrscanner/zxing/core/src/zxing/common/GlobalHistogramBinarizer.h +47 -0
  55. data/ext/qrscanner/zxing/core/src/zxing/common/GreyscaleLuminanceSource.cpp +70 -0
  56. data/ext/qrscanner/zxing/core/src/zxing/common/GreyscaleLuminanceSource.h +62 -0
  57. data/ext/qrscanner/zxing/core/src/zxing/common/GreyscaleRotatedLuminanceSource.cpp +65 -0
  58. data/ext/qrscanner/zxing/core/src/zxing/common/GreyscaleRotatedLuminanceSource.h +60 -0
  59. data/ext/qrscanner/zxing/core/src/zxing/common/GridSampler.cpp +101 -0
  60. data/ext/qrscanner/zxing/core/src/zxing/common/GridSampler.h +43 -0
  61. data/ext/qrscanner/zxing/core/src/zxing/common/HybridBinarizer.cpp +168 -0
  62. data/ext/qrscanner/zxing/core/src/zxing/common/HybridBinarizer.h +55 -0
  63. data/ext/qrscanner/zxing/core/src/zxing/common/IllegalArgumentException.cpp +31 -0
  64. data/ext/qrscanner/zxing/core/src/zxing/common/IllegalArgumentException.h +33 -0
  65. data/ext/qrscanner/zxing/core/src/zxing/common/PerspectiveTransform.cpp +107 -0
  66. data/ext/qrscanner/zxing/core/src/zxing/common/PerspectiveTransform.h +49 -0
  67. data/ext/qrscanner/zxing/core/src/zxing/common/Point.h +47 -0
  68. data/ext/qrscanner/zxing/core/src/zxing/common/Str.cpp +38 -0
  69. data/ext/qrscanner/zxing/core/src/zxing/common/Str.h +40 -0
  70. data/ext/qrscanner/zxing/core/src/zxing/common/reedsolomon/GF256.cpp +136 -0
  71. data/ext/qrscanner/zxing/core/src/zxing/common/reedsolomon/GF256.h +68 -0
  72. data/ext/qrscanner/zxing/core/src/zxing/common/reedsolomon/GF256Poly.cpp +198 -0
  73. data/ext/qrscanner/zxing/core/src/zxing/common/reedsolomon/GF256Poly.h +53 -0
  74. data/ext/qrscanner/zxing/core/src/zxing/common/reedsolomon/ReedSolomonDecoder.cpp +193 -0
  75. data/ext/qrscanner/zxing/core/src/zxing/common/reedsolomon/ReedSolomonDecoder.h +46 -0
  76. data/ext/qrscanner/zxing/core/src/zxing/common/reedsolomon/ReedSolomonException.cpp +30 -0
  77. data/ext/qrscanner/zxing/core/src/zxing/common/reedsolomon/ReedSolomonException.h +33 -0
  78. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/DataMatrixReader.cpp +82 -0
  79. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/DataMatrixReader.h +45 -0
  80. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/Version.cpp +199 -0
  81. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/Version.h +87 -0
  82. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/decoder/BitMatrixParser.cpp +364 -0
  83. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/decoder/BitMatrixParser.h +59 -0
  84. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/decoder/DataBlock.cpp +113 -0
  85. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/decoder/DataBlock.h +49 -0
  86. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/decoder/DecodedBitStreamParser.cpp +404 -0
  87. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/decoder/DecodedBitStreamParser.h +103 -0
  88. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/decoder/Decoder.cpp +96 -0
  89. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/decoder/Decoder.h +50 -0
  90. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/detector/CornerPoint.cpp +54 -0
  91. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/detector/CornerPoint.h +47 -0
  92. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/detector/Detector.cpp +315 -0
  93. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/detector/Detector.h +79 -0
  94. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/detector/MonochromeRectangleDetector.cpp +172 -0
  95. data/ext/qrscanner/zxing/core/src/zxing/datamatrix/detector/MonochromeRectangleDetector.h +61 -0
  96. data/ext/qrscanner/zxing/core/src/zxing/oned/Code128Reader.cpp +490 -0
  97. data/ext/qrscanner/zxing/core/src/zxing/oned/Code128Reader.h +63 -0
  98. data/ext/qrscanner/zxing/core/src/zxing/oned/Code39Reader.cpp +352 -0
  99. data/ext/qrscanner/zxing/core/src/zxing/oned/Code39Reader.h +58 -0
  100. data/ext/qrscanner/zxing/core/src/zxing/oned/EAN13Reader.cpp +95 -0
  101. data/ext/qrscanner/zxing/core/src/zxing/oned/EAN13Reader.h +44 -0
  102. data/ext/qrscanner/zxing/core/src/zxing/oned/EAN8Reader.cpp +73 -0
  103. data/ext/qrscanner/zxing/core/src/zxing/oned/EAN8Reader.h +41 -0
  104. data/ext/qrscanner/zxing/core/src/zxing/oned/ITFReader.cpp +363 -0
  105. data/ext/qrscanner/zxing/core/src/zxing/oned/ITFReader.h +56 -0
  106. data/ext/qrscanner/zxing/core/src/zxing/oned/MultiFormatOneDReader.cpp +66 -0
  107. data/ext/qrscanner/zxing/core/src/zxing/oned/MultiFormatOneDReader.h +38 -0
  108. data/ext/qrscanner/zxing/core/src/zxing/oned/MultiFormatUPCEANReader.cpp +87 -0
  109. data/ext/qrscanner/zxing/core/src/zxing/oned/MultiFormatUPCEANReader.h +38 -0
  110. data/ext/qrscanner/zxing/core/src/zxing/oned/OneDReader.cpp +206 -0
  111. data/ext/qrscanner/zxing/core/src/zxing/oned/OneDReader.h +50 -0
  112. data/ext/qrscanner/zxing/core/src/zxing/oned/OneDResultPoint.cpp +36 -0
  113. data/ext/qrscanner/zxing/core/src/zxing/oned/OneDResultPoint.h +40 -0
  114. data/ext/qrscanner/zxing/core/src/zxing/oned/UPCAReader.cpp +65 -0
  115. data/ext/qrscanner/zxing/core/src/zxing/oned/UPCAReader.h +49 -0
  116. data/ext/qrscanner/zxing/core/src/zxing/oned/UPCEANReader.cpp +311 -0
  117. data/ext/qrscanner/zxing/core/src/zxing/oned/UPCEANReader.h +77 -0
  118. data/ext/qrscanner/zxing/core/src/zxing/oned/UPCEReader.cpp +143 -0
  119. data/ext/qrscanner/zxing/core/src/zxing/oned/UPCEReader.h +47 -0
  120. data/ext/qrscanner/zxing/core/src/zxing/qrcode/ErrorCorrectionLevel.cpp +49 -0
  121. data/ext/qrscanner/zxing/core/src/zxing/qrcode/ErrorCorrectionLevel.h +46 -0
  122. data/ext/qrscanner/zxing/core/src/zxing/qrcode/FormatInformation.cpp +108 -0
  123. data/ext/qrscanner/zxing/core/src/zxing/qrcode/FormatInformation.h +54 -0
  124. data/ext/qrscanner/zxing/core/src/zxing/qrcode/QRCodeReader.cpp +82 -0
  125. data/ext/qrscanner/zxing/core/src/zxing/qrcode/QRCodeReader.h +43 -0
  126. data/ext/qrscanner/zxing/core/src/zxing/qrcode/Version.cpp +557 -0
  127. data/ext/qrscanner/zxing/core/src/zxing/qrcode/Version.h +85 -0
  128. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/BitMatrixParser.cpp +191 -0
  129. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/BitMatrixParser.h +56 -0
  130. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/DataBlock.cpp +118 -0
  131. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/DataBlock.h +50 -0
  132. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/DataMask.cpp +159 -0
  133. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/DataMask.h +50 -0
  134. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.cpp +353 -0
  135. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.h +59 -0
  136. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/Decoder.cpp +103 -0
  137. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/Decoder.h +47 -0
  138. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/Mode.cpp +73 -0
  139. data/ext/qrscanner/zxing/core/src/zxing/qrcode/decoder/Mode.h +50 -0
  140. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/AlignmentPattern.cpp +46 -0
  141. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/AlignmentPattern.h +45 -0
  142. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/AlignmentPatternFinder.cpp +209 -0
  143. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/AlignmentPatternFinder.h +68 -0
  144. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/Detector.cpp +286 -0
  145. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/Detector.h +64 -0
  146. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/FinderPattern.cpp +58 -0
  147. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/FinderPattern.h +48 -0
  148. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/FinderPatternFinder.cpp +540 -0
  149. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/FinderPatternFinder.h +69 -0
  150. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/FinderPatternInfo.cpp +41 -0
  151. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/FinderPatternInfo.h +47 -0
  152. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/QREdgeDetector.cpp +169 -0
  153. data/ext/qrscanner/zxing/core/src/zxing/qrcode/detector/QREdgeDetector.h +48 -0
  154. data/ext/qrscanner/zxing/core/tests/src/TestRunner.cpp +30 -0
  155. data/ext/qrscanner/zxing/core/tests/src/common/BitArrayTest.cpp +96 -0
  156. data/ext/qrscanner/zxing/core/tests/src/common/BitArrayTest.h +50 -0
  157. data/ext/qrscanner/zxing/core/tests/src/common/BitMatrixTest.cpp +107 -0
  158. data/ext/qrscanner/zxing/core/tests/src/common/BitMatrixTest.h +55 -0
  159. data/ext/qrscanner/zxing/core/tests/src/common/BitSourceTest.cpp +49 -0
  160. data/ext/qrscanner/zxing/core/tests/src/common/BitSourceTest.h +42 -0
  161. data/ext/qrscanner/zxing/core/tests/src/common/BlackPointEstimatorTest.cpp +47 -0
  162. data/ext/qrscanner/zxing/core/tests/src/common/BlackPointEstimatorTest.h +45 -0
  163. data/ext/qrscanner/zxing/core/tests/src/common/CountedTest.cpp +54 -0
  164. data/ext/qrscanner/zxing/core/tests/src/common/CountedTest.h +46 -0
  165. data/ext/qrscanner/zxing/core/tests/src/common/PerspectiveTransformTest.cpp +69 -0
  166. data/ext/qrscanner/zxing/core/tests/src/common/PerspectiveTransformTest.h +47 -0
  167. data/ext/qrscanner/zxing/core/tests/src/common/reedsolomon/ReedSolomonTest.cpp +130 -0
  168. data/ext/qrscanner/zxing/core/tests/src/common/reedsolomon/ReedSolomonTest.h +62 -0
  169. data/ext/qrscanner/zxing/core/tests/src/qrcode/ErrorCorrectionLevelTest.cpp +47 -0
  170. data/ext/qrscanner/zxing/core/tests/src/qrcode/ErrorCorrectionLevelTest.h +45 -0
  171. data/ext/qrscanner/zxing/core/tests/src/qrcode/FormatInformationTest.cpp +70 -0
  172. data/ext/qrscanner/zxing/core/tests/src/qrcode/FormatInformationTest.h +47 -0
  173. data/ext/qrscanner/zxing/core/tests/src/qrcode/VersionTest.cpp +88 -0
  174. data/ext/qrscanner/zxing/core/tests/src/qrcode/VersionTest.h +49 -0
  175. data/ext/qrscanner/zxing/core/tests/src/qrcode/decoder/DataMaskTest.cpp +134 -0
  176. data/ext/qrscanner/zxing/core/tests/src/qrcode/decoder/DataMaskTest.h +91 -0
  177. data/ext/qrscanner/zxing/core/tests/src/qrcode/decoder/ModeTest.cpp +52 -0
  178. data/ext/qrscanner/zxing/core/tests/src/qrcode/decoder/ModeTest.h +47 -0
  179. data/ext/qrscanner/zxing/format +2 -0
  180. data/ext/qrscanner/zxing/magick/src/MagickBitmapSource.cpp +99 -0
  181. data/ext/qrscanner/zxing/magick/src/MagickBitmapSource.h +49 -0
  182. data/ext/qrscanner/zxing/magick/src/example.cpp +83 -0
  183. data/ext/qrscanner/zxing/magick/src/main.cpp +241 -0
  184. data/ext/qrscanner/zxing/magick/src/qrscanner.cpp +188 -0
  185. data/ext/qrscanner/zxing/osx.xcodeproj/project.pbxproj +1045 -0
  186. data/ext/qrscanner/zxing/scons/scons-LICENSE +25 -0
  187. data/ext/qrscanner/zxing/scons/scons-README +204 -0
  188. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Action.py +1241 -0
  189. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Action.pyc +0 -0
  190. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Builder.py +877 -0
  191. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Builder.pyc +0 -0
  192. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/CacheDir.py +216 -0
  193. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/CacheDir.pyc +0 -0
  194. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Conftest.py +793 -0
  195. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Conftest.pyc +0 -0
  196. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Debug.py +220 -0
  197. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Debug.pyc +0 -0
  198. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Defaults.py +480 -0
  199. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Defaults.pyc +0 -0
  200. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Environment.py +2318 -0
  201. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Environment.pyc +0 -0
  202. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Errors.py +205 -0
  203. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Errors.pyc +0 -0
  204. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Executor.py +633 -0
  205. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Executor.pyc +0 -0
  206. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Job.py +435 -0
  207. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Job.pyc +0 -0
  208. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Memoize.py +244 -0
  209. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Memoize.pyc +0 -0
  210. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Node/Alias.py +152 -0
  211. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Node/Alias.pyc +0 -0
  212. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Node/FS.py +3142 -0
  213. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Node/FS.pyc +0 -0
  214. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Node/Python.py +128 -0
  215. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Node/Python.pyc +0 -0
  216. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Node/__init__.py +1328 -0
  217. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Node/__init__.pyc +0 -0
  218. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/BoolOption.py +50 -0
  219. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/BoolOption.pyc +0 -0
  220. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/EnumOption.py +50 -0
  221. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/EnumOption.pyc +0 -0
  222. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/ListOption.py +50 -0
  223. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/ListOption.pyc +0 -0
  224. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/PackageOption.py +50 -0
  225. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/PackageOption.pyc +0 -0
  226. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/PathOption.py +76 -0
  227. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/PathOption.pyc +0 -0
  228. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/__init__.py +67 -0
  229. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Options/__init__.pyc +0 -0
  230. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/PathList.py +231 -0
  231. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/PathList.pyc +0 -0
  232. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/__init__.py +241 -0
  233. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/__init__.pyc +0 -0
  234. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/aix.py +69 -0
  235. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/cygwin.py +55 -0
  236. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/darwin.py +46 -0
  237. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/hpux.py +46 -0
  238. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/irix.py +44 -0
  239. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/os2.py +58 -0
  240. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/posix.py +263 -0
  241. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/posix.pyc +0 -0
  242. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/sunos.py +50 -0
  243. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Platform/win32.py +385 -0
  244. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/SConf.py +1030 -0
  245. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/SConf.pyc +0 -0
  246. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/SConsign.py +383 -0
  247. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/SConsign.pyc +0 -0
  248. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/C.py +132 -0
  249. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/C.pyc +0 -0
  250. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/D.py +73 -0
  251. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/D.pyc +0 -0
  252. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/Dir.py +109 -0
  253. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/Dir.pyc +0 -0
  254. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/Fortran.py +316 -0
  255. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/Fortran.pyc +0 -0
  256. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/IDL.py +48 -0
  257. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/LaTeX.py +362 -0
  258. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/LaTeX.pyc +0 -0
  259. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/Prog.py +101 -0
  260. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/Prog.pyc +0 -0
  261. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/RC.py +55 -0
  262. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/__init__.py +413 -0
  263. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Scanner/__init__.pyc +0 -0
  264. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/Interactive.py +384 -0
  265. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/Interactive.pyc +0 -0
  266. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/Main.py +1334 -0
  267. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/Main.pyc +0 -0
  268. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/SConsOptions.py +939 -0
  269. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/SConsOptions.pyc +0 -0
  270. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/SConscript.py +640 -0
  271. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/SConscript.pyc +0 -0
  272. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/__init__.py +412 -0
  273. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Script/__init__.pyc +0 -0
  274. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Sig.py +63 -0
  275. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Subst.py +904 -0
  276. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Subst.pyc +0 -0
  277. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Taskmaster.py +1017 -0
  278. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Taskmaster.pyc +0 -0
  279. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/386asm.py +61 -0
  280. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/BitKeeper.py +67 -0
  281. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/BitKeeper.pyc +0 -0
  282. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/CVS.py +73 -0
  283. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/CVS.pyc +0 -0
  284. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/FortranCommon.py +246 -0
  285. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/FortranCommon.pyc +0 -0
  286. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/JavaCommon.py +323 -0
  287. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/JavaCommon.pyc +0 -0
  288. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/MSCommon/__init__.py +56 -0
  289. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/MSCommon/arch.py +61 -0
  290. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/MSCommon/common.py +240 -0
  291. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/MSCommon/netframework.py +82 -0
  292. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/MSCommon/sdk.py +391 -0
  293. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/MSCommon/vc.py +456 -0
  294. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/MSCommon/vs.py +499 -0
  295. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/Perforce.py +103 -0
  296. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/Perforce.pyc +0 -0
  297. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/PharLapCommon.py +137 -0
  298. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/PharLapCommon.pyc +0 -0
  299. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/RCS.py +64 -0
  300. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/RCS.pyc +0 -0
  301. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/SCCS.py +64 -0
  302. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/SCCS.pyc +0 -0
  303. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/Subversion.py +71 -0
  304. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/__init__.py +681 -0
  305. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/__init__.pyc +0 -0
  306. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/aixc++.py +82 -0
  307. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/aixcc.py +74 -0
  308. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/aixf77.py +80 -0
  309. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/aixlink.py +76 -0
  310. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/applelink.py +71 -0
  311. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/ar.py +63 -0
  312. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/ar.pyc +0 -0
  313. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/as.py +78 -0
  314. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/as.pyc +0 -0
  315. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/bcc32.py +81 -0
  316. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/c++.py +99 -0
  317. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/c++.pyc +0 -0
  318. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/cc.py +102 -0
  319. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/cc.pyc +0 -0
  320. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/cvf.py +58 -0
  321. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/default.py +50 -0
  322. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/default.pyc +0 -0
  323. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/dmd.py +223 -0
  324. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/dmd.pyc +0 -0
  325. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/dvi.py +64 -0
  326. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/dvipdf.py +124 -0
  327. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/dvipdf.pyc +0 -0
  328. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/dvips.py +94 -0
  329. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/dvips.pyc +0 -0
  330. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/f77.py +62 -0
  331. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/f77.pyc +0 -0
  332. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/f90.py +62 -0
  333. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/f90.pyc +0 -0
  334. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/f95.py +63 -0
  335. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/f95.pyc +0 -0
  336. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/filesystem.py +98 -0
  337. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/filesystem.pyc +0 -0
  338. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/fortran.py +62 -0
  339. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/fortran.pyc +0 -0
  340. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/g++.py +90 -0
  341. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/g++.pyc +0 -0
  342. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/g77.py +73 -0
  343. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/g77.pyc +0 -0
  344. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gas.py +53 -0
  345. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gas.pyc +0 -0
  346. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gcc.py +80 -0
  347. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gcc.pyc +0 -0
  348. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gfortran.py +64 -0
  349. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gfortran.pyc +0 -0
  350. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gnulink.py +63 -0
  351. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gnulink.pyc +0 -0
  352. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gs.py +81 -0
  353. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/gs.pyc +0 -0
  354. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/hpc++.py +84 -0
  355. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/hpcc.py +53 -0
  356. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/hplink.py +77 -0
  357. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/icc.py +59 -0
  358. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/icl.py +52 -0
  359. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/ifl.py +72 -0
  360. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/ifl.pyc +0 -0
  361. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/ifort.py +88 -0
  362. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/ifort.pyc +0 -0
  363. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/ilink.py +59 -0
  364. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/ilink32.py +60 -0
  365. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/install.py +229 -0
  366. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/install.pyc +0 -0
  367. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/intelc.py +482 -0
  368. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/ipkg.py +67 -0
  369. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/jar.py +110 -0
  370. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/jar.pyc +0 -0
  371. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/javac.py +230 -0
  372. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/javac.pyc +0 -0
  373. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/javah.py +137 -0
  374. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/javah.pyc +0 -0
  375. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/latex.py +79 -0
  376. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/latex.pyc +0 -0
  377. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/lex.py +97 -0
  378. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/lex.pyc +0 -0
  379. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/link.py +121 -0
  380. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/link.pyc +0 -0
  381. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/linkloc.py +112 -0
  382. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/m4.py +63 -0
  383. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/m4.pyc +0 -0
  384. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/masm.py +77 -0
  385. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/midl.py +88 -0
  386. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/mingw.py +158 -0
  387. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/mslib.py +64 -0
  388. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/mslink.py +266 -0
  389. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/mssdk.py +50 -0
  390. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/msvc.py +268 -0
  391. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/msvs.py +1388 -0
  392. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/mwcc.py +207 -0
  393. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/mwld.py +107 -0
  394. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/nasm.py +72 -0
  395. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/__init__.py +312 -0
  396. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/ipk.py +185 -0
  397. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/msi.py +527 -0
  398. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/rpm.py +365 -0
  399. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/src_tarbz2.py +43 -0
  400. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/src_targz.py +43 -0
  401. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/src_zip.py +43 -0
  402. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/tarbz2.py +44 -0
  403. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/targz.py +44 -0
  404. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/packaging/zip.py +44 -0
  405. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/pdf.py +78 -0
  406. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/pdf.pyc +0 -0
  407. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/pdflatex.py +83 -0
  408. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/pdflatex.pyc +0 -0
  409. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/pdftex.py +108 -0
  410. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/pdftex.pyc +0 -0
  411. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/qt.py +336 -0
  412. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/rmic.py +120 -0
  413. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/rmic.pyc +0 -0
  414. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/rpcgen.py +70 -0
  415. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/rpcgen.pyc +0 -0
  416. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/rpm.py +132 -0
  417. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/rpm.pyc +0 -0
  418. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sgiar.py +68 -0
  419. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sgic++.py +58 -0
  420. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sgicc.py +53 -0
  421. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sgilink.py +63 -0
  422. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sunar.py +67 -0
  423. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sunc++.py +142 -0
  424. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/suncc.py +58 -0
  425. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sunf77.py +63 -0
  426. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sunf90.py +64 -0
  427. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sunf95.py +64 -0
  428. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/sunlink.py +77 -0
  429. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/swig.py +182 -0
  430. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/swig.pyc +0 -0
  431. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/tar.py +73 -0
  432. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/tar.pyc +0 -0
  433. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/tex.py +807 -0
  434. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/tex.pyc +0 -0
  435. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/textfile.py +175 -0
  436. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/tlib.py +53 -0
  437. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/wix.py +99 -0
  438. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/wix.pyc +0 -0
  439. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/yacc.py +130 -0
  440. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/yacc.pyc +0 -0
  441. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/zip.py +99 -0
  442. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Tool/zip.pyc +0 -0
  443. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Util.py +1496 -0
  444. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Util.pyc +0 -0
  445. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/BoolVariable.py +89 -0
  446. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/BoolVariable.pyc +0 -0
  447. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/EnumVariable.py +103 -0
  448. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/EnumVariable.pyc +0 -0
  449. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/ListVariable.py +135 -0
  450. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/ListVariable.pyc +0 -0
  451. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/PackageVariable.py +106 -0
  452. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/PackageVariable.pyc +0 -0
  453. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/PathVariable.py +147 -0
  454. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/PathVariable.pyc +0 -0
  455. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/__init__.py +312 -0
  456. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Variables/__init__.pyc +0 -0
  457. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Warnings.py +246 -0
  458. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/Warnings.pyc +0 -0
  459. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/__init__.py +49 -0
  460. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/__init__.pyc +0 -0
  461. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/__init__.py +237 -0
  462. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/__init__.pyc +0 -0
  463. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/_scons_builtins.py +150 -0
  464. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/_scons_builtins.pyc +0 -0
  465. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/_scons_collections.py +45 -0
  466. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/_scons_dbm.py +45 -0
  467. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/_scons_hashlib.py +76 -0
  468. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/_scons_io.py +45 -0
  469. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/_scons_sets.py +563 -0
  470. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/compat/_scons_subprocess.py +1281 -0
  471. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/cpp.py +589 -0
  472. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/cpp.pyc +0 -0
  473. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/dblite.py +251 -0
  474. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/dblite.pyc +0 -0
  475. data/ext/qrscanner/zxing/scons/scons-local-2.0.0.final.0/SCons/exitfuncs.py +77 -0
  476. data/ext/qrscanner/zxing/scons/scons-time.py +1544 -0
  477. data/ext/qrscanner/zxing/scons/scons.py +196 -0
  478. data/ext/qrscanner/zxing/scons/sconsign.py +513 -0
  479. data/qrscanner.gemspec +33 -0
  480. metadata +1023 -0
@@ -0,0 +1,59 @@
1
+ #ifndef __DECODED_BIT_STREAM_PARSER_H__
2
+ #define __DECODED_BIT_STREAM_PARSER_H__
3
+
4
+ /*
5
+ * DecodedBitStreamParser.h
6
+ * zxing
7
+ *
8
+ * Copyright 2010 ZXing authors All rights reserved.
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * http://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+
23
+ #include <string>
24
+ #include <sstream>
25
+ #include <zxing/qrcode/decoder/Mode.h>
26
+ #include <zxing/common/BitSource.h>
27
+ #include <zxing/common/Counted.h>
28
+ #include <zxing/common/Array.h>
29
+
30
+
31
+
32
+ namespace zxing {
33
+ namespace qrcode {
34
+
35
+ class DecodedBitStreamParser {
36
+ private:
37
+ static const char ALPHANUMERIC_CHARS[];
38
+
39
+ static const char *ASCII;
40
+ static const char *ISO88591;
41
+ static const char *UTF8;
42
+ static const char *SHIFT_JIS;
43
+ static const char *EUC_JP;
44
+
45
+ static void decodeKanjiSegment(Ref<BitSource> bits, std::string &result, int count);
46
+ static void decodeByteSegment(Ref<BitSource> bits, std::string &result, int count);
47
+ static void decodeAlphanumericSegment(Ref<BitSource> bits, std::string &result, int count);
48
+ static void decodeNumericSegment(Ref<BitSource> bits, std::string &result, int count);
49
+ static const char *guessEncoding(unsigned char *bytes, int length);
50
+ static void append(std::string &ost, const unsigned char *bufIn, size_t nIn, const char *src);
51
+
52
+ public:
53
+ static std::string decode(ArrayRef<unsigned char> bytes, Version *version);
54
+ };
55
+
56
+ }
57
+ }
58
+
59
+ #endif // __DECODED_BIT_STREAM_PARSER_H__
@@ -0,0 +1,103 @@
1
+ /*
2
+ * Decoder.cpp
3
+ * zxing
4
+ *
5
+ * Created by Christian Brunschen on 20/05/2008.
6
+ * Copyright 2008 ZXing authors All rights reserved.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */
20
+
21
+ #include <zxing/qrcode/decoder/Decoder.h>
22
+ #include <zxing/qrcode/decoder/BitMatrixParser.h>
23
+ #include <zxing/qrcode/ErrorCorrectionLevel.h>
24
+ #include <zxing/qrcode/Version.h>
25
+ #include <zxing/qrcode/decoder/DataBlock.h>
26
+ #include <zxing/qrcode/decoder/DecodedBitStreamParser.h>
27
+ #include <zxing/ReaderException.h>
28
+ #include <zxing/common/reedsolomon/ReedSolomonException.h>
29
+
30
+ namespace zxing {
31
+ namespace qrcode {
32
+
33
+ using namespace std;
34
+
35
+ Decoder::Decoder() :
36
+ rsDecoder_(GF256::QR_CODE_FIELD) {
37
+ }
38
+
39
+ void Decoder::correctErrors(ArrayRef<unsigned char> codewordBytes, int numDataCodewords) {
40
+ int numCodewords = codewordBytes->size();
41
+ ArrayRef<int> codewordInts(numCodewords);
42
+ for (int i = 0; i < numCodewords; i++) {
43
+ codewordInts[i] = codewordBytes[i] & 0xff;
44
+ }
45
+ int numECCodewords = numCodewords - numDataCodewords;
46
+
47
+ try {
48
+ rsDecoder_.decode(codewordInts, numECCodewords);
49
+ } catch (ReedSolomonException ex) {
50
+ ReaderException rex(ex.what());
51
+ throw rex;
52
+ }
53
+
54
+ for (int i = 0; i < numDataCodewords; i++) {
55
+ codewordBytes[i] = (unsigned char)codewordInts[i];
56
+ }
57
+ }
58
+
59
+ Ref<DecoderResult> Decoder::decode(Ref<BitMatrix> bits) {
60
+ // Construct a parser and read version, error-correction level
61
+ BitMatrixParser parser(bits);
62
+
63
+ Version *version = parser.readVersion();
64
+ ErrorCorrectionLevel &ecLevel = parser.readFormatInformation()->getErrorCorrectionLevel();
65
+
66
+
67
+ // Read codewords
68
+ ArrayRef<unsigned char> codewords(parser.readCodewords());
69
+
70
+
71
+ // Separate into data blocks
72
+ std::vector<Ref<DataBlock> > dataBlocks(DataBlock::getDataBlocks(codewords, version, ecLevel));
73
+
74
+
75
+ // Count total number of data bytes
76
+ int totalBytes = 0;
77
+ for (size_t i = 0; i < dataBlocks.size(); i++) {
78
+ totalBytes += dataBlocks[i]->getNumDataCodewords();
79
+ }
80
+ ArrayRef<unsigned char> resultBytes(totalBytes);
81
+ int resultOffset = 0;
82
+
83
+
84
+ // Error-correct and copy data blocks together into a stream of bytes
85
+ for (size_t j = 0; j < dataBlocks.size(); j++) {
86
+ Ref<DataBlock> dataBlock(dataBlocks[j]);
87
+ ArrayRef<unsigned char> codewordBytes = dataBlock->getCodewords();
88
+ int numDataCodewords = dataBlock->getNumDataCodewords();
89
+ correctErrors(codewordBytes, numDataCodewords);
90
+ for (int i = 0; i < numDataCodewords; i++) {
91
+ resultBytes[resultOffset++] = codewordBytes[i];
92
+ }
93
+ }
94
+
95
+ // Decode the contents of that stream of bytes
96
+ Ref<String> text(new String(DecodedBitStreamParser::decode(resultBytes, version)));
97
+
98
+ Ref<DecoderResult> result(new DecoderResult(resultBytes, text));
99
+ return result;
100
+ }
101
+
102
+ }
103
+ }
@@ -0,0 +1,47 @@
1
+ #ifndef __DECODER_H__
2
+ #define __DECODER_H__
3
+
4
+ /*
5
+ * Decoder.h
6
+ * zxing
7
+ *
8
+ * Copyright 2010 ZXing authors All rights reserved.
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * http://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+
23
+ #include <zxing/common/reedsolomon/ReedSolomonDecoder.h>
24
+ #include <zxing/common/reedsolomon/GF256.h>
25
+ #include <zxing/common/Counted.h>
26
+ #include <zxing/common/Array.h>
27
+ #include <zxing/common/DecoderResult.h>
28
+ #include <zxing/common/BitMatrix.h>
29
+
30
+ namespace zxing {
31
+ namespace qrcode {
32
+
33
+ class Decoder {
34
+ private:
35
+ ReedSolomonDecoder rsDecoder_;
36
+
37
+ void correctErrors(ArrayRef<unsigned char> bytes, int numDataCodewords);
38
+
39
+ public:
40
+ Decoder();
41
+ Ref<DecoderResult> decode(Ref<BitMatrix> bits);
42
+ };
43
+
44
+ }
45
+ }
46
+
47
+ #endif // __DECODER_H__
@@ -0,0 +1,73 @@
1
+ /*
2
+ * Mode.cpp
3
+ * zxing
4
+ *
5
+ * Created by Christian Brunschen on 19/05/2008.
6
+ * Copyright 2008 ZXing authors All rights reserved.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */
20
+
21
+ #include <zxing/qrcode/decoder/Mode.h>
22
+ #include <zxing/common/Counted.h>
23
+ #include <zxing/ReaderException.h>
24
+ #include <zxing/qrcode/Version.h>
25
+ #include <sstream>
26
+
27
+ namespace zxing {
28
+ namespace qrcode {
29
+ using namespace std;
30
+
31
+ Mode Mode::TERMINATOR(0, 0, 0);
32
+ Mode Mode::NUMERIC(10, 12, 14);
33
+ Mode Mode::ALPHANUMERIC(9, 11, 13);
34
+ Mode Mode::BYTE(8, 16, 16);
35
+ Mode Mode::KANJI(8, 10, 12);
36
+
37
+ Mode::Mode(int cbv0_9, int cbv10_26, int cbv27) :
38
+ characterCountBitsForVersions0To9_(cbv0_9), characterCountBitsForVersions10To26_(cbv10_26),
39
+ characterCountBitsForVersions27AndHigher_(cbv27) {
40
+ }
41
+
42
+ Mode& Mode::forBits(int bits) {
43
+ switch (bits) {
44
+ case 0x0:
45
+ return TERMINATOR;
46
+ case 0x1:
47
+ return NUMERIC;
48
+ case 0x2:
49
+ return ALPHANUMERIC;
50
+ case 0x4:
51
+ return BYTE;
52
+ case 0x8:
53
+ return KANJI;
54
+ default:
55
+ ostringstream s;
56
+ s << "Illegal mode bits: " << bits;
57
+ throw ReaderException(s.str().c_str());
58
+ }
59
+ }
60
+
61
+ int Mode::getCharacterCountBits(Version *version) {
62
+ int number = version->getVersionNumber();
63
+ if (number <= 9) {
64
+ return characterCountBitsForVersions0To9_;
65
+ } else if (number <= 26) {
66
+ return characterCountBitsForVersions10To26_;
67
+ } else {
68
+ return characterCountBitsForVersions27AndHigher_;
69
+ }
70
+ }
71
+
72
+ }
73
+ }
@@ -0,0 +1,50 @@
1
+ #ifndef __MODE_H__
2
+ #define __MODE_H__
3
+
4
+ /*
5
+ * Mode.h
6
+ * zxing
7
+ *
8
+ * Copyright 2010 ZXing authors All rights reserved.
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * http://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+
23
+ #include <zxing/common/Counted.h>
24
+ #include <zxing/qrcode/Version.h>
25
+
26
+ namespace zxing {
27
+ namespace qrcode {
28
+
29
+ class Mode {
30
+ private:
31
+ int characterCountBitsForVersions0To9_;
32
+ int characterCountBitsForVersions10To26_;
33
+ int characterCountBitsForVersions27AndHigher_;
34
+
35
+ Mode(int cbv0_9, int cbv10_26, int cbv27);
36
+
37
+ public:
38
+ static Mode TERMINATOR;
39
+ static Mode NUMERIC;
40
+ static Mode ALPHANUMERIC;
41
+ static Mode BYTE;
42
+ static Mode KANJI;
43
+
44
+ static Mode& forBits(int bits);
45
+ int getCharacterCountBits(Version *version);
46
+ };
47
+ }
48
+ }
49
+
50
+ #endif // __MODE_H__
@@ -0,0 +1,46 @@
1
+ /*
2
+ * AlignmentPattern.cpp
3
+ * zxing
4
+ *
5
+ * Created by Christian Brunschen on 13/05/2008.
6
+ * Copyright 2008 ZXing authors All rights reserved.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */
20
+
21
+ #include <zxing/qrcode/detector/AlignmentPattern.h>
22
+
23
+ namespace zxing {
24
+ namespace qrcode {
25
+
26
+ using namespace std;
27
+
28
+ AlignmentPattern::AlignmentPattern(float posX, float posY, float estimatedModuleSize) :
29
+ posX_(posX), posY_(posY), estimatedModuleSize_(estimatedModuleSize) {
30
+ }
31
+
32
+ float AlignmentPattern::getX() const {
33
+ return posX_;
34
+ }
35
+
36
+ float AlignmentPattern::getY() const {
37
+ return posY_;
38
+ }
39
+
40
+ bool AlignmentPattern::aboutEquals(float moduleSize, float i, float j) const {
41
+ return abs(i - posY_) <= moduleSize && abs(j - posX_) <= moduleSize && (abs(moduleSize - estimatedModuleSize_)
42
+ <= 1.0f || abs(moduleSize - estimatedModuleSize_) / estimatedModuleSize_ <= 0.1f);
43
+ }
44
+
45
+ }
46
+ }
@@ -0,0 +1,45 @@
1
+ #ifndef __ALIGNMENT_PATTERN_H__
2
+ #define __ALIGNMENT_PATTERN_H__
3
+
4
+ /*
5
+ * AlignmentPattern.h
6
+ * zxing
7
+ *
8
+ * Copyright 2010 ZXing authors All rights reserved.
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * http://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+
23
+ #include <zxing/ResultPoint.h>
24
+ #include <cmath>
25
+
26
+ namespace zxing {
27
+ namespace qrcode {
28
+
29
+ class AlignmentPattern : public ResultPoint {
30
+ private:
31
+ float posX_;
32
+ float posY_;
33
+ float estimatedModuleSize_;
34
+
35
+ public:
36
+ AlignmentPattern(float posX, float posY, float estimatedModuleSize);
37
+ float getX() const;
38
+ float getY() const;
39
+ bool aboutEquals(float moduleSize, float i, float j) const;
40
+ };
41
+
42
+ }
43
+ }
44
+
45
+ #endif // __ALIGNMENT_PATTERN_H__
@@ -0,0 +1,209 @@
1
+ /*
2
+ * AlignmentPatternFinder.cpp
3
+ * zxing
4
+ *
5
+ * Created by Christian Brunschen on 14/05/2008.
6
+ * Copyright 2008 ZXing authors All rights reserved.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */
20
+
21
+ #include "AlignmentPatternFinder.h"
22
+ #include <zxing/ReaderException.h>
23
+ #include <zxing/common/BitArray.h>
24
+ #include <vector>
25
+ #include <cmath>
26
+ #include <cstdlib>
27
+
28
+ namespace zxing {
29
+ namespace qrcode {
30
+
31
+ using namespace std;
32
+
33
+ float AlignmentPatternFinder::centerFromEnd(vector<int> &stateCount, int end) {
34
+ return (float)(end - stateCount[2]) - stateCount[1] / 2.0f;
35
+ }
36
+
37
+ bool AlignmentPatternFinder::foundPatternCross(vector<int> &stateCount) {
38
+ float maxVariance = moduleSize_ / 2.0f;
39
+ for (size_t i = 0; i < 3; i++) {
40
+ if (abs(moduleSize_ - stateCount[i]) >= maxVariance) {
41
+ return false;
42
+ }
43
+ }
44
+ return true;
45
+ }
46
+
47
+ float AlignmentPatternFinder::crossCheckVertical(size_t startI, size_t centerJ, int maxCount,
48
+ int originalStateCountTotal) {
49
+ int maxI = image_->getHeight();
50
+ vector<int> stateCount(3, 0);
51
+
52
+
53
+ // Start counting up from center
54
+ int i = startI;
55
+ while (i >= 0 && image_->get(centerJ, i) && stateCount[1] <= maxCount) {
56
+ stateCount[1]++;
57
+ i--;
58
+ }
59
+ // If already too many modules in this state or ran off the edge:
60
+ if (i < 0 || stateCount[1] > maxCount) {
61
+ return NAN;
62
+ }
63
+ while (i >= 0 && !image_->get(centerJ, i) && stateCount[0] <= maxCount) {
64
+ stateCount[0]++;
65
+ i--;
66
+ }
67
+ if (stateCount[0] > maxCount) {
68
+ return NAN;
69
+ }
70
+
71
+ // Now also count down from center
72
+ i = startI + 1;
73
+ while (i < maxI && image_->get(centerJ, i) && stateCount[1] <= maxCount) {
74
+ stateCount[1]++;
75
+ i++;
76
+ }
77
+ if (i == maxI || stateCount[1] > maxCount) {
78
+ return NAN;
79
+ }
80
+ while (i < maxI && !image_->get(centerJ, i) && stateCount[2] <= maxCount) {
81
+ stateCount[2]++;
82
+ i++;
83
+ }
84
+ if (stateCount[2] > maxCount) {
85
+ return NAN;
86
+ }
87
+
88
+ int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];
89
+ if (5 * abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {
90
+ return NAN;
91
+ }
92
+
93
+ return foundPatternCross(stateCount) ? centerFromEnd(stateCount, i) : NAN;
94
+ }
95
+
96
+ Ref<AlignmentPattern> AlignmentPatternFinder::handlePossibleCenter(vector<int> &stateCount, size_t i, size_t j) {
97
+ int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];
98
+ float centerJ = centerFromEnd(stateCount, j);
99
+ float centerI = crossCheckVertical(i, (int)centerJ, 2 * stateCount[1], stateCountTotal);
100
+ if (!isnan(centerI)) {
101
+ float estimatedModuleSize = (float)(stateCount[0] + stateCount[1] + stateCount[2]) / 3.0f;
102
+ int max = possibleCenters_->size();
103
+ for (int index = 0; index < max; index++) {
104
+ Ref<AlignmentPattern> center((*possibleCenters_)[index]);
105
+ // Look for about the same center and module size:
106
+ if (center->aboutEquals(estimatedModuleSize, centerI, centerJ)) {
107
+ Ref<AlignmentPattern> result(new AlignmentPattern(centerJ, centerI, estimatedModuleSize));
108
+ return result;
109
+ }
110
+ }
111
+ AlignmentPattern *tmp = new AlignmentPattern(centerJ, centerI, estimatedModuleSize);
112
+ // Hadn't found this before; save it
113
+ tmp->retain();
114
+ possibleCenters_->push_back(tmp);
115
+ if (callback_ != 0) {
116
+ callback_->foundPossibleResultPoint(*tmp);
117
+ }
118
+ }
119
+ Ref<AlignmentPattern> result;
120
+ return result;
121
+ }
122
+
123
+ AlignmentPatternFinder::AlignmentPatternFinder(Ref<BitMatrix> image, size_t startX, size_t startY, size_t width,
124
+ size_t height, float moduleSize,
125
+ Ref<ResultPointCallback>const& callback) :
126
+ image_(image), possibleCenters_(new vector<AlignmentPattern *> ()), startX_(startX), startY_(startY),
127
+ width_(width), height_(height), moduleSize_(moduleSize), callback_(callback) {
128
+ }
129
+
130
+ AlignmentPatternFinder::~AlignmentPatternFinder() {
131
+ for (size_t i = 0; i < possibleCenters_->size(); i++) {
132
+ (*possibleCenters_)[i]->release();
133
+ (*possibleCenters_)[i] = 0;
134
+ }
135
+ delete possibleCenters_;
136
+ }
137
+
138
+ Ref<AlignmentPattern> AlignmentPatternFinder::find() {
139
+ size_t maxJ = startX_ + width_;
140
+ size_t middleI = startY_ + (height_ >> 1);
141
+ // Ref<BitArray> luminanceRow(new BitArray(width_));
142
+ // We are looking for black/white/black modules in 1:1:1 ratio;
143
+ // this tracks the number of black/white/black modules seen so far
144
+ vector<int> stateCount(3, 0);
145
+ for (size_t iGen = 0; iGen < height_; iGen++) {
146
+ // Search from middle outwards
147
+ size_t i = middleI + ((iGen & 0x01) == 0 ? ((iGen + 1) >> 1) : -((iGen + 1) >> 1));
148
+ // image_->getBlackRow(i, luminanceRow, startX_, width_);
149
+ stateCount[0] = 0;
150
+ stateCount[1] = 0;
151
+ stateCount[2] = 0;
152
+ size_t j = startX_;
153
+ // Burn off leading white pixels before anything else; if we start in the middle of
154
+ // a white run, it doesn't make sense to count its length, since we don't know if the
155
+ // white run continued to the left of the start point
156
+ while (j < maxJ && !image_->get(j, i)) {
157
+ j++;
158
+ }
159
+ int currentState = 0;
160
+ while (j < maxJ) {
161
+ if (image_->get(j, i)) {
162
+ // Black pixel
163
+ if (currentState == 1) { // Counting black pixels
164
+ stateCount[currentState]++;
165
+ } else { // Counting white pixels
166
+ if (currentState == 2) { // A winner?
167
+ if (foundPatternCross(stateCount)) { // Yes
168
+ Ref<AlignmentPattern> confirmed(handlePossibleCenter(stateCount, i, j));
169
+ if (confirmed != 0) {
170
+ return confirmed;
171
+ }
172
+ }
173
+ stateCount[0] = stateCount[2];
174
+ stateCount[1] = 1;
175
+ stateCount[2] = 0;
176
+ currentState = 1;
177
+ } else {
178
+ stateCount[++currentState]++;
179
+ }
180
+ }
181
+ } else { // White pixel
182
+ if (currentState == 1) { // Counting black pixels
183
+ currentState++;
184
+ }
185
+ stateCount[currentState]++;
186
+ }
187
+ j++;
188
+ }
189
+ if (foundPatternCross(stateCount)) {
190
+ Ref<AlignmentPattern> confirmed(handlePossibleCenter(stateCount, i, maxJ));
191
+ if (confirmed != 0) {
192
+ return confirmed;
193
+ }
194
+ }
195
+
196
+ }
197
+
198
+ // Hmm, nothing we saw was observed and confirmed twice. If we had
199
+ // any guess at all, return it.
200
+ if (possibleCenters_->size() > 0) {
201
+ Ref<AlignmentPattern> center((*possibleCenters_)[0]);
202
+ return center;
203
+ }
204
+
205
+ throw zxing::ReaderException("Could not find alignment pattern");
206
+ }
207
+
208
+ }
209
+ }