rhodes 2.4.1 → 3.0.0.beta.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 (395) hide show
  1. data/CHANGELOG +7 -0
  2. data/Rakefile +7 -36
  3. data/doc/build.txt +48 -22
  4. data/doc/device-caps.txt +130 -1
  5. data/doc/rhom.txt +9 -3
  6. data/doc/test-log-debug.txt +5 -2
  7. data/lib/extensions/barcode/ext/barcode/platform/android/Rakefile +40 -20
  8. data/lib/extensions/barcode/ext/barcode/platform/android/ZXing_Info/AUTHORS +58 -0
  9. data/lib/extensions/barcode/ext/barcode/platform/android/ZXing_Info/CHANGES +266 -0
  10. data/lib/extensions/barcode/ext/barcode/platform/android/ZXing_Info/COPYING +201 -0
  11. data/lib/extensions/barcode/ext/barcode/platform/android/ZXing_Info/README +11 -0
  12. data/lib/extensions/barcode/ext/barcode/platform/android/ext_build.files +173 -0
  13. data/lib/extensions/barcode/ext/barcode/platform/android/jni/src/barcode.cpp +34 -0
  14. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/BarcodeFormat.java +103 -0
  15. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/Binarizer.java +80 -0
  16. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/BinaryBitmap.java +128 -0
  17. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/ChecksumException.java +37 -0
  18. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/DecodeHintType.java +79 -0
  19. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/EncodeHintType.java +39 -0
  20. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/FormatException.java +38 -0
  21. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/LuminanceSource.java +113 -0
  22. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/MultiFormatReader.java +166 -0
  23. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/MultiFormatWriter.java +65 -0
  24. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/NotFoundException.java +37 -0
  25. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/Reader.java +64 -0
  26. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/ReaderException.java +98 -0
  27. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/Result.java +143 -0
  28. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/ResultMetadataType.java +109 -0
  29. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/ResultPoint.java +127 -0
  30. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/ResultPointCallback.java +29 -0
  31. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/Writer.java +54 -0
  32. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/WriterException.java +35 -0
  33. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/AbstractDoCoMoResultParser.java +39 -0
  34. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/AddressBookAUResultParser.java +73 -0
  35. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/AddressBookDoCoMoResultParser.java +85 -0
  36. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/AddressBookParsedResult.java +122 -0
  37. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/BizcardResultParser.java +94 -0
  38. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/BookmarkDoCoMoResultParser.java +46 -0
  39. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/CalendarParsedResult.java +134 -0
  40. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/EmailAddressParsedResult.java +61 -0
  41. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/EmailAddressResultParser.java +64 -0
  42. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/EmailDoCoMoResultParser.java +87 -0
  43. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/ExpandedProductParsedResult.java +195 -0
  44. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/ExpandedProductResultParser.java +199 -0
  45. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/GeoParsedResult.java +132 -0
  46. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/GeoResultParser.java +77 -0
  47. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/ISBNParsedResult.java +39 -0
  48. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/ISBNResultParser.java +54 -0
  49. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/ParsedResult.java +73 -0
  50. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/ParsedResultType.java +53 -0
  51. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/ProductParsedResult.java +49 -0
  52. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/ProductResultParser.java +66 -0
  53. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/ResultParser.java +319 -0
  54. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/SMSMMSResultParser.java +107 -0
  55. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/SMSParsedResult.java +104 -0
  56. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/SMSTOMMSTOResultParser.java +57 -0
  57. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/TelParsedResult.java +54 -0
  58. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/TelResultParser.java +44 -0
  59. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/TextParsedResult.java +48 -0
  60. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/URIParsedResult.java +113 -0
  61. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/URIResultParser.java +87 -0
  62. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/URLTOResultParser.java +47 -0
  63. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/VCardResultParser.java +346 -0
  64. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/VEventResultParser.java +54 -0
  65. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/WifiParsedResult.java +53 -0
  66. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/WifiResultParser.java +50 -0
  67. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/optional/AbstractNDEFResultParser.java +45 -0
  68. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/optional/NDEFRecord.java +87 -0
  69. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/optional/NDEFSmartPosterParsedResult.java +63 -0
  70. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/optional/NDEFSmartPosterResultParser.java +81 -0
  71. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/optional/NDEFTextResultParser.java +57 -0
  72. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/result/optional/NDEFURIResultParser.java +95 -0
  73. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/BitArray.java +247 -0
  74. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/BitMatrix.java +226 -0
  75. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/BitSource.java +97 -0
  76. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/CharacterSetECI.java +110 -0
  77. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/Collections.java +53 -0
  78. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/Comparator.java +27 -0
  79. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/DecoderResult.java +63 -0
  80. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/DefaultGridSampler.java +81 -0
  81. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/DetectorResult.java +46 -0
  82. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/ECI.java +52 -0
  83. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/GlobalHistogramBinarizer.java +196 -0
  84. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/GridSampler.java +171 -0
  85. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/HybridBinarizer.java +185 -0
  86. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/PerspectiveTransform.java +148 -0
  87. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/StringUtils.java +191 -0
  88. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/detector/MonochromeRectangleDetector.java +209 -0
  89. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/detector/WhiteRectangleDetector.java +316 -0
  90. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/reedsolomon/GF256.java +139 -0
  91. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/reedsolomon/GF256Poly.java +263 -0
  92. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/reedsolomon/ReedSolomonDecoder.java +194 -0
  93. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/reedsolomon/ReedSolomonEncoder.java +75 -0
  94. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/common/reedsolomon/ReedSolomonException.java +31 -0
  95. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/datamatrix/DataMatrixReader.java +161 -0
  96. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/datamatrix/decoder/BitMatrixParser.java +446 -0
  97. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/datamatrix/decoder/DataBlock.java +118 -0
  98. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/datamatrix/decoder/DecodedBitStreamParser.java +462 -0
  99. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/datamatrix/decoder/Decoder.java +134 -0
  100. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/datamatrix/decoder/Version.java +242 -0
  101. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/datamatrix/detector/Detector.java +348 -0
  102. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/multi/ByQuadrantReader.java +96 -0
  103. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/multi/GenericMultipleBarcodeReader.java +156 -0
  104. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/multi/MultipleBarcodeReader.java +37 -0
  105. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/multi/qrcode/QRCodeMultiReader.java +80 -0
  106. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/multi/qrcode/detector/MultiDetector.java +72 -0
  107. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder.java +324 -0
  108. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/CodaBarReader.java +263 -0
  109. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/Code128Reader.java +473 -0
  110. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/Code128Writer.java +73 -0
  111. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/Code39Reader.java +333 -0
  112. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/Code39Writer.java +82 -0
  113. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/Code93Reader.java +273 -0
  114. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/EAN13Reader.java +135 -0
  115. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/EAN13Writer.java +81 -0
  116. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/EAN8Reader.java +72 -0
  117. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/EAN8Writer.java +76 -0
  118. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/EANManufacturerOrgSupport.java +170 -0
  119. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/ITFReader.java +348 -0
  120. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/ITFWriter.java +68 -0
  121. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/MultiFormatOneDReader.java +109 -0
  122. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/MultiFormatUPCEANReader.java +113 -0
  123. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/OneDReader.java +297 -0
  124. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/UPCAReader.java +75 -0
  125. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/UPCEANExtensionSupport.java +186 -0
  126. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/UPCEANReader.java +355 -0
  127. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/UPCEANWriter.java +104 -0
  128. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/UPCEReader.java +153 -0
  129. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/AbstractRSSReader.java +110 -0
  130. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/DataCharacter.java +37 -0
  131. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/FinderPattern.java +48 -0
  132. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/Pair.java +41 -0
  133. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/RSS14Reader.java +494 -0
  134. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/RSSUtils.java +155 -0
  135. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/BitArrayBuilder.java +85 -0
  136. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/ExpandedPair.java +68 -0
  137. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/RSSExpandedReader.java +578 -0
  138. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AI013103decoder.java +47 -0
  139. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AI01320xDecoder.java +55 -0
  140. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AI01392xDecoder.java +66 -0
  141. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AI01393xDecoder.java +76 -0
  142. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0x1xDecoder.java +106 -0
  143. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0xDecoder.java +56 -0
  144. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AI01AndOtherAIs.java +56 -0
  145. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AI01decoder.java +81 -0
  146. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AI01weightDecoder.java +58 -0
  147. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AbstractExpandedDecoder.java +85 -0
  148. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/AnyAIDecoder.java +48 -0
  149. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/BlockParsedResult.java +60 -0
  150. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/CurrentParsingState.java +69 -0
  151. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/DecodedChar.java +52 -0
  152. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/DecodedInformation.java +63 -0
  153. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/DecodedNumeric.java +79 -0
  154. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/DecodedObject.java +44 -0
  155. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/FieldParser.java +285 -0
  156. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/oned/rss/expanded/decoders/GeneralAppIdDecoder.java +414 -0
  157. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/pdf417/PDF417Reader.java +79 -0
  158. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/pdf417/decoder/BitMatrixParser.java +1163 -0
  159. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/pdf417/decoder/DecodedBitStreamParser.java +629 -0
  160. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/pdf417/decoder/Decoder.java +150 -0
  161. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/pdf417/detector/Detector.java +498 -0
  162. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/QRCodeReader.java +166 -0
  163. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/QRCodeWriter.java +108 -0
  164. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/decoder/BitMatrixParser.java +203 -0
  165. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/decoder/DataBlock.java +123 -0
  166. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/decoder/DataMask.java +155 -0
  167. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.java +261 -0
  168. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/decoder/Decoder.java +148 -0
  169. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/decoder/ErrorCorrectionLevel.java +86 -0
  170. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/decoder/FormatInformation.java +171 -0
  171. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/decoder/Mode.java +112 -0
  172. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/decoder/Version.java +586 -0
  173. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/detector/AlignmentPattern.java +48 -0
  174. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/detector/AlignmentPatternFinder.java +279 -0
  175. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/detector/Detector.java +400 -0
  176. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/detector/FinderPattern.java +63 -0
  177. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/detector/FinderPatternFinder.java +585 -0
  178. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/detector/FinderPatternInfo.java +49 -0
  179. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/encoder/BlockPair.java +37 -0
  180. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/encoder/ByteMatrix.java +97 -0
  181. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/encoder/Encoder.java +557 -0
  182. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/encoder/MaskUtil.java +217 -0
  183. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/encoder/MatrixUtil.java +524 -0
  184. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/qrcode/encoder/QRCode.java +239 -0
  185. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/rhomobile/barcode/Barcode.java +63 -0
  186. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/rhomobile/barcode/RhoLuminanceSource.java +75 -0
  187. data/lib/extensions/barcode/ext/barcode/platform/iphone/Barcode.xcodeproj/project.pbxproj +74 -318
  188. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/barcode.m +70 -0
  189. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/COPYING +27 -0
  190. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarCaptureReader.h +105 -0
  191. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarHelpController.h +60 -0
  192. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarImage.h +69 -0
  193. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarImageScanner.h +51 -0
  194. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarReaderController.h +142 -0
  195. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarReaderView.h +118 -0
  196. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarReaderViewController.h +100 -0
  197. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarSDK.h +33 -0
  198. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/ZBarSymbol.h +71 -0
  199. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar.h +1476 -0
  200. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Decoder.h +201 -0
  201. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Exception.h +187 -0
  202. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Image.h +321 -0
  203. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/ImageScanner.h +130 -0
  204. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Processor.h +223 -0
  205. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Scanner.h +162 -0
  206. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Symbol.h +529 -0
  207. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Video.h +170 -0
  208. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Headers/ZBarSDK/zbar/Window.h +136 -0
  209. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/LICENSE +504 -0
  210. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/README +59 -0
  211. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Resources/zbar-back.png +0 -0
  212. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Resources/zbar-help.html +88 -0
  213. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Resources/zbar-helpicons.png +0 -0
  214. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/Resources/zbar-samples.png +0 -0
  215. data/lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/libzbar.a +0 -0
  216. data/lib/extensions/debugger/debugger.rb +215 -67
  217. data/lib/extensions/nfc/ext/nfc/platform/android/AndroidManifest.xml +1 -1
  218. data/lib/extensions/nfc/ext/nfc/platform/android/src/com/nfc/Nfc.java +14 -2
  219. data/lib/extensions/timeout/timeout.rb +114 -0
  220. data/lib/framework/rho/render.rb +14 -16
  221. data/lib/framework/rho/rho.rb +38 -14
  222. data/lib/framework/rho/rhoapplication.rb +1 -1
  223. data/lib/framework/rho/rhocontroller.rb +3 -3
  224. data/lib/framework/rho/rhofsconnector.rb +18 -6
  225. data/lib/framework/rho/rhoviewhelpers.rb +1 -1
  226. data/lib/framework/rhoappmanifest.rb +44 -0
  227. data/lib/framework/rhodes.rb +1 -1
  228. data/lib/framework/rhoframework.rb +31 -11
  229. data/lib/framework/rholang/localization_simplified.rb +10 -6
  230. data/lib/framework/rhom/rhom_object_factory.rb +3 -3
  231. data/lib/framework/version.rb +1 -1
  232. data/lib/rhodes.rb +1 -1
  233. data/platform/android/Rhodes/AndroidManifest.xml +2 -2
  234. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesApplication.h +32 -8
  235. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +21 -21
  236. data/platform/android/Rhodes/jni/src/rhocryptimpl.cpp +1 -0
  237. data/platform/android/Rhodes/jni/src/rhodes.cpp +21 -9
  238. data/platform/android/Rhodes/jni/src/sslimpl.cpp +1 -0
  239. data/platform/android/Rhodes/src/com/rhomobile/rhodes/BaseActivity.java +7 -6
  240. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +19 -1
  241. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhoCryptImpl.java +2 -2
  242. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +24 -15
  243. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesApplication.java +39 -47
  244. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +113 -106
  245. data/platform/android/Rhodes/src/com/rhomobile/rhodes/alert/Alert.java +11 -0
  246. data/platform/android/Rhodes/src/com/rhomobile/rhodes/alert/StatusNotification.java +49 -0
  247. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +1 -1
  248. data/platform/android/Rhodes/src/com/rhomobile/rhodes/socket/SSLImpl.java +5 -1
  249. data/platform/android/build/RhodesSRC_build.files +1 -0
  250. data/platform/android/build/android.rake +93 -6
  251. data/platform/bb/RubyVM/src/com/rho/RhodesApp.java +5 -4
  252. data/platform/bb/RubyVM/src/com/rho/file/RhoFile.java +10 -0
  253. data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +16 -15
  254. data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +2 -2
  255. data/platform/bb/RubyVM/src/com/rho/sync/SyncSource.java +21 -19
  256. data/platform/bb/rhodes/src/com/rho/BrowserAdapter5.java +2 -2
  257. data/platform/bb/rhodes/src/com/rho/rubyext/System.java +6 -1
  258. data/platform/bb/rhodes/src/com/rho/rubyext/WebView.java +10 -3
  259. data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +21 -1
  260. data/platform/iphone/Classes/SimpleMainView.m +5 -5
  261. data/platform/iphone/Info.plist +1 -1
  262. data/platform/iphone/rbuild/iphone.rake +30 -1
  263. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +12 -0
  264. data/platform/shared/SyncClient/SyncClient.cpp +136 -20
  265. data/platform/shared/SyncClient/SyncClient.h +17 -0
  266. data/platform/shared/common/AppMenu.cpp +6 -1
  267. data/platform/shared/common/RhoConf.cpp +13 -1
  268. data/platform/shared/common/RhoConf.h +3 -1
  269. data/platform/shared/common/RhoDefs.h +10 -0
  270. data/platform/shared/common/RhoFile.cpp +15 -0
  271. data/platform/shared/common/RhoFile.h +1 -0
  272. data/platform/shared/common/RhodesApp.cpp +16 -3
  273. data/platform/shared/common/RhodesApp.h +1 -0
  274. data/platform/shared/common/RhodesAppBase.cpp +102 -62
  275. data/platform/shared/common/RhodesAppBase.h +7 -1
  276. data/platform/shared/curl/lib/rhossl.c +1 -0
  277. data/platform/shared/db/DBAdapter.cpp +14 -2
  278. data/platform/shared/logging/RhoLogConf.cpp +21 -0
  279. data/platform/shared/logging/RhoLogConf.h +11 -0
  280. data/platform/shared/logging/RhoLogSink.cpp +24 -0
  281. data/platform/shared/logging/RhoLogSink.h +20 -1
  282. data/platform/shared/net/HttpServer.cpp +8 -6
  283. data/platform/shared/net/RawSocket.cpp +130 -0
  284. data/platform/shared/net/RawSocket.h +74 -0
  285. data/platform/shared/ruby/ext/rho/rhoruby.c +37 -1
  286. data/platform/shared/ruby/ext/rho/rhosupport.c +74 -21
  287. data/platform/shared/ruby/ext/sqlite3_api/sqlite3_api_wrap.c +9 -1
  288. data/platform/shared/ruby/vm_eval.c +4 -3
  289. data/platform/shared/sync/SyncEngine.cpp +11 -12
  290. data/platform/shared/sync/SyncEngine.h +2 -2
  291. data/platform/shared/sync/SyncNotify.cpp +41 -13
  292. data/platform/shared/sync/SyncNotify.h +20 -3
  293. data/platform/shared/sync/SyncSource.cpp +21 -19
  294. data/platform/shared/sync/SyncThread.cpp +11 -1
  295. data/platform/shared/sync/SyncThread.h +3 -0
  296. data/platform/shared/test/test_helper.cpp +7 -0
  297. data/platform/win32/RhoSimulator/QtCore4.dll +0 -0
  298. data/platform/win32/RhoSimulator/QtGui4.dll +0 -0
  299. data/platform/win32/RhoSimulator/QtNetwork4.dll +0 -0
  300. data/platform/win32/RhoSimulator/QtWebKit4.dll +0 -0
  301. data/platform/win32/RhoSimulator/imageformats/qgif4.dll +0 -0
  302. data/platform/win32/RhoSimulator/imageformats/qjpeg4.dll +0 -0
  303. data/platform/win32/RhoSimulator/rhosimulator.exe +0 -0
  304. data/platform/wm/RhoLib/RhoLib.vcproj +762 -14
  305. data/platform/wm/build/wm.rake +87 -10
  306. data/platform/wm/rhodes.sln +155 -72
  307. data/platform/wm/rhodes/MainWindow.cpp +5 -2
  308. data/platform/wm/rhodes/MainWindow.h +9 -1
  309. data/platform/wm/rhodes/RhoNativeViewManager.cpp +4 -0
  310. data/platform/wm/rhodes/Rhodes.cpp +60 -6
  311. data/platform/wm/rhodes/emulator/ExternalWebView.cpp +20 -0
  312. data/platform/wm/rhodes/emulator/ExternalWebView.h +23 -0
  313. data/platform/wm/rhodes/emulator/ExternalWebView.ui +46 -0
  314. data/platform/wm/rhodes/emulator/MainWindowCallback.h +18 -0
  315. data/platform/wm/rhodes/emulator/MainWindowProxy.cpp +268 -0
  316. data/platform/wm/rhodes/emulator/MainWindowProxy.h +34 -0
  317. data/platform/wm/rhodes/emulator/MainWindowQt.cpp +345 -0
  318. data/platform/wm/rhodes/emulator/MainWindowQt.h +118 -0
  319. data/platform/wm/rhodes/emulator/NativeToolbarQt.cpp +57 -0
  320. data/platform/wm/rhodes/emulator/NativeToolbarQt.h +52 -0
  321. data/platform/wm/rhodes/emulator/QtMainWindow.cpp +219 -0
  322. data/platform/wm/rhodes/emulator/QtMainWindow.h +62 -0
  323. data/platform/wm/rhodes/emulator/QtMainWindow.ui +122 -0
  324. data/platform/wm/rhodes/{RhoCryptImpl.cpp → rho/common/RhoCryptImpl.cpp} +0 -0
  325. data/platform/wm/rhodes/{RhoCryptImpl.h → rho/common/RhoCryptImpl.h} +0 -0
  326. data/platform/wm/rhodes/rho/rubyext/NativeToolbar.cpp +2 -86
  327. data/platform/wm/rhodes/rho/rubyext/NativeToolbarExt.cpp +87 -0
  328. data/platform/wm/rhodes/rho/rubyext/NativeToolbarExt.h +6 -0
  329. data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +60 -0
  330. data/platform/wm/rhodes/rhodes.vcproj +4025 -365
  331. data/platform/wm/rhodes/signature/Signature.cpp +29 -13
  332. data/platform/wm/rubylib/rubylib.vcproj +1167 -195
  333. data/platform/wm/shttpd/shttpd.vcproj +4 -4
  334. data/platform/wm/sqlite3/sqlite3.vcproj +441 -13
  335. data/platform/wm/syncengine/syncengine.vcproj +443 -15
  336. data/platform/wm/tcmalloc/tcmalloc.vcproj +0 -154
  337. data/platform/wm/tools/detool/LogServer.cpp +150 -0
  338. data/platform/wm/tools/detool/LogServer.h +23 -0
  339. data/platform/wm/tools/detool/detool.cpp +42 -4
  340. data/platform/wm/tools/detool/detool.vcproj +10 -1
  341. data/platform/wp7/IronRuby/Bin/Silverlight3Release/IronRuby.Libraries.dll +0 -0
  342. data/platform/wp7/IronRuby/Bin/Silverlight3Release/IronRuby.dll +0 -0
  343. data/platform/wp7/IronRuby/Bin/Silverlight3Release/Microsoft.Dynamic.dll +0 -0
  344. data/platform/wp7/IronRuby/Bin/Silverlight3Release/Microsoft.Scripting.Core.dll +0 -0
  345. data/platform/wp7/IronRuby/Bin/Silverlight3Release/Microsoft.Scripting.dll +0 -0
  346. data/platform/wp7/RhoAppRunner/Program.cs +20 -3
  347. data/platform/wp7/RhoLogServer/Program.cs +22 -0
  348. data/platform/wp7/RhoLogServer/Properties/AssemblyInfo.cs +36 -0
  349. data/platform/wp7/RhoLogServer/RhoLogServer.csproj +65 -0
  350. data/platform/wp7/RhoLogServer/SocketServer.cs +210 -0
  351. data/platform/wp7/RhoRubyExtGen/RhoAsyncHttp.cs +6 -0
  352. data/platform/wp7/RhoRubyLib/Initializers.Generated.cs +3 -2
  353. data/platform/wp7/RhoRubyLib/RhoRuby.cs +82 -0
  354. data/platform/wp7/RhoRubyLib/RhoRubyLib.csproj +7 -5
  355. data/platform/wp7/RhoRubyLib/WP_PlatformAdaptationLayer.cs +1 -1
  356. data/platform/wp7/RhoRubyLib/common/RhoParams.cs +1 -1
  357. data/platform/wp7/RhoRubyLib/common/ThreadQueue.cs +4 -1
  358. data/platform/wp7/RhoRubyLib/db/DBAdapter.cs +2 -2
  359. data/platform/wp7/RhoRubyLib/logging/IRhoLogSink.cs +1 -1
  360. data/platform/wp7/RhoRubyLib/logging/RhoEmptyLogger.cs +30 -0
  361. data/platform/wp7/RhoRubyLib/logging/RhoLogConf.cs +10 -0
  362. data/platform/wp7/RhoRubyLib/logging/RhoLogFileSink.cs +6 -1
  363. data/platform/wp7/RhoRubyLib/logging/RhoLogServerSink.cs +56 -0
  364. data/platform/wp7/RhoRubyLib/logging/RhoLogger.cs +24 -11
  365. data/platform/wp7/RhoRubyLib/net/AsyncHttp.cs +57 -14
  366. data/platform/wp7/RhoRubyLib/net/NetRequest.cs +32 -9
  367. data/platform/wp7/RhoRubyLib/rubyext/RhoAsyncHttp.cs +7 -0
  368. data/platform/wp7/RhoRubyLib/rubyext/RhoKernelOps.cs +6 -0
  369. data/platform/wp7/RhoRubyLib/sync/SyncEngine.cs +20 -16
  370. data/platform/wp7/RhoRubyLib/sync/SyncNotify.cs +2 -2
  371. data/platform/wp7/RhoRubyLib/sync/SyncSource.cs +138 -40
  372. data/platform/wp7/WPApplication/rho/apps/app/layout.erb +3 -1
  373. data/platform/wp7/build/wp.rake +151 -12
  374. data/platform/wp7/rhodes.sln +10 -0
  375. data/platform/wp7/rhodes/App.xaml.cs +6 -0
  376. data/platform/wp7/rhodes/MainPage.xaml +3 -0
  377. data/platform/wp7/rhodes/MainPage.xaml.cs +19 -0
  378. data/platform/wp7/rhodes/Rhodes.csproj +4 -2
  379. data/rakefile.rb +7 -36
  380. data/res/build-tools/RhoAppRunner.exe +0 -0
  381. data/res/build-tools/RhoLogServer.exe +0 -0
  382. data/res/build-tools/detool.exe +0 -0
  383. data/res/build-tools/wp7explorer.exe +0 -0
  384. data/res/generators/templates/application/app/layout.erb +3 -1
  385. data/res/generators/templates/application/public/jqtouch/jqtouch.js +1 -1
  386. data/rhodes.gemspec +1 -1
  387. data/spec/framework_spec/app/layout.erb +1 -1
  388. data/spec/framework_spec/build.yml +1 -0
  389. data/spec/perfomance_spec/app/layout.erb +3 -0
  390. data/spec/phone_spec/app/Account_s/account_s.rb +4 -1
  391. data/spec/phone_spec/app/spec/rhom_object_spec.rb +30 -1
  392. data/spec/phone_spec/app/spec_runner.rb +1 -1
  393. data/spec/phone_spec/build.yml +4 -1
  394. metadata +262 -10
  395. data/platform/wp7/IronRuby/Languages/Ruby/Ruby/Builtins/ConsoleStream.cs +0 -107
@@ -0,0 +1,72 @@
1
+ /*
2
+ * Copyright 2008 ZXing authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ package com.google.zxing.oned;
18
+
19
+ import com.google.zxing.BarcodeFormat;
20
+ import com.google.zxing.NotFoundException;
21
+ import com.google.zxing.common.BitArray;
22
+
23
+ /**
24
+ * <p>Implements decoding of the EAN-8 format.</p>
25
+ *
26
+ * @author Sean Owen
27
+ */
28
+ public final class EAN8Reader extends UPCEANReader {
29
+
30
+ private final int[] decodeMiddleCounters;
31
+
32
+ public EAN8Reader() {
33
+ decodeMiddleCounters = new int[4];
34
+ }
35
+
36
+ protected int decodeMiddle(BitArray row, int[] startRange, StringBuffer result)
37
+ throws NotFoundException {
38
+ int[] counters = decodeMiddleCounters;
39
+ counters[0] = 0;
40
+ counters[1] = 0;
41
+ counters[2] = 0;
42
+ counters[3] = 0;
43
+ int end = row.getSize();
44
+ int rowOffset = startRange[1];
45
+
46
+ for (int x = 0; x < 4 && rowOffset < end; x++) {
47
+ int bestMatch = decodeDigit(row, counters, rowOffset, L_PATTERNS);
48
+ result.append((char) ('0' + bestMatch));
49
+ for (int i = 0; i < counters.length; i++) {
50
+ rowOffset += counters[i];
51
+ }
52
+ }
53
+
54
+ int[] middleRange = findGuardPattern(row, rowOffset, true, MIDDLE_PATTERN);
55
+ rowOffset = middleRange[1];
56
+
57
+ for (int x = 0; x < 4 && rowOffset < end; x++) {
58
+ int bestMatch = decodeDigit(row, counters, rowOffset, L_PATTERNS);
59
+ result.append((char) ('0' + bestMatch));
60
+ for (int i = 0; i < counters.length; i++) {
61
+ rowOffset += counters[i];
62
+ }
63
+ }
64
+
65
+ return rowOffset;
66
+ }
67
+
68
+ BarcodeFormat getBarcodeFormat() {
69
+ return BarcodeFormat.EAN_8;
70
+ }
71
+
72
+ }
@@ -0,0 +1,76 @@
1
+ /*
2
+ * Copyright 2009 ZXing authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ package com.google.zxing.oned;
18
+
19
+ import com.google.zxing.BarcodeFormat;
20
+ import com.google.zxing.WriterException;
21
+ import com.google.zxing.common.BitMatrix;
22
+
23
+ import java.util.Hashtable;
24
+
25
+ /**
26
+ * This object renders an EAN8 code as a {@link BitMatrix}.
27
+ *
28
+ * @author aripollak@gmail.com (Ari Pollak)
29
+ */
30
+ public final class EAN8Writer extends UPCEANWriter {
31
+
32
+ private static final int codeWidth = 3 + // start guard
33
+ (7 * 4) + // left bars
34
+ 5 + // middle guard
35
+ (7 * 4) + // right bars
36
+ 3; // end guard
37
+
38
+ public BitMatrix encode(String contents, BarcodeFormat format, int width, int height,
39
+ Hashtable hints) throws WriterException {
40
+ if (format != BarcodeFormat.EAN_8) {
41
+ throw new IllegalArgumentException("Can only encode EAN_8, but got "
42
+ + format);
43
+ }
44
+
45
+ return super.encode(contents, format, width, height, hints);
46
+ }
47
+
48
+ /** @return a byte array of horizontal pixels (0 = white, 1 = black) */
49
+ public byte[] encode(String contents) {
50
+ if (contents.length() != 8) {
51
+ throw new IllegalArgumentException(
52
+ "Requested contents should be 8 digits long, but got " + contents.length());
53
+ }
54
+
55
+ byte[] result = new byte[codeWidth];
56
+ int pos = 0;
57
+
58
+ pos += appendPattern(result, pos, UPCEANReader.START_END_PATTERN, 1);
59
+
60
+ for (int i = 0; i <= 3; i++) {
61
+ int digit = Integer.parseInt(contents.substring(i, i + 1));
62
+ pos += appendPattern(result, pos, UPCEANReader.L_PATTERNS[digit], 0);
63
+ }
64
+
65
+ pos += appendPattern(result, pos, UPCEANReader.MIDDLE_PATTERN, 0);
66
+
67
+ for (int i = 4; i <= 7; i++) {
68
+ int digit = Integer.parseInt(contents.substring(i, i + 1));
69
+ pos += appendPattern(result, pos, UPCEANReader.L_PATTERNS[digit], 1);
70
+ }
71
+ pos += appendPattern(result, pos, UPCEANReader.START_END_PATTERN, 1);
72
+
73
+ return result;
74
+ }
75
+
76
+ }
@@ -0,0 +1,170 @@
1
+ /*
2
+ * Copyright (C) 2010 ZXing authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ package com.google.zxing.oned;
18
+
19
+ import java.util.Vector;
20
+
21
+ /**
22
+ * Records EAN prefix to GS1 Member Organization, where the member organization
23
+ * correlates strongly with a country. This is an imperfect means of identifying
24
+ * a country of origin by EAN-13 barcode value. See
25
+ * <a href="http://en.wikipedia.org/wiki/List_of_GS1_country_codes">
26
+ * http://en.wikipedia.org/wiki/List_of_GS1_country_codes</a>.
27
+ *
28
+ * @author Sean Owen
29
+ */
30
+ final class EANManufacturerOrgSupport {
31
+
32
+ private final Vector ranges = new Vector();
33
+ private final Vector countryIdentifiers = new Vector();
34
+
35
+ String lookupCountryIdentifier(String productCode) {
36
+ initIfNeeded();
37
+ int prefix = Integer.parseInt(productCode.substring(0, 3));
38
+ int max = ranges.size();
39
+ for (int i = 0; i < max; i++) {
40
+ int[] range = (int[]) ranges.elementAt(i);
41
+ int start = range[0];
42
+ if (prefix < start) {
43
+ return null;
44
+ }
45
+ int end = range.length == 1 ? start : range[1];
46
+ if (prefix <= end) {
47
+ return (String) countryIdentifiers.elementAt(i);
48
+ }
49
+ }
50
+ return null;
51
+ }
52
+
53
+ private void add(int[] range, String id) {
54
+ ranges.addElement(range);
55
+ countryIdentifiers.addElement(id);
56
+ }
57
+
58
+ private synchronized void initIfNeeded() {
59
+ if (!ranges.isEmpty()) {
60
+ return;
61
+ }
62
+ add(new int[] {0,19}, "US/CA");
63
+ add(new int[] {30,39}, "US");
64
+ add(new int[] {60,139}, "US/CA");
65
+ add(new int[] {300,379}, "FR");
66
+ add(new int[] {380}, "BG");
67
+ add(new int[] {383}, "SI");
68
+ add(new int[] {385}, "HR");
69
+ add(new int[] {387}, "BA");
70
+ add(new int[] {400,440}, "DE");
71
+ add(new int[] {450,459}, "JP");
72
+ add(new int[] {460,469}, "RU");
73
+ add(new int[] {471}, "TW");
74
+ add(new int[] {474}, "EE");
75
+ add(new int[] {475}, "LV");
76
+ add(new int[] {476}, "AZ");
77
+ add(new int[] {477}, "LT");
78
+ add(new int[] {478}, "UZ");
79
+ add(new int[] {479}, "LK");
80
+ add(new int[] {480}, "PH");
81
+ add(new int[] {481}, "BY");
82
+ add(new int[] {482}, "UA");
83
+ add(new int[] {484}, "MD");
84
+ add(new int[] {485}, "AM");
85
+ add(new int[] {486}, "GE");
86
+ add(new int[] {487}, "KZ");
87
+ add(new int[] {489}, "HK");
88
+ add(new int[] {490,499}, "JP");
89
+ add(new int[] {500,509}, "GB");
90
+ add(new int[] {520}, "GR");
91
+ add(new int[] {528}, "LB");
92
+ add(new int[] {529}, "CY");
93
+ add(new int[] {531}, "MK");
94
+ add(new int[] {535}, "MT");
95
+ add(new int[] {539}, "IE");
96
+ add(new int[] {540,549}, "BE/LU");
97
+ add(new int[] {560}, "PT");
98
+ add(new int[] {569}, "IS");
99
+ add(new int[] {570,579}, "DK");
100
+ add(new int[] {590}, "PL");
101
+ add(new int[] {594}, "RO");
102
+ add(new int[] {599}, "HU");
103
+ add(new int[] {600,601}, "ZA");
104
+ add(new int[] {603}, "GH");
105
+ add(new int[] {608}, "BH");
106
+ add(new int[] {609}, "MU");
107
+ add(new int[] {611}, "MA");
108
+ add(new int[] {613}, "DZ");
109
+ add(new int[] {616}, "KE");
110
+ add(new int[] {618}, "CI");
111
+ add(new int[] {619}, "TN");
112
+ add(new int[] {621}, "SY");
113
+ add(new int[] {622}, "EG");
114
+ add(new int[] {624}, "LY");
115
+ add(new int[] {625}, "JO");
116
+ add(new int[] {626}, "IR");
117
+ add(new int[] {627}, "KW");
118
+ add(new int[] {628}, "SA");
119
+ add(new int[] {629}, "AE");
120
+ add(new int[] {640,649}, "FI");
121
+ add(new int[] {690,695}, "CN");
122
+ add(new int[] {700,709}, "NO");
123
+ add(new int[] {729}, "IL");
124
+ add(new int[] {730,739}, "SE");
125
+ add(new int[] {740}, "GT");
126
+ add(new int[] {741}, "SV");
127
+ add(new int[] {742}, "HN");
128
+ add(new int[] {743}, "NI");
129
+ add(new int[] {744}, "CR");
130
+ add(new int[] {745}, "PA");
131
+ add(new int[] {746}, "DO");
132
+ add(new int[] {750}, "MX");
133
+ add(new int[] {754,755}, "CA");
134
+ add(new int[] {759}, "VE");
135
+ add(new int[] {760,769}, "CH");
136
+ add(new int[] {770}, "CO");
137
+ add(new int[] {773}, "UY");
138
+ add(new int[] {775}, "PE");
139
+ add(new int[] {777}, "BO");
140
+ add(new int[] {779}, "AR");
141
+ add(new int[] {780}, "CL");
142
+ add(new int[] {784}, "PY");
143
+ add(new int[] {785}, "PE");
144
+ add(new int[] {786}, "EC");
145
+ add(new int[] {789,790}, "BR");
146
+ add(new int[] {800,839}, "IT");
147
+ add(new int[] {840,849}, "ES");
148
+ add(new int[] {850}, "CU");
149
+ add(new int[] {858}, "SK");
150
+ add(new int[] {859}, "CZ");
151
+ add(new int[] {860}, "YU");
152
+ add(new int[] {865}, "MN");
153
+ add(new int[] {867}, "KP");
154
+ add(new int[] {868,869}, "TR");
155
+ add(new int[] {870,879}, "NL");
156
+ add(new int[] {880}, "KR");
157
+ add(new int[] {885}, "TH");
158
+ add(new int[] {888}, "SG");
159
+ add(new int[] {890}, "IN");
160
+ add(new int[] {893}, "VN");
161
+ add(new int[] {896}, "PK");
162
+ add(new int[] {899}, "ID");
163
+ add(new int[] {900,919}, "AT");
164
+ add(new int[] {930,939}, "AU");
165
+ add(new int[] {940,949}, "AZ");
166
+ add(new int[] {955}, "MY");
167
+ add(new int[] {958}, "MO");
168
+ }
169
+
170
+ }
@@ -0,0 +1,348 @@
1
+ /*
2
+ * Copyright 2008 ZXing authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ package com.google.zxing.oned;
18
+
19
+ import com.google.zxing.BarcodeFormat;
20
+ import com.google.zxing.DecodeHintType;
21
+ import com.google.zxing.FormatException;
22
+ import com.google.zxing.NotFoundException;
23
+ import com.google.zxing.Result;
24
+ import com.google.zxing.ResultPoint;
25
+ import com.google.zxing.common.BitArray;
26
+
27
+ import java.util.Hashtable;
28
+
29
+ /**
30
+ * <p>Implements decoding of the ITF format.</p>
31
+ *
32
+ * <p>"ITF" stands for Interleaved Two of Five. This Reader will scan ITF barcode with 6, 10 or 14
33
+ * digits. The checksum is optional and is not applied by this Reader. The consumer of the decoded
34
+ * value will have to apply a checksum if required.</p>
35
+ *
36
+ * <p><a href="http://en.wikipedia.org/wiki/Interleaved_2_of_5">http://en.wikipedia.org/wiki/Interleaved_2_of_5</a>
37
+ * is a great reference for Interleaved 2 of 5 information.</p>
38
+ *
39
+ * @author kevin.osullivan@sita.aero, SITA Lab.
40
+ */
41
+ public final class ITFReader extends OneDReader {
42
+
43
+ private static final int MAX_AVG_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.42f);
44
+ private static final int MAX_INDIVIDUAL_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.8f);
45
+
46
+ private static final int W = 3; // Pixel width of a wide line
47
+ private static final int N = 1; // Pixed width of a narrow line
48
+
49
+ private static final int[] DEFAULT_ALLOWED_LENGTHS = { 6, 10, 12, 14, 44 };
50
+
51
+ // Stores the actual narrow line width of the image being decoded.
52
+ private int narrowLineWidth = -1;
53
+
54
+ /**
55
+ * Start/end guard pattern.
56
+ *
57
+ * Note: The end pattern is reversed because the row is reversed before
58
+ * searching for the END_PATTERN
59
+ */
60
+ private static final int[] START_PATTERN = {N, N, N, N};
61
+ private static final int[] END_PATTERN_REVERSED = {N, N, W};
62
+
63
+ /**
64
+ * Patterns of Wide / Narrow lines to indicate each digit
65
+ */
66
+ static final int[][] PATTERNS = {
67
+ {N, N, W, W, N}, // 0
68
+ {W, N, N, N, W}, // 1
69
+ {N, W, N, N, W}, // 2
70
+ {W, W, N, N, N}, // 3
71
+ {N, N, W, N, W}, // 4
72
+ {W, N, W, N, N}, // 5
73
+ {N, W, W, N, N}, // 6
74
+ {N, N, N, W, W}, // 7
75
+ {W, N, N, W, N}, // 8
76
+ {N, W, N, W, N} // 9
77
+ };
78
+
79
+ public Result decodeRow(int rowNumber, BitArray row, Hashtable hints) throws FormatException, NotFoundException {
80
+
81
+ // Find out where the Middle section (payload) starts & ends
82
+ int[] startRange = decodeStart(row);
83
+ int[] endRange = decodeEnd(row);
84
+
85
+ StringBuffer result = new StringBuffer(20);
86
+ decodeMiddle(row, startRange[1], endRange[0], result);
87
+ String resultString = result.toString();
88
+
89
+ int[] allowedLengths = null;
90
+ if (hints != null) {
91
+ allowedLengths = (int[]) hints.get(DecodeHintType.ALLOWED_LENGTHS);
92
+
93
+ }
94
+ if (allowedLengths == null) {
95
+ allowedLengths = DEFAULT_ALLOWED_LENGTHS;
96
+ }
97
+
98
+ // To avoid false positives with 2D barcodes (and other patterns), make
99
+ // an assumption that the decoded string must be 6, 10 or 14 digits.
100
+ int length = resultString.length();
101
+ boolean lengthOK = false;
102
+ for (int i = 0; i < allowedLengths.length; i++) {
103
+ if (length == allowedLengths[i]) {
104
+ lengthOK = true;
105
+ break;
106
+ }
107
+
108
+ }
109
+ if (!lengthOK) {
110
+ throw FormatException.getFormatInstance();
111
+ }
112
+
113
+ return new Result(
114
+ resultString,
115
+ null, // no natural byte representation for these barcodes
116
+ new ResultPoint[] { new ResultPoint(startRange[1], (float) rowNumber),
117
+ new ResultPoint(endRange[0], (float) rowNumber)},
118
+ BarcodeFormat.ITF);
119
+ }
120
+
121
+ /**
122
+ * @param row row of black/white values to search
123
+ * @param payloadStart offset of start pattern
124
+ * @param resultString {@link StringBuffer} to append decoded chars to
125
+ * @throws NotFoundException if decoding could not complete successfully
126
+ */
127
+ private static void decodeMiddle(BitArray row, int payloadStart, int payloadEnd,
128
+ StringBuffer resultString) throws NotFoundException {
129
+
130
+ // Digits are interleaved in pairs - 5 black lines for one digit, and the
131
+ // 5
132
+ // interleaved white lines for the second digit.
133
+ // Therefore, need to scan 10 lines and then
134
+ // split these into two arrays
135
+ int[] counterDigitPair = new int[10];
136
+ int[] counterBlack = new int[5];
137
+ int[] counterWhite = new int[5];
138
+
139
+ while (payloadStart < payloadEnd) {
140
+
141
+ // Get 10 runs of black/white.
142
+ recordPattern(row, payloadStart, counterDigitPair);
143
+ // Split them into each array
144
+ for (int k = 0; k < 5; k++) {
145
+ int twoK = k << 1;
146
+ counterBlack[k] = counterDigitPair[twoK];
147
+ counterWhite[k] = counterDigitPair[twoK + 1];
148
+ }
149
+
150
+ int bestMatch = decodeDigit(counterBlack);
151
+ resultString.append((char) ('0' + bestMatch));
152
+ bestMatch = decodeDigit(counterWhite);
153
+ resultString.append((char) ('0' + bestMatch));
154
+
155
+ for (int i = 0; i < counterDigitPair.length; i++) {
156
+ payloadStart += counterDigitPair[i];
157
+ }
158
+ }
159
+ }
160
+
161
+ /**
162
+ * Identify where the start of the middle / payload section starts.
163
+ *
164
+ * @param row row of black/white values to search
165
+ * @return Array, containing index of start of 'start block' and end of
166
+ * 'start block'
167
+ * @throws NotFoundException
168
+ */
169
+ int[] decodeStart(BitArray row) throws NotFoundException {
170
+ int endStart = skipWhiteSpace(row);
171
+ int[] startPattern = findGuardPattern(row, endStart, START_PATTERN);
172
+
173
+ // Determine the width of a narrow line in pixels. We can do this by
174
+ // getting the width of the start pattern and dividing by 4 because its
175
+ // made up of 4 narrow lines.
176
+ this.narrowLineWidth = (startPattern[1] - startPattern[0]) >> 2;
177
+
178
+ validateQuietZone(row, startPattern[0]);
179
+
180
+ return startPattern;
181
+ }
182
+
183
+ /**
184
+ * The start & end patterns must be pre/post fixed by a quiet zone. This
185
+ * zone must be at least 10 times the width of a narrow line. Scan back until
186
+ * we either get to the start of the barcode or match the necessary number of
187
+ * quiet zone pixels.
188
+ *
189
+ * Note: Its assumed the row is reversed when using this method to find
190
+ * quiet zone after the end pattern.
191
+ *
192
+ * ref: http://www.barcode-1.net/i25code.html
193
+ *
194
+ * @param row bit array representing the scanned barcode.
195
+ * @param startPattern index into row of the start or end pattern.
196
+ * @throws NotFoundException if the quiet zone cannot be found, a ReaderException is thrown.
197
+ */
198
+ private void validateQuietZone(BitArray row, int startPattern) throws NotFoundException {
199
+
200
+ int quietCount = this.narrowLineWidth * 10; // expect to find this many pixels of quiet zone
201
+
202
+ for (int i = startPattern - 1; quietCount > 0 && i >= 0; i--) {
203
+ if (row.get(i)) {
204
+ break;
205
+ }
206
+ quietCount--;
207
+ }
208
+ if (quietCount != 0) {
209
+ // Unable to find the necessary number of quiet zone pixels.
210
+ throw NotFoundException.getNotFoundInstance();
211
+ }
212
+ }
213
+
214
+ /**
215
+ * Skip all whitespace until we get to the first black line.
216
+ *
217
+ * @param row row of black/white values to search
218
+ * @return index of the first black line.
219
+ * @throws NotFoundException Throws exception if no black lines are found in the row
220
+ */
221
+ private static int skipWhiteSpace(BitArray row) throws NotFoundException {
222
+ int width = row.getSize();
223
+ int endStart = 0;
224
+ while (endStart < width) {
225
+ if (row.get(endStart)) {
226
+ break;
227
+ }
228
+ endStart++;
229
+ }
230
+ if (endStart == width) {
231
+ throw NotFoundException.getNotFoundInstance();
232
+ }
233
+
234
+ return endStart;
235
+ }
236
+
237
+ /**
238
+ * Identify where the end of the middle / payload section ends.
239
+ *
240
+ * @param row row of black/white values to search
241
+ * @return Array, containing index of start of 'end block' and end of 'end
242
+ * block'
243
+ * @throws NotFoundException
244
+ */
245
+
246
+ int[] decodeEnd(BitArray row) throws NotFoundException {
247
+
248
+ // For convenience, reverse the row and then
249
+ // search from 'the start' for the end block
250
+ row.reverse();
251
+ try {
252
+ int endStart = skipWhiteSpace(row);
253
+ int[] endPattern = findGuardPattern(row, endStart, END_PATTERN_REVERSED);
254
+
255
+ // The start & end patterns must be pre/post fixed by a quiet zone. This
256
+ // zone must be at least 10 times the width of a narrow line.
257
+ // ref: http://www.barcode-1.net/i25code.html
258
+ validateQuietZone(row, endPattern[0]);
259
+
260
+ // Now recalculate the indices of where the 'endblock' starts & stops to
261
+ // accommodate
262
+ // the reversed nature of the search
263
+ int temp = endPattern[0];
264
+ endPattern[0] = row.getSize() - endPattern[1];
265
+ endPattern[1] = row.getSize() - temp;
266
+
267
+ return endPattern;
268
+ } finally {
269
+ // Put the row back the right way.
270
+ row.reverse();
271
+ }
272
+ }
273
+
274
+ /**
275
+ * @param row row of black/white values to search
276
+ * @param rowOffset position to start search
277
+ * @param pattern pattern of counts of number of black and white pixels that are
278
+ * being searched for as a pattern
279
+ * @return start/end horizontal offset of guard pattern, as an array of two
280
+ * ints
281
+ * @throws NotFoundException if pattern is not found
282
+ */
283
+ private static int[] findGuardPattern(BitArray row, int rowOffset, int[] pattern) throws NotFoundException {
284
+
285
+ // TODO: This is very similar to implementation in UPCEANReader. Consider if they can be
286
+ // merged to a single method.
287
+ int patternLength = pattern.length;
288
+ int[] counters = new int[patternLength];
289
+ int width = row.getSize();
290
+ boolean isWhite = false;
291
+
292
+ int counterPosition = 0;
293
+ int patternStart = rowOffset;
294
+ for (int x = rowOffset; x < width; x++) {
295
+ boolean pixel = row.get(x);
296
+ if (pixel ^ isWhite) {
297
+ counters[counterPosition]++;
298
+ } else {
299
+ if (counterPosition == patternLength - 1) {
300
+ if (patternMatchVariance(counters, pattern, MAX_INDIVIDUAL_VARIANCE) < MAX_AVG_VARIANCE) {
301
+ return new int[]{patternStart, x};
302
+ }
303
+ patternStart += counters[0] + counters[1];
304
+ for (int y = 2; y < patternLength; y++) {
305
+ counters[y - 2] = counters[y];
306
+ }
307
+ counters[patternLength - 2] = 0;
308
+ counters[patternLength - 1] = 0;
309
+ counterPosition--;
310
+ } else {
311
+ counterPosition++;
312
+ }
313
+ counters[counterPosition] = 1;
314
+ isWhite = !isWhite;
315
+ }
316
+ }
317
+ throw NotFoundException.getNotFoundInstance();
318
+ }
319
+
320
+ /**
321
+ * Attempts to decode a sequence of ITF black/white lines into single
322
+ * digit.
323
+ *
324
+ * @param counters the counts of runs of observed black/white/black/... values
325
+ * @return The decoded digit
326
+ * @throws NotFoundException if digit cannot be decoded
327
+ */
328
+ private static int decodeDigit(int[] counters) throws NotFoundException {
329
+
330
+ int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept
331
+ int bestMatch = -1;
332
+ int max = PATTERNS.length;
333
+ for (int i = 0; i < max; i++) {
334
+ int[] pattern = PATTERNS[i];
335
+ int variance = patternMatchVariance(counters, pattern, MAX_INDIVIDUAL_VARIANCE);
336
+ if (variance < bestVariance) {
337
+ bestVariance = variance;
338
+ bestMatch = i;
339
+ }
340
+ }
341
+ if (bestMatch >= 0) {
342
+ return bestMatch;
343
+ } else {
344
+ throw NotFoundException.getNotFoundInstance();
345
+ }
346
+ }
347
+
348
+ }