tesseract_bin 1.0.0

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 (612) hide show
  1. data/.document +5 -0
  2. data/Gemfile +14 -0
  3. data/Gemfile.lock +23 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +19 -0
  6. data/Rakefile +46 -0
  7. data/VERSION +1 -0
  8. data/ext/tesseract_bin/extconf.rb +17 -0
  9. data/lib/tesseract_bin.rb +12 -0
  10. data/tesseract_bin.gemspec +660 -0
  11. data/test/helper.rb +18 -0
  12. data/test/test_tesseract_bin.rb +7 -0
  13. data/vendor/tesseract-2.04/AUTHORS +8 -0
  14. data/vendor/tesseract-2.04/COPYING +23 -0
  15. data/vendor/tesseract-2.04/ChangeLog +71 -0
  16. data/vendor/tesseract-2.04/INSTALL +229 -0
  17. data/vendor/tesseract-2.04/Makefile.am +20 -0
  18. data/vendor/tesseract-2.04/Makefile.in +641 -0
  19. data/vendor/tesseract-2.04/NEWS +1 -0
  20. data/vendor/tesseract-2.04/README +138 -0
  21. data/vendor/tesseract-2.04/ReleaseNotes +213 -0
  22. data/vendor/tesseract-2.04/StdAfx.cpp +8 -0
  23. data/vendor/tesseract-2.04/StdAfx.h +24 -0
  24. data/vendor/tesseract-2.04/ccmain/Makefile.am +63 -0
  25. data/vendor/tesseract-2.04/ccmain/Makefile.in +735 -0
  26. data/vendor/tesseract-2.04/ccmain/adaptions.cpp +1082 -0
  27. data/vendor/tesseract-2.04/ccmain/adaptions.h +109 -0
  28. data/vendor/tesseract-2.04/ccmain/applybox.cpp +891 -0
  29. data/vendor/tesseract-2.04/ccmain/applybox.h +73 -0
  30. data/vendor/tesseract-2.04/ccmain/baseapi.cpp +1105 -0
  31. data/vendor/tesseract-2.04/ccmain/baseapi.h +256 -0
  32. data/vendor/tesseract-2.04/ccmain/blobcmp.cpp +76 -0
  33. data/vendor/tesseract-2.04/ccmain/blobcmp.h +29 -0
  34. data/vendor/tesseract-2.04/ccmain/callnet.cpp +93 -0
  35. data/vendor/tesseract-2.04/ccmain/callnet.h +32 -0
  36. data/vendor/tesseract-2.04/ccmain/charcut.cpp +704 -0
  37. data/vendor/tesseract-2.04/ccmain/charcut.h +120 -0
  38. data/vendor/tesseract-2.04/ccmain/charsample.cpp +699 -0
  39. data/vendor/tesseract-2.04/ccmain/control.cpp +1842 -0
  40. data/vendor/tesseract-2.04/ccmain/control.h +198 -0
  41. data/vendor/tesseract-2.04/ccmain/docqual.cpp +1481 -0
  42. data/vendor/tesseract-2.04/ccmain/docqual.h +155 -0
  43. data/vendor/tesseract-2.04/ccmain/expandblob.cpp +82 -0
  44. data/vendor/tesseract-2.04/ccmain/expandblob.h +13 -0
  45. data/vendor/tesseract-2.04/ccmain/fixspace.cpp +989 -0
  46. data/vendor/tesseract-2.04/ccmain/fixspace.h +72 -0
  47. data/vendor/tesseract-2.04/ccmain/fixxht.cpp +825 -0
  48. data/vendor/tesseract-2.04/ccmain/fixxht.h +93 -0
  49. data/vendor/tesseract-2.04/ccmain/imgscale.cpp +154 -0
  50. data/vendor/tesseract-2.04/ccmain/imgscale.h +32 -0
  51. data/vendor/tesseract-2.04/ccmain/matmatch.cpp +391 -0
  52. data/vendor/tesseract-2.04/ccmain/matmatch.h +48 -0
  53. data/vendor/tesseract-2.04/ccmain/output.cpp +1273 -0
  54. data/vendor/tesseract-2.04/ccmain/output.h +116 -0
  55. data/vendor/tesseract-2.04/ccmain/pagewalk.cpp +666 -0
  56. data/vendor/tesseract-2.04/ccmain/pagewalk.h +155 -0
  57. data/vendor/tesseract-2.04/ccmain/paircmp.cpp +107 -0
  58. data/vendor/tesseract-2.04/ccmain/paircmp.h +43 -0
  59. data/vendor/tesseract-2.04/ccmain/pgedit.cpp +1867 -0
  60. data/vendor/tesseract-2.04/ccmain/pgedit.h +181 -0
  61. data/vendor/tesseract-2.04/ccmain/reject.cpp +1775 -0
  62. data/vendor/tesseract-2.04/ccmain/reject.h +181 -0
  63. data/vendor/tesseract-2.04/ccmain/scaleimg.cpp +366 -0
  64. data/vendor/tesseract-2.04/ccmain/scaleimg.h +35 -0
  65. data/vendor/tesseract-2.04/ccmain/tessbox.cpp +375 -0
  66. data/vendor/tesseract-2.04/ccmain/tessbox.h +110 -0
  67. data/vendor/tesseract-2.04/ccmain/tessedit.cpp +278 -0
  68. data/vendor/tesseract-2.04/ccmain/tessedit.h +49 -0
  69. data/vendor/tesseract-2.04/ccmain/tessembedded.cpp +110 -0
  70. data/vendor/tesseract-2.04/ccmain/tessembedded.h +38 -0
  71. data/vendor/tesseract-2.04/ccmain/tesseractfull.cc +37 -0
  72. data/vendor/tesseract-2.04/ccmain/tesseractmain.cpp +387 -0
  73. data/vendor/tesseract-2.04/ccmain/tesseractmain.h +58 -0
  74. data/vendor/tesseract-2.04/ccmain/tessio.h +110 -0
  75. data/vendor/tesseract-2.04/ccmain/tessvars.cpp +38 -0
  76. data/vendor/tesseract-2.04/ccmain/tessvars.h +48 -0
  77. data/vendor/tesseract-2.04/ccmain/tfacep.h +62 -0
  78. data/vendor/tesseract-2.04/ccmain/tfacepp.cpp +443 -0
  79. data/vendor/tesseract-2.04/ccmain/tfacepp.h +85 -0
  80. data/vendor/tesseract-2.04/ccmain/tstruct.cpp +549 -0
  81. data/vendor/tesseract-2.04/ccmain/tstruct.h +108 -0
  82. data/vendor/tesseract-2.04/ccmain/varabled.cpp +346 -0
  83. data/vendor/tesseract-2.04/ccmain/varabled.h +125 -0
  84. data/vendor/tesseract-2.04/ccmain/werdit.cpp +193 -0
  85. data/vendor/tesseract-2.04/ccmain/werdit.h +67 -0
  86. data/vendor/tesseract-2.04/ccstruct/Makefile.am +25 -0
  87. data/vendor/tesseract-2.04/ccstruct/Makefile.in +650 -0
  88. data/vendor/tesseract-2.04/ccstruct/blckerr.h +29 -0
  89. data/vendor/tesseract-2.04/ccstruct/blobbox.cpp +778 -0
  90. data/vendor/tesseract-2.04/ccstruct/blobbox.h +381 -0
  91. data/vendor/tesseract-2.04/ccstruct/blobs.cpp +247 -0
  92. data/vendor/tesseract-2.04/ccstruct/blobs.h +119 -0
  93. data/vendor/tesseract-2.04/ccstruct/blread.cpp +537 -0
  94. data/vendor/tesseract-2.04/ccstruct/blread.h +63 -0
  95. data/vendor/tesseract-2.04/ccstruct/callcpp.cpp +252 -0
  96. data/vendor/tesseract-2.04/ccstruct/coutln.cpp +650 -0
  97. data/vendor/tesseract-2.04/ccstruct/coutln.h +186 -0
  98. data/vendor/tesseract-2.04/ccstruct/crakedge.h +39 -0
  99. data/vendor/tesseract-2.04/ccstruct/genblob.cpp +133 -0
  100. data/vendor/tesseract-2.04/ccstruct/genblob.h +52 -0
  101. data/vendor/tesseract-2.04/ccstruct/hpddef.h +39 -0
  102. data/vendor/tesseract-2.04/ccstruct/hpdsizes.h +8 -0
  103. data/vendor/tesseract-2.04/ccstruct/ipoints.h +479 -0
  104. data/vendor/tesseract-2.04/ccstruct/labls.cpp +188 -0
  105. data/vendor/tesseract-2.04/ccstruct/labls.h +38 -0
  106. data/vendor/tesseract-2.04/ccstruct/linlsq.cpp +249 -0
  107. data/vendor/tesseract-2.04/ccstruct/linlsq.h +102 -0
  108. data/vendor/tesseract-2.04/ccstruct/lmedsq.cpp +453 -0
  109. data/vendor/tesseract-2.04/ccstruct/lmedsq.h +84 -0
  110. data/vendor/tesseract-2.04/ccstruct/mod128.cpp +100 -0
  111. data/vendor/tesseract-2.04/ccstruct/mod128.h +85 -0
  112. data/vendor/tesseract-2.04/ccstruct/normalis.cpp +176 -0
  113. data/vendor/tesseract-2.04/ccstruct/normalis.h +108 -0
  114. data/vendor/tesseract-2.04/ccstruct/ocrblock.cpp +369 -0
  115. data/vendor/tesseract-2.04/ccstruct/ocrblock.h +235 -0
  116. data/vendor/tesseract-2.04/ccstruct/ocrrow.cpp +216 -0
  117. data/vendor/tesseract-2.04/ccstruct/ocrrow.h +133 -0
  118. data/vendor/tesseract-2.04/ccstruct/pageblk.cpp +879 -0
  119. data/vendor/tesseract-2.04/ccstruct/pageblk.h +318 -0
  120. data/vendor/tesseract-2.04/ccstruct/pageres.cpp +330 -0
  121. data/vendor/tesseract-2.04/ccstruct/pageres.h +313 -0
  122. data/vendor/tesseract-2.04/ccstruct/pdblock.cpp +361 -0
  123. data/vendor/tesseract-2.04/ccstruct/pdblock.h +181 -0
  124. data/vendor/tesseract-2.04/ccstruct/pdclass.h +54 -0
  125. data/vendor/tesseract-2.04/ccstruct/points.cpp +102 -0
  126. data/vendor/tesseract-2.04/ccstruct/points.h +299 -0
  127. data/vendor/tesseract-2.04/ccstruct/polyaprx.cpp +588 -0
  128. data/vendor/tesseract-2.04/ccstruct/polyaprx.h +51 -0
  129. data/vendor/tesseract-2.04/ccstruct/polyblk.cpp +398 -0
  130. data/vendor/tesseract-2.04/ccstruct/polyblk.h +122 -0
  131. data/vendor/tesseract-2.04/ccstruct/polyblob.cpp +357 -0
  132. data/vendor/tesseract-2.04/ccstruct/polyblob.h +102 -0
  133. data/vendor/tesseract-2.04/ccstruct/polyvert.cpp +23 -0
  134. data/vendor/tesseract-2.04/ccstruct/polyvert.h +58 -0
  135. data/vendor/tesseract-2.04/ccstruct/poutline.cpp +441 -0
  136. data/vendor/tesseract-2.04/ccstruct/poutline.h +125 -0
  137. data/vendor/tesseract-2.04/ccstruct/quadlsq.cpp +147 -0
  138. data/vendor/tesseract-2.04/ccstruct/quadlsq.h +67 -0
  139. data/vendor/tesseract-2.04/ccstruct/quadratc.cpp +21 -0
  140. data/vendor/tesseract-2.04/ccstruct/quadratc.h +63 -0
  141. data/vendor/tesseract-2.04/ccstruct/quspline.cpp +382 -0
  142. data/vendor/tesseract-2.04/ccstruct/quspline.h +113 -0
  143. data/vendor/tesseract-2.04/ccstruct/ratngs.cpp +372 -0
  144. data/vendor/tesseract-2.04/ccstruct/ratngs.h +198 -0
  145. data/vendor/tesseract-2.04/ccstruct/rect.cpp +229 -0
  146. data/vendor/tesseract-2.04/ccstruct/rect.h +320 -0
  147. data/vendor/tesseract-2.04/ccstruct/rejctmap.cpp +545 -0
  148. data/vendor/tesseract-2.04/ccstruct/rejctmap.h +284 -0
  149. data/vendor/tesseract-2.04/ccstruct/rwpoly.cpp +89 -0
  150. data/vendor/tesseract-2.04/ccstruct/rwpoly.h +45 -0
  151. data/vendor/tesseract-2.04/ccstruct/statistc.cpp +905 -0
  152. data/vendor/tesseract-2.04/ccstruct/statistc.h +135 -0
  153. data/vendor/tesseract-2.04/ccstruct/stepblob.cpp +296 -0
  154. data/vendor/tesseract-2.04/ccstruct/stepblob.h +88 -0
  155. data/vendor/tesseract-2.04/ccstruct/txtregn.cpp +230 -0
  156. data/vendor/tesseract-2.04/ccstruct/txtregn.h +155 -0
  157. data/vendor/tesseract-2.04/ccstruct/vecfuncs.cpp +63 -0
  158. data/vendor/tesseract-2.04/ccstruct/vecfuncs.h +91 -0
  159. data/vendor/tesseract-2.04/ccstruct/werd.cpp +967 -0
  160. data/vendor/tesseract-2.04/ccstruct/werd.h +277 -0
  161. data/vendor/tesseract-2.04/ccutil/Makefile.am +19 -0
  162. data/vendor/tesseract-2.04/ccutil/Makefile.in +626 -0
  163. data/vendor/tesseract-2.04/ccutil/basedir.cpp +118 -0
  164. data/vendor/tesseract-2.04/ccutil/basedir.h +32 -0
  165. data/vendor/tesseract-2.04/ccutil/bits16.cpp +30 -0
  166. data/vendor/tesseract-2.04/ccutil/bits16.h +61 -0
  167. data/vendor/tesseract-2.04/ccutil/boxread.cpp +105 -0
  168. data/vendor/tesseract-2.04/ccutil/boxread.h +44 -0
  169. data/vendor/tesseract-2.04/ccutil/clst.cpp +626 -0
  170. data/vendor/tesseract-2.04/ccutil/clst.h +1085 -0
  171. data/vendor/tesseract-2.04/ccutil/debugwin.cpp +500 -0
  172. data/vendor/tesseract-2.04/ccutil/debugwin.h +103 -0
  173. data/vendor/tesseract-2.04/ccutil/elst.cpp +593 -0
  174. data/vendor/tesseract-2.04/ccutil/elst.h +1125 -0
  175. data/vendor/tesseract-2.04/ccutil/elst2.cpp +606 -0
  176. data/vendor/tesseract-2.04/ccutil/elst2.h +1121 -0
  177. data/vendor/tesseract-2.04/ccutil/errcode.cpp +104 -0
  178. data/vendor/tesseract-2.04/ccutil/errcode.h +104 -0
  179. data/vendor/tesseract-2.04/ccutil/fileerr.h +34 -0
  180. data/vendor/tesseract-2.04/ccutil/globaloc.cpp +115 -0
  181. data/vendor/tesseract-2.04/ccutil/globaloc.h +40 -0
  182. data/vendor/tesseract-2.04/ccutil/hashfn.cpp +57 -0
  183. data/vendor/tesseract-2.04/ccutil/hashfn.h +30 -0
  184. data/vendor/tesseract-2.04/ccutil/host.h +180 -0
  185. data/vendor/tesseract-2.04/ccutil/hosthplb.h +1 -0
  186. data/vendor/tesseract-2.04/ccutil/lsterr.h +43 -0
  187. data/vendor/tesseract-2.04/ccutil/mainblk.cpp +126 -0
  188. data/vendor/tesseract-2.04/ccutil/mainblk.h +39 -0
  189. data/vendor/tesseract-2.04/ccutil/memblk.cpp +1106 -0
  190. data/vendor/tesseract-2.04/ccutil/memblk.h +189 -0
  191. data/vendor/tesseract-2.04/ccutil/memry.cpp +532 -0
  192. data/vendor/tesseract-2.04/ccutil/memry.h +192 -0
  193. data/vendor/tesseract-2.04/ccutil/memryerr.h +38 -0
  194. data/vendor/tesseract-2.04/ccutil/mfcpch.cpp +5 -0
  195. data/vendor/tesseract-2.04/ccutil/mfcpch.h +37 -0
  196. data/vendor/tesseract-2.04/ccutil/ndminx.h +31 -0
  197. data/vendor/tesseract-2.04/ccutil/notdll.h +28 -0
  198. data/vendor/tesseract-2.04/ccutil/nwmain.h +176 -0
  199. data/vendor/tesseract-2.04/ccutil/ocrclass.h +345 -0
  200. data/vendor/tesseract-2.04/ccutil/ocrshell.cpp +772 -0
  201. data/vendor/tesseract-2.04/ccutil/ocrshell.h +191 -0
  202. data/vendor/tesseract-2.04/ccutil/platform.h +18 -0
  203. data/vendor/tesseract-2.04/ccutil/scanutils.cpp +543 -0
  204. data/vendor/tesseract-2.04/ccutil/scanutils.h +55 -0
  205. data/vendor/tesseract-2.04/ccutil/secname.h +9 -0
  206. data/vendor/tesseract-2.04/ccutil/serialis.cpp +117 -0
  207. data/vendor/tesseract-2.04/ccutil/serialis.h +93 -0
  208. data/vendor/tesseract-2.04/ccutil/stderr.h +26 -0
  209. data/vendor/tesseract-2.04/ccutil/strngs.cpp +495 -0
  210. data/vendor/tesseract-2.04/ccutil/strngs.h +138 -0
  211. data/vendor/tesseract-2.04/ccutil/tessclas.h +135 -0
  212. data/vendor/tesseract-2.04/ccutil/tessopt.cpp +61 -0
  213. data/vendor/tesseract-2.04/ccutil/tessopt.h +30 -0
  214. data/vendor/tesseract-2.04/ccutil/tprintf.cpp +122 -0
  215. data/vendor/tesseract-2.04/ccutil/tprintf.h +35 -0
  216. data/vendor/tesseract-2.04/ccutil/unichar.cpp +144 -0
  217. data/vendor/tesseract-2.04/ccutil/unichar.h +84 -0
  218. data/vendor/tesseract-2.04/ccutil/unicharmap.cpp +172 -0
  219. data/vendor/tesseract-2.04/ccutil/unicharmap.h +82 -0
  220. data/vendor/tesseract-2.04/ccutil/unicharset.cpp +307 -0
  221. data/vendor/tesseract-2.04/ccutil/unicharset.h +267 -0
  222. data/vendor/tesseract-2.04/ccutil/varable.cpp +672 -0
  223. data/vendor/tesseract-2.04/ccutil/varable.h +419 -0
  224. data/vendor/tesseract-2.04/classify/Makefile.am +24 -0
  225. data/vendor/tesseract-2.04/classify/Makefile.in +647 -0
  226. data/vendor/tesseract-2.04/classify/adaptive.cpp +535 -0
  227. data/vendor/tesseract-2.04/classify/adaptive.h +199 -0
  228. data/vendor/tesseract-2.04/classify/adaptmatch.cpp +2958 -0
  229. data/vendor/tesseract-2.04/classify/adaptmatch.h +86 -0
  230. data/vendor/tesseract-2.04/classify/baseline.cpp +58 -0
  231. data/vendor/tesseract-2.04/classify/baseline.h +91 -0
  232. data/vendor/tesseract-2.04/classify/blobclass.cpp +123 -0
  233. data/vendor/tesseract-2.04/classify/blobclass.h +49 -0
  234. data/vendor/tesseract-2.04/classify/chartoname.cpp +74 -0
  235. data/vendor/tesseract-2.04/classify/chartoname.h +21 -0
  236. data/vendor/tesseract-2.04/classify/cluster.cpp +2834 -0
  237. data/vendor/tesseract-2.04/classify/cluster.h +158 -0
  238. data/vendor/tesseract-2.04/classify/clusttool.cpp +507 -0
  239. data/vendor/tesseract-2.04/classify/clusttool.h +70 -0
  240. data/vendor/tesseract-2.04/classify/cutoffs.cpp +73 -0
  241. data/vendor/tesseract-2.04/classify/cutoffs.h +49 -0
  242. data/vendor/tesseract-2.04/classify/extern.h +32 -0
  243. data/vendor/tesseract-2.04/classify/extract.cpp +100 -0
  244. data/vendor/tesseract-2.04/classify/extract.h +36 -0
  245. data/vendor/tesseract-2.04/classify/featdefs.cpp +244 -0
  246. data/vendor/tesseract-2.04/classify/featdefs.h +71 -0
  247. data/vendor/tesseract-2.04/classify/flexfx.cpp +87 -0
  248. data/vendor/tesseract-2.04/classify/flexfx.h +34 -0
  249. data/vendor/tesseract-2.04/classify/float2int.cpp +126 -0
  250. data/vendor/tesseract-2.04/classify/float2int.h +65 -0
  251. data/vendor/tesseract-2.04/classify/fpoint.cpp +73 -0
  252. data/vendor/tesseract-2.04/classify/fpoint.h +63 -0
  253. data/vendor/tesseract-2.04/classify/fxdefs.cpp +74 -0
  254. data/vendor/tesseract-2.04/classify/fxdefs.h +93 -0
  255. data/vendor/tesseract-2.04/classify/fxid.h +69 -0
  256. data/vendor/tesseract-2.04/classify/hideedge.cpp +35 -0
  257. data/vendor/tesseract-2.04/classify/hideedge.h +76 -0
  258. data/vendor/tesseract-2.04/classify/intfx.cpp +608 -0
  259. data/vendor/tesseract-2.04/classify/intfx.h +63 -0
  260. data/vendor/tesseract-2.04/classify/intmatcher.cpp +1524 -0
  261. data/vendor/tesseract-2.04/classify/intmatcher.h +199 -0
  262. data/vendor/tesseract-2.04/classify/intproto.cpp +1823 -0
  263. data/vendor/tesseract-2.04/classify/intproto.h +320 -0
  264. data/vendor/tesseract-2.04/classify/kdtree.cpp +884 -0
  265. data/vendor/tesseract-2.04/classify/kdtree.h +118 -0
  266. data/vendor/tesseract-2.04/classify/mf.cpp +106 -0
  267. data/vendor/tesseract-2.04/classify/mf.h +43 -0
  268. data/vendor/tesseract-2.04/classify/mfdefs.cpp +58 -0
  269. data/vendor/tesseract-2.04/classify/mfdefs.h +60 -0
  270. data/vendor/tesseract-2.04/classify/mfoutline.cpp +1087 -0
  271. data/vendor/tesseract-2.04/classify/mfoutline.h +277 -0
  272. data/vendor/tesseract-2.04/classify/mfx.cpp +436 -0
  273. data/vendor/tesseract-2.04/classify/mfx.h +52 -0
  274. data/vendor/tesseract-2.04/classify/normfeat.cpp +132 -0
  275. data/vendor/tesseract-2.04/classify/normfeat.h +63 -0
  276. data/vendor/tesseract-2.04/classify/normmatch.cpp +305 -0
  277. data/vendor/tesseract-2.04/classify/normmatch.h +38 -0
  278. data/vendor/tesseract-2.04/classify/ocrfeatures.cpp +310 -0
  279. data/vendor/tesseract-2.04/classify/ocrfeatures.h +148 -0
  280. data/vendor/tesseract-2.04/classify/outfeat.cpp +262 -0
  281. data/vendor/tesseract-2.04/classify/outfeat.h +76 -0
  282. data/vendor/tesseract-2.04/classify/picofeat.cpp +297 -0
  283. data/vendor/tesseract-2.04/classify/picofeat.h +65 -0
  284. data/vendor/tesseract-2.04/classify/protos.cpp +472 -0
  285. data/vendor/tesseract-2.04/classify/protos.h +258 -0
  286. data/vendor/tesseract-2.04/classify/sigmenu.cpp +225 -0
  287. data/vendor/tesseract-2.04/classify/sigmenu.h +39 -0
  288. data/vendor/tesseract-2.04/classify/speckle.cpp +127 -0
  289. data/vendor/tesseract-2.04/classify/speckle.h +69 -0
  290. data/vendor/tesseract-2.04/classify/xform2d.cpp +120 -0
  291. data/vendor/tesseract-2.04/classify/xform2d.h +60 -0
  292. data/vendor/tesseract-2.04/config/config.guess +1466 -0
  293. data/vendor/tesseract-2.04/config/config.h.in +188 -0
  294. data/vendor/tesseract-2.04/config/config.sub +1579 -0
  295. data/vendor/tesseract-2.04/config/depcomp +530 -0
  296. data/vendor/tesseract-2.04/config/install-sh +269 -0
  297. data/vendor/tesseract-2.04/config/missing +198 -0
  298. data/vendor/tesseract-2.04/config/mkinstalldirs +40 -0
  299. data/vendor/tesseract-2.04/config/stamp-h.in +0 -0
  300. data/vendor/tesseract-2.04/configure +10424 -0
  301. data/vendor/tesseract-2.04/cutil/Makefile.am +14 -0
  302. data/vendor/tesseract-2.04/cutil/Makefile.in +612 -0
  303. data/vendor/tesseract-2.04/cutil/bitvec.cpp +115 -0
  304. data/vendor/tesseract-2.04/cutil/bitvec.h +100 -0
  305. data/vendor/tesseract-2.04/cutil/callcpp.h +190 -0
  306. data/vendor/tesseract-2.04/cutil/const.h +108 -0
  307. data/vendor/tesseract-2.04/cutil/cutil.cpp +92 -0
  308. data/vendor/tesseract-2.04/cutil/cutil.h +159 -0
  309. data/vendor/tesseract-2.04/cutil/danerror.cpp +144 -0
  310. data/vendor/tesseract-2.04/cutil/danerror.h +41 -0
  311. data/vendor/tesseract-2.04/cutil/debug.cpp +97 -0
  312. data/vendor/tesseract-2.04/cutil/debug.h +348 -0
  313. data/vendor/tesseract-2.04/cutil/efio.cpp +62 -0
  314. data/vendor/tesseract-2.04/cutil/efio.h +32 -0
  315. data/vendor/tesseract-2.04/cutil/emalloc.cpp +91 -0
  316. data/vendor/tesseract-2.04/cutil/emalloc.h +44 -0
  317. data/vendor/tesseract-2.04/cutil/freelist.cpp +75 -0
  318. data/vendor/tesseract-2.04/cutil/freelist.h +45 -0
  319. data/vendor/tesseract-2.04/cutil/funcdefs.h +35 -0
  320. data/vendor/tesseract-2.04/cutil/general.h +33 -0
  321. data/vendor/tesseract-2.04/cutil/globals.cpp +69 -0
  322. data/vendor/tesseract-2.04/cutil/globals.h +70 -0
  323. data/vendor/tesseract-2.04/cutil/listio.cpp +68 -0
  324. data/vendor/tesseract-2.04/cutil/listio.h +43 -0
  325. data/vendor/tesseract-2.04/cutil/minmax.h +40 -0
  326. data/vendor/tesseract-2.04/cutil/oldheap.cpp +337 -0
  327. data/vendor/tesseract-2.04/cutil/oldheap.h +126 -0
  328. data/vendor/tesseract-2.04/cutil/oldlist.cpp +393 -0
  329. data/vendor/tesseract-2.04/cutil/oldlist.h +350 -0
  330. data/vendor/tesseract-2.04/cutil/structures.cpp +66 -0
  331. data/vendor/tesseract-2.04/cutil/structures.h +112 -0
  332. data/vendor/tesseract-2.04/cutil/tessarray.cpp +115 -0
  333. data/vendor/tesseract-2.04/cutil/tessarray.h +166 -0
  334. data/vendor/tesseract-2.04/cutil/tordvars.cpp +95 -0
  335. data/vendor/tesseract-2.04/cutil/tordvars.h +61 -0
  336. data/vendor/tesseract-2.04/cutil/variables.cpp +317 -0
  337. data/vendor/tesseract-2.04/cutil/variables.h +170 -0
  338. data/vendor/tesseract-2.04/dict/Makefile.am +13 -0
  339. data/vendor/tesseract-2.04/dict/Makefile.in +609 -0
  340. data/vendor/tesseract-2.04/dict/choicearr.h +96 -0
  341. data/vendor/tesseract-2.04/dict/choices.cpp +210 -0
  342. data/vendor/tesseract-2.04/dict/choices.h +241 -0
  343. data/vendor/tesseract-2.04/dict/context.cpp +270 -0
  344. data/vendor/tesseract-2.04/dict/context.h +82 -0
  345. data/vendor/tesseract-2.04/dict/dawg.cpp +363 -0
  346. data/vendor/tesseract-2.04/dict/dawg.h +394 -0
  347. data/vendor/tesseract-2.04/dict/hyphen.cpp +84 -0
  348. data/vendor/tesseract-2.04/dict/hyphen.h +125 -0
  349. data/vendor/tesseract-2.04/dict/lookdawg.cpp +228 -0
  350. data/vendor/tesseract-2.04/dict/lookdawg.h +76 -0
  351. data/vendor/tesseract-2.04/dict/makedawg.cpp +449 -0
  352. data/vendor/tesseract-2.04/dict/makedawg.h +83 -0
  353. data/vendor/tesseract-2.04/dict/matchdefs.h +145 -0
  354. data/vendor/tesseract-2.04/dict/permdawg.cpp +415 -0
  355. data/vendor/tesseract-2.04/dict/permdawg.h +98 -0
  356. data/vendor/tesseract-2.04/dict/permngram.cpp +358 -0
  357. data/vendor/tesseract-2.04/dict/permngram.h +33 -0
  358. data/vendor/tesseract-2.04/dict/permnum.cpp +522 -0
  359. data/vendor/tesseract-2.04/dict/permnum.h +83 -0
  360. data/vendor/tesseract-2.04/dict/permute.cpp +1704 -0
  361. data/vendor/tesseract-2.04/dict/permute.h +93 -0
  362. data/vendor/tesseract-2.04/dict/reduce.cpp +424 -0
  363. data/vendor/tesseract-2.04/dict/reduce.h +112 -0
  364. data/vendor/tesseract-2.04/dict/states.cpp +382 -0
  365. data/vendor/tesseract-2.04/dict/states.h +111 -0
  366. data/vendor/tesseract-2.04/dict/stopper.cpp +1458 -0
  367. data/vendor/tesseract-2.04/dict/stopper.h +103 -0
  368. data/vendor/tesseract-2.04/dict/trie.cpp +683 -0
  369. data/vendor/tesseract-2.04/dict/trie.h +190 -0
  370. data/vendor/tesseract-2.04/dlltest/Makefile.am +2 -0
  371. data/vendor/tesseract-2.04/dlltest/Makefile.in +388 -0
  372. data/vendor/tesseract-2.04/dlltest/dlltest.cpp +163 -0
  373. data/vendor/tesseract-2.04/dlltest/dlltest.dsp +186 -0
  374. data/vendor/tesseract-2.04/dlltest/dlltest.vcproj +637 -0
  375. data/vendor/tesseract-2.04/eurotext.tif +0 -0
  376. data/vendor/tesseract-2.04/image/Makefile.am +10 -0
  377. data/vendor/tesseract-2.04/image/Makefile.in +596 -0
  378. data/vendor/tesseract-2.04/image/bitstrm.cpp +157 -0
  379. data/vendor/tesseract-2.04/image/bitstrm.h +73 -0
  380. data/vendor/tesseract-2.04/image/img.h +336 -0
  381. data/vendor/tesseract-2.04/image/imgbmp.cpp +223 -0
  382. data/vendor/tesseract-2.04/image/imgbmp.h +50 -0
  383. data/vendor/tesseract-2.04/image/imgerrs.h +35 -0
  384. data/vendor/tesseract-2.04/image/imgio.cpp +321 -0
  385. data/vendor/tesseract-2.04/image/imgio.h +22 -0
  386. data/vendor/tesseract-2.04/image/imgs.cpp +1764 -0
  387. data/vendor/tesseract-2.04/image/imgs.h +102 -0
  388. data/vendor/tesseract-2.04/image/imgtiff.cpp +723 -0
  389. data/vendor/tesseract-2.04/image/imgtiff.h +89 -0
  390. data/vendor/tesseract-2.04/image/imgunpk.h +1377 -0
  391. data/vendor/tesseract-2.04/image/svshowim.cpp +40 -0
  392. data/vendor/tesseract-2.04/image/svshowim.h +25 -0
  393. data/vendor/tesseract-2.04/java/Makefile.am +4 -0
  394. data/vendor/tesseract-2.04/java/Makefile.in +473 -0
  395. data/vendor/tesseract-2.04/java/com/Makefile.am +1 -0
  396. data/vendor/tesseract-2.04/java/com/Makefile.in +470 -0
  397. data/vendor/tesseract-2.04/java/com/google/Makefile.am +1 -0
  398. data/vendor/tesseract-2.04/java/com/google/Makefile.in +470 -0
  399. data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.am +4 -0
  400. data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.in +473 -0
  401. data/vendor/tesseract-2.04/java/com/google/scrollview/ScrollView.java +421 -0
  402. data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.am +5 -0
  403. data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.in +474 -0
  404. data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEvent.java +87 -0
  405. data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventHandler.java +296 -0
  406. data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventType.java +31 -0
  407. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.am +7 -0
  408. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.in +476 -0
  409. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVAbstractMenuItem.java +58 -0
  410. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVCheckboxMenuItem.java +60 -0
  411. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVEmptyMenuItem.java +48 -0
  412. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVImageHandler.java +228 -0
  413. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuBar.java +130 -0
  414. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuItem.java +61 -0
  415. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVPopupMenu.java +142 -0
  416. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVSubMenuItem.java +41 -0
  417. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVWindow.java +643 -0
  418. data/vendor/tesseract-2.04/java/makefile +55 -0
  419. data/vendor/tesseract-2.04/pageseg/Makefile.am +13 -0
  420. data/vendor/tesseract-2.04/pageseg/Makefile.in +596 -0
  421. data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.cpp +363 -0
  422. data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.h +90 -0
  423. data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.cpp +82 -0
  424. data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.h +30 -0
  425. data/vendor/tesseract-2.04/pageseg/pageseg.cpp +170 -0
  426. data/vendor/tesseract-2.04/pageseg/pageseg.h +29 -0
  427. data/vendor/tesseract-2.04/phototest.tif +0 -0
  428. data/vendor/tesseract-2.04/tessdata/Makefile.am +31 -0
  429. data/vendor/tesseract-2.04/tessdata/Makefile.in +529 -0
  430. data/vendor/tesseract-2.04/tessdata/configs/Makefile.am +3 -0
  431. data/vendor/tesseract-2.04/tessdata/configs/Makefile.in +344 -0
  432. data/vendor/tesseract-2.04/tessdata/configs/api_config +1 -0
  433. data/vendor/tesseract-2.04/tessdata/configs/box.train +19 -0
  434. data/vendor/tesseract-2.04/tessdata/configs/box.train.stderr +18 -0
  435. data/vendor/tesseract-2.04/tessdata/configs/inter +4 -0
  436. data/vendor/tesseract-2.04/tessdata/configs/kannada +4 -0
  437. data/vendor/tesseract-2.04/tessdata/configs/makebox +1 -0
  438. data/vendor/tesseract-2.04/tessdata/configs/unlv +3 -0
  439. data/vendor/tesseract-2.04/tessdata/confsets +3 -0
  440. data/vendor/tesseract-2.04/tessdata/eng.DangAmbigs +39 -0
  441. data/vendor/tesseract-2.04/tessdata/eng.freq-dawg +0 -0
  442. data/vendor/tesseract-2.04/tessdata/eng.inttemp +0 -0
  443. data/vendor/tesseract-2.04/tessdata/eng.normproto +1247 -0
  444. data/vendor/tesseract-2.04/tessdata/eng.pffmtable +111 -0
  445. data/vendor/tesseract-2.04/tessdata/eng.unicharset +113 -0
  446. data/vendor/tesseract-2.04/tessdata/eng.user-words +921 -0
  447. data/vendor/tesseract-2.04/tessdata/eng.word-dawg +0 -0
  448. data/vendor/tesseract-2.04/tessdata/makedummies +8 -0
  449. data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.am +3 -0
  450. data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.in +344 -0
  451. data/vendor/tesseract-2.04/tessdata/tessconfigs/batch +2 -0
  452. data/vendor/tesseract-2.04/tessdata/tessconfigs/batch.nochop +2 -0
  453. data/vendor/tesseract-2.04/tessdata/tessconfigs/matdemo +7 -0
  454. data/vendor/tesseract-2.04/tessdata/tessconfigs/msdemo +13 -0
  455. data/vendor/tesseract-2.04/tessdata/tessconfigs/nobatch +2 -0
  456. data/vendor/tesseract-2.04/tessdata/tessconfigs/segdemo +9 -0
  457. data/vendor/tesseract-2.04/tessdll.cpp +351 -0
  458. data/vendor/tesseract-2.04/tessdll.dsp +2050 -0
  459. data/vendor/tesseract-2.04/tessdll.h +143 -0
  460. data/vendor/tesseract-2.04/tessdll.vcproj +5495 -0
  461. data/vendor/tesseract-2.04/tesseract.dsp +2124 -0
  462. data/vendor/tesseract-2.04/tesseract.dsw +116 -0
  463. data/vendor/tesseract-2.04/tesseract.sln +59 -0
  464. data/vendor/tesseract-2.04/tesseract.spec +188 -0
  465. data/vendor/tesseract-2.04/tesseract.vcproj +5859 -0
  466. data/vendor/tesseract-2.04/testing/Makefile.am +2 -0
  467. data/vendor/tesseract-2.04/testing/Makefile.in +312 -0
  468. data/vendor/tesseract-2.04/testing/README +43 -0
  469. data/vendor/tesseract-2.04/testing/counttestset.sh +61 -0
  470. data/vendor/tesseract-2.04/testing/reorgdata.sh +44 -0
  471. data/vendor/tesseract-2.04/testing/reports/1995.bus.3B.sum +1 -0
  472. data/vendor/tesseract-2.04/testing/reports/1995.doe3.3B.sum +1 -0
  473. data/vendor/tesseract-2.04/testing/reports/1995.mag.3B.sum +1 -0
  474. data/vendor/tesseract-2.04/testing/reports/1995.news.3B.sum +1 -0
  475. data/vendor/tesseract-2.04/testing/reports/2.03.summary +9 -0
  476. data/vendor/tesseract-2.04/testing/reports/2.04.summary +9 -0
  477. data/vendor/tesseract-2.04/testing/runalltests.sh +110 -0
  478. data/vendor/tesseract-2.04/testing/runtestset.sh +61 -0
  479. data/vendor/tesseract-2.04/textord/Makefile.am +20 -0
  480. data/vendor/tesseract-2.04/textord/Makefile.in +624 -0
  481. data/vendor/tesseract-2.04/textord/blkocc.cpp +809 -0
  482. data/vendor/tesseract-2.04/textord/blkocc.h +327 -0
  483. data/vendor/tesseract-2.04/textord/blobcmpl.h +31 -0
  484. data/vendor/tesseract-2.04/textord/drawedg.cpp +77 -0
  485. data/vendor/tesseract-2.04/textord/drawedg.h +34 -0
  486. data/vendor/tesseract-2.04/textord/drawtord.cpp +469 -0
  487. data/vendor/tesseract-2.04/textord/drawtord.h +107 -0
  488. data/vendor/tesseract-2.04/textord/edgblob.cpp +412 -0
  489. data/vendor/tesseract-2.04/textord/edgblob.h +100 -0
  490. data/vendor/tesseract-2.04/textord/edgloop.cpp +211 -0
  491. data/vendor/tesseract-2.04/textord/edgloop.h +66 -0
  492. data/vendor/tesseract-2.04/textord/fpchop.cpp +1641 -0
  493. data/vendor/tesseract-2.04/textord/fpchop.h +238 -0
  494. data/vendor/tesseract-2.04/textord/gap_map.cpp +166 -0
  495. data/vendor/tesseract-2.04/textord/gap_map.h +40 -0
  496. data/vendor/tesseract-2.04/textord/makerow.cpp +2628 -0
  497. data/vendor/tesseract-2.04/textord/makerow.h +295 -0
  498. data/vendor/tesseract-2.04/textord/oldbasel.cpp +1761 -0
  499. data/vendor/tesseract-2.04/textord/oldbasel.h +195 -0
  500. data/vendor/tesseract-2.04/textord/pithsync.cpp +696 -0
  501. data/vendor/tesseract-2.04/textord/pithsync.h +134 -0
  502. data/vendor/tesseract-2.04/textord/pitsync1.cpp +425 -0
  503. data/vendor/tesseract-2.04/textord/pitsync1.h +135 -0
  504. data/vendor/tesseract-2.04/textord/scanedg.cpp +452 -0
  505. data/vendor/tesseract-2.04/textord/scanedg.h +74 -0
  506. data/vendor/tesseract-2.04/textord/sortflts.cpp +80 -0
  507. data/vendor/tesseract-2.04/textord/sortflts.h +64 -0
  508. data/vendor/tesseract-2.04/textord/tessout.h +76 -0
  509. data/vendor/tesseract-2.04/textord/topitch.cpp +2019 -0
  510. data/vendor/tesseract-2.04/textord/topitch.h +195 -0
  511. data/vendor/tesseract-2.04/textord/tordmain.cpp +907 -0
  512. data/vendor/tesseract-2.04/textord/tordmain.h +132 -0
  513. data/vendor/tesseract-2.04/textord/tospace.cpp +1939 -0
  514. data/vendor/tesseract-2.04/textord/tospace.h +193 -0
  515. data/vendor/tesseract-2.04/textord/tovars.cpp +87 -0
  516. data/vendor/tesseract-2.04/textord/tovars.h +94 -0
  517. data/vendor/tesseract-2.04/textord/underlin.cpp +312 -0
  518. data/vendor/tesseract-2.04/textord/underlin.h +53 -0
  519. data/vendor/tesseract-2.04/textord/wordseg.cpp +620 -0
  520. data/vendor/tesseract-2.04/textord/wordseg.h +70 -0
  521. data/vendor/tesseract-2.04/training/Makefile.am +54 -0
  522. data/vendor/tesseract-2.04/training/Makefile.in +720 -0
  523. data/vendor/tesseract-2.04/training/cnTraining.cpp +855 -0
  524. data/vendor/tesseract-2.04/training/cntraining.dsp +243 -0
  525. data/vendor/tesseract-2.04/training/cntraining.vcproj +950 -0
  526. data/vendor/tesseract-2.04/training/mergenf.cpp +451 -0
  527. data/vendor/tesseract-2.04/training/mergenf.h +106 -0
  528. data/vendor/tesseract-2.04/training/mfTraining.cpp +1341 -0
  529. data/vendor/tesseract-2.04/training/mftraining.dsp +285 -0
  530. data/vendor/tesseract-2.04/training/mftraining.vcproj +1055 -0
  531. data/vendor/tesseract-2.04/training/name2char.cpp +166 -0
  532. data/vendor/tesseract-2.04/training/name2char.h +38 -0
  533. data/vendor/tesseract-2.04/training/training.cpp +190 -0
  534. data/vendor/tesseract-2.04/training/training.h +130 -0
  535. data/vendor/tesseract-2.04/training/unicharset_extractor.cpp +140 -0
  536. data/vendor/tesseract-2.04/training/unicharset_extractor.dsp +335 -0
  537. data/vendor/tesseract-2.04/training/unicharset_extractor.vcproj +769 -0
  538. data/vendor/tesseract-2.04/training/wordlist2dawg.cpp +69 -0
  539. data/vendor/tesseract-2.04/training/wordlist2dawg.dsp +319 -0
  540. data/vendor/tesseract-2.04/training/wordlist2dawg.vcproj +1113 -0
  541. data/vendor/tesseract-2.04/viewer/Makefile.am +9 -0
  542. data/vendor/tesseract-2.04/viewer/Makefile.in +591 -0
  543. data/vendor/tesseract-2.04/viewer/scrollview.cpp +825 -0
  544. data/vendor/tesseract-2.04/viewer/scrollview.h +414 -0
  545. data/vendor/tesseract-2.04/viewer/svmnode.cpp +140 -0
  546. data/vendor/tesseract-2.04/viewer/svmnode.h +94 -0
  547. data/vendor/tesseract-2.04/viewer/svpaint.cpp +220 -0
  548. data/vendor/tesseract-2.04/viewer/svutil.cpp +347 -0
  549. data/vendor/tesseract-2.04/viewer/svutil.h +138 -0
  550. data/vendor/tesseract-2.04/wordrec/Makefile.am +23 -0
  551. data/vendor/tesseract-2.04/wordrec/Makefile.in +641 -0
  552. data/vendor/tesseract-2.04/wordrec/associate.cpp +62 -0
  553. data/vendor/tesseract-2.04/wordrec/associate.h +93 -0
  554. data/vendor/tesseract-2.04/wordrec/badwords.cpp +106 -0
  555. data/vendor/tesseract-2.04/wordrec/badwords.h +51 -0
  556. data/vendor/tesseract-2.04/wordrec/bestfirst.cpp +526 -0
  557. data/vendor/tesseract-2.04/wordrec/bestfirst.h +203 -0
  558. data/vendor/tesseract-2.04/wordrec/charsample.h +208 -0
  559. data/vendor/tesseract-2.04/wordrec/chop.cpp +458 -0
  560. data/vendor/tesseract-2.04/wordrec/chop.h +153 -0
  561. data/vendor/tesseract-2.04/wordrec/chopper.cpp +750 -0
  562. data/vendor/tesseract-2.04/wordrec/chopper.h +104 -0
  563. data/vendor/tesseract-2.04/wordrec/closed.cpp +136 -0
  564. data/vendor/tesseract-2.04/wordrec/closed.h +65 -0
  565. data/vendor/tesseract-2.04/wordrec/djmenus.cpp +118 -0
  566. data/vendor/tesseract-2.04/wordrec/djmenus.h +33 -0
  567. data/vendor/tesseract-2.04/wordrec/drawfx.cpp +92 -0
  568. data/vendor/tesseract-2.04/wordrec/drawfx.h +33 -0
  569. data/vendor/tesseract-2.04/wordrec/findseam.cpp +566 -0
  570. data/vendor/tesseract-2.04/wordrec/findseam.h +69 -0
  571. data/vendor/tesseract-2.04/wordrec/gradechop.cpp +226 -0
  572. data/vendor/tesseract-2.04/wordrec/gradechop.h +91 -0
  573. data/vendor/tesseract-2.04/wordrec/heuristic.cpp +194 -0
  574. data/vendor/tesseract-2.04/wordrec/heuristic.h +120 -0
  575. data/vendor/tesseract-2.04/wordrec/makechop.cpp +281 -0
  576. data/vendor/tesseract-2.04/wordrec/makechop.h +69 -0
  577. data/vendor/tesseract-2.04/wordrec/matchtab.cpp +191 -0
  578. data/vendor/tesseract-2.04/wordrec/matchtab.h +45 -0
  579. data/vendor/tesseract-2.04/wordrec/matrix.cpp +118 -0
  580. data/vendor/tesseract-2.04/wordrec/matrix.h +104 -0
  581. data/vendor/tesseract-2.04/wordrec/measure.h +135 -0
  582. data/vendor/tesseract-2.04/wordrec/metrics.cpp +363 -0
  583. data/vendor/tesseract-2.04/wordrec/metrics.h +130 -0
  584. data/vendor/tesseract-2.04/wordrec/mfvars.cpp +51 -0
  585. data/vendor/tesseract-2.04/wordrec/mfvars.h +27 -0
  586. data/vendor/tesseract-2.04/wordrec/msmenus.cpp +110 -0
  587. data/vendor/tesseract-2.04/wordrec/msmenus.h +45 -0
  588. data/vendor/tesseract-2.04/wordrec/olutil.cpp +153 -0
  589. data/vendor/tesseract-2.04/wordrec/olutil.h +128 -0
  590. data/vendor/tesseract-2.04/wordrec/outlines.cpp +172 -0
  591. data/vendor/tesseract-2.04/wordrec/outlines.h +148 -0
  592. data/vendor/tesseract-2.04/wordrec/pieces.cpp +410 -0
  593. data/vendor/tesseract-2.04/wordrec/pieces.h +154 -0
  594. data/vendor/tesseract-2.04/wordrec/plotedges.cpp +134 -0
  595. data/vendor/tesseract-2.04/wordrec/plotedges.h +71 -0
  596. data/vendor/tesseract-2.04/wordrec/plotseg.cpp +116 -0
  597. data/vendor/tesseract-2.04/wordrec/plotseg.h +73 -0
  598. data/vendor/tesseract-2.04/wordrec/render.cpp +152 -0
  599. data/vendor/tesseract-2.04/wordrec/render.h +58 -0
  600. data/vendor/tesseract-2.04/wordrec/seam.cpp +482 -0
  601. data/vendor/tesseract-2.04/wordrec/seam.h +136 -0
  602. data/vendor/tesseract-2.04/wordrec/split.cpp +182 -0
  603. data/vendor/tesseract-2.04/wordrec/split.h +115 -0
  604. data/vendor/tesseract-2.04/wordrec/tally.cpp +68 -0
  605. data/vendor/tesseract-2.04/wordrec/tally.h +94 -0
  606. data/vendor/tesseract-2.04/wordrec/tessinit.cpp +108 -0
  607. data/vendor/tesseract-2.04/wordrec/tessinit.h +46 -0
  608. data/vendor/tesseract-2.04/wordrec/tface.cpp +272 -0
  609. data/vendor/tesseract-2.04/wordrec/tface.h +35 -0
  610. data/vendor/tesseract-2.04/wordrec/wordclass.cpp +284 -0
  611. data/vendor/tesseract-2.04/wordrec/wordclass.h +64 -0
  612. metadata +708 -0
@@ -0,0 +1,650 @@
1
+ /**********************************************************************
2
+ * File: coutln.c (Formerly coutline.c)
3
+ * Description: Code for the C_OUTLINE class.
4
+ * Author: Ray Smith
5
+ * Created: Mon Oct 07 16:01:57 BST 1991
6
+ *
7
+ * (C) Copyright 1991, Hewlett-Packard Ltd.
8
+ ** Licensed under the Apache License, Version 2.0 (the "License");
9
+ ** you may not use this file except in compliance with the License.
10
+ ** You may obtain a copy of the License at
11
+ ** http://www.apache.org/licenses/LICENSE-2.0
12
+ ** Unless required by applicable law or agreed to in writing, software
13
+ ** distributed under the License is distributed on an "AS IS" BASIS,
14
+ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ ** See the License for the specific language governing permissions and
16
+ ** limitations under the License.
17
+ *
18
+ **********************************************************************/
19
+
20
+ #include "mfcpch.h"
21
+ #include <string.h>
22
+ #ifdef __UNIX__
23
+ #include <assert.h>
24
+ #endif
25
+ #include "coutln.h"
26
+
27
+ ELISTIZE_S (C_OUTLINE)
28
+ ICOORD C_OUTLINE::step_coords[4] = {
29
+ ICOORD (-1, 0), ICOORD (0, -1), ICOORD (1, 0), ICOORD (0, 1)
30
+ };
31
+
32
+ /**********************************************************************
33
+ * C_OUTLINE::C_OUTLINE
34
+ *
35
+ * Constructor to build a C_OUTLINE from a CRACKEDGE LOOP.
36
+ **********************************************************************/
37
+
38
+ C_OUTLINE::C_OUTLINE (
39
+ //constructor
40
+ CRACKEDGE * startpt, //outline to convert
41
+ ICOORD bot_left, //bounding box
42
+ ICOORD top_right, inT16 length //length of loop
43
+ ):box (bot_left, top_right), start (startpt->pos) {
44
+ inT16 stepindex; //index to step
45
+ CRACKEDGE *edgept; //current point
46
+
47
+ stepcount = length; //no of steps
48
+ if (length == 0) {
49
+ steps = NULL;
50
+ return;
51
+ }
52
+ //get memory
53
+ steps = (uinT8 *) alloc_mem (step_mem());
54
+ memset(steps, 0, step_mem());
55
+ edgept = startpt;
56
+
57
+ for (stepindex = 0; stepindex < length; stepindex++) {
58
+ //set compact step
59
+ set_step (stepindex, edgept->stepdir);
60
+ edgept = edgept->next;
61
+ }
62
+ }
63
+
64
+
65
+ /**********************************************************************
66
+ * C_OUTLINE::C_OUTLINE
67
+ *
68
+ * Constructor to build a C_OUTLINE from a C_OUTLINE_FRAG.
69
+ **********************************************************************/
70
+ C_OUTLINE::C_OUTLINE (
71
+ //constructor
72
+ //steps to copy
73
+ ICOORD startpt, DIR128 * new_steps,
74
+ inT16 length //length of loop
75
+ ):start (startpt) {
76
+ inT8 dirdiff; //direction difference
77
+ DIR128 prevdir; //previous direction
78
+ DIR128 dir; //current direction
79
+ DIR128 lastdir; //dir of last step
80
+ TBOX new_box; //easy bounding
81
+ inT16 stepindex; //index to step
82
+ inT16 srcindex; //source steps
83
+ ICOORD pos; //current position
84
+
85
+ pos = startpt;
86
+ stepcount = length; //no of steps
87
+ //get memory
88
+ steps = (uinT8 *) alloc_mem (step_mem());
89
+ memset(steps, 0, step_mem());
90
+
91
+ lastdir = new_steps[length - 1];
92
+ prevdir = lastdir;
93
+ for (stepindex = 0, srcindex = 0; srcindex < length;
94
+ stepindex++, srcindex++) {
95
+ new_box = TBOX (pos, pos);
96
+ box += new_box;
97
+ //copy steps
98
+ dir = new_steps[srcindex];
99
+ set_step(stepindex, dir);
100
+ dirdiff = dir - prevdir;
101
+ pos += step (stepindex);
102
+ if ((dirdiff == 64 || dirdiff == -64) && stepindex > 0) {
103
+ stepindex -= 2; //cancel there-and-back
104
+ prevdir = stepindex >= 0 ? step_dir (stepindex) : lastdir;
105
+ }
106
+ else
107
+ prevdir = dir;
108
+ }
109
+ ASSERT_HOST (pos.x () == startpt.x () && pos.y () == startpt.y ());
110
+ do {
111
+ dirdiff = step_dir (stepindex - 1) - step_dir (0);
112
+ if (dirdiff == 64 || dirdiff == -64) {
113
+ start += step (0);
114
+ stepindex -= 2; //cancel there-and-back
115
+ for (int i = 0; i < stepindex; ++i)
116
+ set_step(i, step_dir(i + 1));
117
+ }
118
+ }
119
+ while (stepindex > 1 && (dirdiff == 64 || dirdiff == -64));
120
+ stepcount = stepindex;
121
+ ASSERT_HOST (stepcount >= 4);
122
+ }
123
+
124
+ /**********************************************************************
125
+ * C_OUTLINE::C_OUTLINE
126
+ *
127
+ * Constructor to build a C_OUTLINE from a rotation of a C_OUTLINE.
128
+ **********************************************************************/
129
+
130
+ C_OUTLINE::C_OUTLINE( //constructor
131
+ C_OUTLINE *srcline, //outline to
132
+ FCOORD rotation //rotate
133
+ ) {
134
+ TBOX new_box; //easy bounding
135
+ inT16 stepindex; //index to step
136
+ inT16 dirdiff; //direction change
137
+ ICOORD pos; //current position
138
+ ICOORD prevpos; //previous dest point
139
+
140
+ ICOORD destpos; //destination point
141
+ inT16 destindex; //index to step
142
+ DIR128 dir; //coded direction
143
+ uinT8 new_step;
144
+
145
+ stepcount = srcline->stepcount * 2;
146
+ //get memory
147
+ steps = (uinT8 *) alloc_mem (step_mem());
148
+ memset(steps, 0, step_mem());
149
+
150
+ for (int iteration = 0; iteration < 2; ++iteration) {
151
+ DIR128 round1 = iteration == 0 ? 32 : 0;
152
+ DIR128 round2 = iteration != 0 ? 32 : 0;
153
+ pos = srcline->start;
154
+ prevpos = pos;
155
+ prevpos.rotate (rotation);
156
+ start = prevpos;
157
+ box = TBOX (start, start);
158
+ destindex = 0;
159
+ for (stepindex = 0; stepindex < srcline->stepcount; stepindex++) {
160
+ pos += srcline->step (stepindex);
161
+ destpos = pos;
162
+ destpos.rotate (rotation);
163
+ // printf("%i %i %i %i ", destpos.x(), destpos.y(), pos.x(), pos.y());
164
+ while (destpos.x () != prevpos.x () || destpos.y () != prevpos.y ()) {
165
+ dir = DIR128 (FCOORD (destpos - prevpos));
166
+ dir += 64; //turn to step style
167
+ new_step = dir.get_dir ();
168
+ // printf(" %i\n", new_step);
169
+ if (new_step & 31) {
170
+ set_step(destindex++, dir + round1);
171
+ prevpos += step(destindex - 1);
172
+ if (destindex < 2
173
+ || ((dirdiff =
174
+ step_dir (destindex - 1) - step_dir (destindex - 2)) !=
175
+ -64 && dirdiff != 64)) {
176
+ set_step(destindex++, dir + round2);
177
+ prevpos += step(destindex - 1);
178
+ } else {
179
+ prevpos -= step(destindex - 1);
180
+ destindex--;
181
+ prevpos -= step(destindex - 1);
182
+ set_step(destindex - 1, dir + round2);
183
+ prevpos += step(destindex - 1);
184
+ }
185
+ }
186
+ else {
187
+ set_step(destindex++, dir);
188
+ prevpos += step(destindex - 1);
189
+ }
190
+ while (destindex >= 2 &&
191
+ ((dirdiff =
192
+ step_dir (destindex - 1) - step_dir (destindex - 2)) == -64 ||
193
+ dirdiff == 64)) {
194
+ prevpos -= step(destindex - 1);
195
+ prevpos -= step(destindex - 2);
196
+ destindex -= 2; // Forget u turn
197
+ }
198
+ //ASSERT_HOST(prevpos.x() == destpos.x() && prevpos.y() == destpos.y());
199
+ new_box = TBOX (destpos, destpos);
200
+ box += new_box;
201
+ }
202
+ }
203
+ ASSERT_HOST (destpos.x () == start.x () && destpos.y () == start.y ());
204
+ dirdiff = step_dir (destindex - 1) - step_dir (0);
205
+ while ((dirdiff == 64 || dirdiff == -64) && destindex > 1) {
206
+ start += step (0);
207
+ destindex -= 2;
208
+ for (int i = 0; i < destindex; ++i)
209
+ set_step(i, step_dir(i + 1));
210
+ dirdiff = step_dir (destindex - 1) - step_dir (0);
211
+ }
212
+ if (destindex >= 4)
213
+ break;
214
+ }
215
+ stepcount = destindex;
216
+ destpos = start;
217
+ for (stepindex = 0; stepindex < stepcount; stepindex++) {
218
+ destpos += step (stepindex);
219
+ }
220
+ ASSERT_HOST (destpos.x () == start.x () && destpos.y () == start.y ());
221
+ }
222
+
223
+
224
+ /**********************************************************************
225
+ * C_OUTLINE::area
226
+ *
227
+ * Compute the area of the outline.
228
+ **********************************************************************/
229
+
230
+ inT32 C_OUTLINE::area() { //winding number
231
+ int stepindex; //current step
232
+ inT32 total_steps; //steps to do
233
+ inT32 total; //total area
234
+ ICOORD pos; //position of point
235
+ ICOORD next_step; //step to next pix
236
+ C_OUTLINE_IT it = child ();
237
+
238
+ pos = start_pos ();
239
+ total_steps = pathlength ();
240
+ total = 0;
241
+ for (stepindex = 0; stepindex < total_steps; stepindex++) {
242
+ //all intersected
243
+ next_step = step (stepindex);
244
+ if (next_step.x () < 0)
245
+ total += pos.y ();
246
+ else if (next_step.x () > 0)
247
+ total -= pos.y ();
248
+ pos += next_step;
249
+ }
250
+ for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ())
251
+ total += it.data ()->area ();//add areas of children
252
+
253
+ return total;
254
+ }
255
+
256
+ /**********************************************************************
257
+ * C_OUTLINE::perimeter
258
+ *
259
+ * Compute the perimeter of the outline and its first level children.
260
+ **********************************************************************/
261
+
262
+ inT32 C_OUTLINE::perimeter() {
263
+ inT32 total_steps; // Return value.
264
+ C_OUTLINE_IT it = child();
265
+
266
+ total_steps = pathlength();
267
+ for (it.mark_cycle_pt(); !it.cycled_list(); it.forward())
268
+ total_steps += it.data()->pathlength(); // Add perimeters of children.
269
+
270
+ return total_steps;
271
+ }
272
+
273
+
274
+ /**********************************************************************
275
+ * C_OUTLINE::outer_area
276
+ *
277
+ * Compute the area of the outline.
278
+ **********************************************************************/
279
+
280
+ inT32 C_OUTLINE::outer_area() { //winding number
281
+ int stepindex; //current step
282
+ inT32 total_steps; //steps to do
283
+ inT32 total; //total area
284
+ ICOORD pos; //position of point
285
+ ICOORD next_step; //step to next pix
286
+
287
+ pos = start_pos ();
288
+ total_steps = pathlength ();
289
+ if (total_steps == 0)
290
+ return box.area();
291
+ total = 0;
292
+ for (stepindex = 0; stepindex < total_steps; stepindex++) {
293
+ //all intersected
294
+ next_step = step (stepindex);
295
+ if (next_step.x () < 0)
296
+ total += pos.y ();
297
+ else if (next_step.x () > 0)
298
+ total -= pos.y ();
299
+ pos += next_step;
300
+ }
301
+
302
+ return total;
303
+ }
304
+
305
+
306
+ /**********************************************************************
307
+ * C_OUTLINE::count_transitions
308
+ *
309
+ * Compute the number of x and y maxes and mins in the outline.
310
+ **********************************************************************/
311
+
312
+ inT32 C_OUTLINE::count_transitions( //winding number
313
+ inT32 threshold //on size
314
+ ) {
315
+ BOOL8 first_was_max_x; //what was first
316
+ BOOL8 first_was_max_y;
317
+ BOOL8 looking_for_max_x; //what is next
318
+ BOOL8 looking_for_min_x;
319
+ BOOL8 looking_for_max_y; //what is next
320
+ BOOL8 looking_for_min_y;
321
+ int stepindex; //current step
322
+ inT32 total_steps; //steps to do
323
+ //current limits
324
+ inT32 max_x, min_x, max_y, min_y;
325
+ inT32 initial_x, initial_y; //initial limits
326
+ inT32 total; //total changes
327
+ ICOORD pos; //position of point
328
+ ICOORD next_step; //step to next pix
329
+
330
+ pos = start_pos ();
331
+ total_steps = pathlength ();
332
+ total = 0;
333
+ max_x = min_x = pos.x ();
334
+ max_y = min_y = pos.y ();
335
+ looking_for_max_x = TRUE;
336
+ looking_for_min_x = TRUE;
337
+ looking_for_max_y = TRUE;
338
+ looking_for_min_y = TRUE;
339
+ first_was_max_x = FALSE;
340
+ first_was_max_y = FALSE;
341
+ initial_x = pos.x ();
342
+ initial_y = pos.y (); //stop uninit warning
343
+ for (stepindex = 0; stepindex < total_steps; stepindex++) {
344
+ //all intersected
345
+ next_step = step (stepindex);
346
+ pos += next_step;
347
+ if (next_step.x () < 0) {
348
+ if (looking_for_max_x && pos.x () < min_x)
349
+ min_x = pos.x ();
350
+ if (looking_for_min_x && max_x - pos.x () > threshold) {
351
+ if (looking_for_max_x) {
352
+ initial_x = max_x;
353
+ first_was_max_x = FALSE;
354
+ }
355
+ total++;
356
+ looking_for_max_x = TRUE;
357
+ looking_for_min_x = FALSE;
358
+ min_x = pos.x (); //reset min
359
+ }
360
+ }
361
+ else if (next_step.x () > 0) {
362
+ if (looking_for_min_x && pos.x () > max_x)
363
+ max_x = pos.x ();
364
+ if (looking_for_max_x && pos.x () - min_x > threshold) {
365
+ if (looking_for_min_x) {
366
+ initial_x = min_x; //remember first min
367
+ first_was_max_x = TRUE;
368
+ }
369
+ total++;
370
+ looking_for_max_x = FALSE;
371
+ looking_for_min_x = TRUE;
372
+ max_x = pos.x ();
373
+ }
374
+ }
375
+ else if (next_step.y () < 0) {
376
+ if (looking_for_max_y && pos.y () < min_y)
377
+ min_y = pos.y ();
378
+ if (looking_for_min_y && max_y - pos.y () > threshold) {
379
+ if (looking_for_max_y) {
380
+ initial_y = max_y; //remember first max
381
+ first_was_max_y = FALSE;
382
+ }
383
+ total++;
384
+ looking_for_max_y = TRUE;
385
+ looking_for_min_y = FALSE;
386
+ min_y = pos.y (); //reset min
387
+ }
388
+ }
389
+ else {
390
+ if (looking_for_min_y && pos.y () > max_y)
391
+ max_y = pos.y ();
392
+ if (looking_for_max_y && pos.y () - min_y > threshold) {
393
+ if (looking_for_min_y) {
394
+ initial_y = min_y; //remember first min
395
+ first_was_max_y = TRUE;
396
+ }
397
+ total++;
398
+ looking_for_max_y = FALSE;
399
+ looking_for_min_y = TRUE;
400
+ max_y = pos.y ();
401
+ }
402
+ }
403
+
404
+ }
405
+ if (first_was_max_x && looking_for_min_x) {
406
+ if (max_x - initial_x > threshold)
407
+ total++;
408
+ else
409
+ total--;
410
+ }
411
+ else if (!first_was_max_x && looking_for_max_x) {
412
+ if (initial_x - min_x > threshold)
413
+ total++;
414
+ else
415
+ total--;
416
+ }
417
+ if (first_was_max_y && looking_for_min_y) {
418
+ if (max_y - initial_y > threshold)
419
+ total++;
420
+ else
421
+ total--;
422
+ }
423
+ else if (!first_was_max_y && looking_for_max_y) {
424
+ if (initial_y - min_y > threshold)
425
+ total++;
426
+ else
427
+ total--;
428
+ }
429
+
430
+ return total;
431
+ }
432
+
433
+
434
+ /**********************************************************************
435
+ * C_OUTLINE::operator<
436
+ *
437
+ * Return TRUE if the left operand is inside the right one.
438
+ **********************************************************************/
439
+
440
+ BOOL8
441
+ C_OUTLINE::operator< ( //winding number
442
+ const C_OUTLINE & other //other outline
443
+ ) const
444
+ {
445
+ inT16 count = 0; //winding count
446
+ ICOORD pos; //position of point
447
+ inT32 stepindex; //index to cstep
448
+
449
+ if (!box.overlap (other.box))
450
+ return FALSE; //can't be contained
451
+ if (stepcount == 0)
452
+ return other.box.contains(this->box);
453
+
454
+ pos = start;
455
+ for (stepindex = 0; stepindex < stepcount
456
+ && (count = other.winding_number (pos)) == INTERSECTING; stepindex++)
457
+ pos += step (stepindex); //try all points
458
+ if (count == INTERSECTING) {
459
+ //all intersected
460
+ pos = other.start;
461
+ for (stepindex = 0; stepindex < other.stepcount
462
+ && (count = winding_number (pos)) == INTERSECTING; stepindex++)
463
+ //try other way round
464
+ pos += other.step (stepindex);
465
+ return count == INTERSECTING || count == 0;
466
+ }
467
+ return count != 0;
468
+ }
469
+
470
+
471
+ /**********************************************************************
472
+ * C_OUTLINE::winding_number
473
+ *
474
+ * Return the winding number of the outline around the given point.
475
+ **********************************************************************/
476
+
477
+ inT16 C_OUTLINE::winding_number( //winding number
478
+ ICOORD point //point to wind around
479
+ ) const {
480
+ inT16 stepindex; //index to cstep
481
+ inT16 count; //winding count
482
+ ICOORD vec; //to current point
483
+ ICOORD stepvec; //step vector
484
+ inT32 cross; //cross product
485
+
486
+ vec = start - point; //vector to it
487
+ count = 0;
488
+ for (stepindex = 0; stepindex < stepcount; stepindex++) {
489
+ stepvec = step (stepindex); //get the step
490
+ //crossing the line
491
+ if (vec.y () <= 0 && vec.y () + stepvec.y () > 0) {
492
+ cross = vec * stepvec; //cross product
493
+ if (cross > 0)
494
+ count++; //crossing right half
495
+ else if (cross == 0)
496
+ return INTERSECTING; //going through point
497
+ }
498
+ else if (vec.y () > 0 && vec.y () + stepvec.y () <= 0) {
499
+ cross = vec * stepvec;
500
+ if (cross < 0)
501
+ count--; //crossing back
502
+ else if (cross == 0)
503
+ return INTERSECTING; //illegal
504
+ }
505
+ vec += stepvec; //sum vectors
506
+ }
507
+ return count; //winding number
508
+ }
509
+
510
+
511
+ /**********************************************************************
512
+ * C_OUTLINE::turn_direction
513
+ *
514
+ * Return the sum direction delta of the outline.
515
+ **********************************************************************/
516
+
517
+ inT16 C_OUTLINE::turn_direction() const { //winding number
518
+ DIR128 prevdir; //previous direction
519
+ DIR128 dir; //current direction
520
+ inT16 stepindex; //index to cstep
521
+ inT8 dirdiff; //direction difference
522
+ inT16 count; //winding count
523
+
524
+ if (stepcount == 0)
525
+ return 128;
526
+ count = 0;
527
+ prevdir = step_dir (stepcount - 1);
528
+ for (stepindex = 0; stepindex < stepcount; stepindex++) {
529
+ dir = step_dir (stepindex);
530
+ dirdiff = dir - prevdir;
531
+ ASSERT_HOST (dirdiff == 0 || dirdiff == 32 || dirdiff == -32);
532
+ count += dirdiff;
533
+ prevdir = dir;
534
+ }
535
+ ASSERT_HOST (count == 128 || count == -128);
536
+ return count; //winding number
537
+ }
538
+
539
+
540
+ /**********************************************************************
541
+ * C_OUTLINE::reverse
542
+ *
543
+ * Reverse the direction of an outline.
544
+ **********************************************************************/
545
+
546
+ void C_OUTLINE::reverse() { //reverse drection
547
+ DIR128 halfturn = MODULUS / 2; //amount to shift
548
+ DIR128 stepdir; //direction of step
549
+ inT16 stepindex; //index to cstep
550
+ inT16 farindex; //index to other side
551
+ inT16 halfsteps; //half of stepcount
552
+
553
+ halfsteps = (stepcount + 1) / 2;
554
+ for (stepindex = 0; stepindex < halfsteps; stepindex++) {
555
+ farindex = stepcount - stepindex - 1;
556
+ stepdir = step_dir (stepindex);
557
+ set_step (stepindex, step_dir (farindex) + halfturn);
558
+ set_step (farindex, stepdir + halfturn);
559
+ }
560
+ }
561
+
562
+
563
+ /**********************************************************************
564
+ * C_OUTLINE::move
565
+ *
566
+ * Move C_OUTLINE by vector
567
+ **********************************************************************/
568
+
569
+ void C_OUTLINE::move( // reposition OUTLINE
570
+ const ICOORD vec // by vector
571
+ ) {
572
+ C_OUTLINE_IT it(&children); // iterator
573
+
574
+ box.move (vec);
575
+ start += vec;
576
+
577
+ for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ())
578
+ it.data ()->move (vec); // move child outlines
579
+ }
580
+
581
+
582
+ /**********************************************************************
583
+ * C_OUTLINE::plot
584
+ *
585
+ * Draw the outline in the given colour.
586
+ **********************************************************************/
587
+
588
+ #ifndef GRAPHICS_DISABLED
589
+ void C_OUTLINE::plot( //draw it
590
+ ScrollView* window, //window to draw in
591
+ ScrollView::Color colour //colour to draw in
592
+ ) const {
593
+ inT16 stepindex; //index to cstep
594
+ ICOORD pos; //current position
595
+ DIR128 stepdir; //direction of step
596
+ DIR128 oldstepdir; //previous stepdir
597
+
598
+ pos = start; //current position
599
+ window->Pen(colour);
600
+ if (stepcount == 0) {
601
+ window->Rectangle(box.left(), box.top(), box.right(), box.bottom());
602
+ return;
603
+ }
604
+ window->SetCursor(pos.x(), pos.y());
605
+
606
+ stepindex = 0;
607
+ stepdir = step_dir (0); //get direction
608
+ while (stepindex < stepcount) {
609
+ do {
610
+ pos += step (stepindex); //step to next
611
+ stepindex++; //count steps
612
+ oldstepdir = stepdir;
613
+ //new direction
614
+ stepdir = step_dir (stepindex);
615
+ }
616
+ while (stepindex < stepcount
617
+ && oldstepdir.get_dir () == stepdir.get_dir ());
618
+ //merge straight lines
619
+ window->DrawTo(pos.x(), pos.y());
620
+ }
621
+ }
622
+ #endif
623
+
624
+
625
+ /**********************************************************************
626
+ * C_OUTLINE::operator=
627
+ *
628
+ * Assignment - deep copy data
629
+ **********************************************************************/
630
+
631
+ //assignment
632
+ C_OUTLINE & C_OUTLINE::operator= (
633
+ const C_OUTLINE & source //from this
634
+ ) {
635
+ box = source.box;
636
+ start = source.start;
637
+ if (steps != NULL)
638
+ free_mem(steps);
639
+ stepcount = source.stepcount;
640
+ steps = (uinT8 *) alloc_mem (step_mem());
641
+ memmove (steps, source.steps, step_mem());
642
+ if (!children.empty ())
643
+ children.clear ();
644
+ children.deep_copy(&source.children, &deep_copy);
645
+ return *this;
646
+ }
647
+
648
+ ICOORD C_OUTLINE::chain_step(int chaindir) {
649
+ return step_coords[chaindir % 4];
650
+ }