rhodes 2.4.1 → 3.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ }