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,346 @@
1
+ ///////////////////////////////////////////////////////////////////////
2
+ // File: varabled.cpp
3
+ // Description: Variables Editor
4
+ // Author: Joern Wanke
5
+ // Created: Wed Jul 18 10:05:01 PDT 2007
6
+ //
7
+ // (C) Copyright 2007, Google Inc.
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
+ // The variables editor is used to edit all the variables used within
21
+ // tesseract from the ui.
22
+ #ifndef GRAPHICS_DISABLED
23
+ #include "varabled.h"
24
+
25
+ #ifdef WIN32
26
+ #else
27
+ #include <stdlib.h>
28
+ #include <stdio.h>
29
+ #endif
30
+
31
+ #include <map>
32
+
33
+ #include "scrollview.h"
34
+ #include "svmnode.h"
35
+
36
+ #include "varable.h"
37
+ #include "mainblk.h"
38
+
39
+ #define VARDIR "configs/" /*variables files */
40
+ #define MAX_ITEMS_IN_SUBMENU 30
41
+
42
+ const ERRCODE NO_VARIABLES_TO_EDIT = "No Variables defined to edit";
43
+
44
+ // Contains the mappings from unique VC ids to their actual pointers.
45
+ static std::map<int, VariableContent*> vcMap;
46
+
47
+ static int nrVariables = 0;
48
+ static int writeCommands[2];
49
+
50
+ ELISTIZE(VariableContent)
51
+
52
+ // Constructors for the various VarTypes.
53
+ VariableContent::VariableContent(STRING_VARIABLE* it) {
54
+ my_id_ = nrVariables;
55
+ nrVariables++;
56
+ var_type_ = VT_STRING;
57
+ sIt = it;
58
+ vcMap[my_id_] = this;
59
+ }
60
+ // Constructors for the various VarTypes.
61
+ VariableContent::VariableContent(INT_VARIABLE* it) {
62
+ my_id_ = nrVariables;
63
+ nrVariables++;
64
+ var_type_ = VT_INTEGER;
65
+ iIt = it;
66
+ vcMap[my_id_] = this;
67
+ }
68
+ // Constructors for the various VarTypes.
69
+ VariableContent::VariableContent(BOOL_VARIABLE* it) {
70
+ my_id_ = nrVariables;
71
+ nrVariables++;
72
+ var_type_ = VT_BOOLEAN;
73
+ bIt = it;
74
+ vcMap[my_id_] = this;
75
+ }
76
+ // Constructors for the various VarTypes.
77
+ VariableContent::VariableContent(double_VARIABLE* it) {
78
+ my_id_ = nrVariables;
79
+ nrVariables++;
80
+ var_type_ = VT_DOUBLE;
81
+ dIt = it;
82
+ vcMap[my_id_] = this;
83
+ }
84
+
85
+ // Gets a VC object identified by its ID.
86
+ VariableContent* VariableContent::GetVariableContentById(int id) {
87
+ return vcMap[id];
88
+ }
89
+
90
+ // Copy the first N words from the source string to the target string.
91
+ // Words are delimited by "_".
92
+ void VariablesEditor::GetFirstWords(
93
+ const char *s, // source string
94
+ int n, // number of words
95
+ char *t // target string
96
+ ) {
97
+ int full_length = strlen(s);
98
+ int reqd_len = 0; // No. of chars requird
99
+ const char *next_word = s;
100
+
101
+ while ((n > 0) && reqd_len < full_length) {
102
+ reqd_len += strcspn(next_word, "_") + 1;
103
+ next_word += reqd_len;
104
+ n--;
105
+ }
106
+ strncpy(t, s, reqd_len);
107
+ t[reqd_len] = '\0'; // ensure null terminal
108
+ }
109
+
110
+ // Getter for the name.
111
+ const char* VariableContent::GetName() const {
112
+ if (var_type_ == VT_INTEGER) { return iIt->name_str(); }
113
+ else if (var_type_ == VT_BOOLEAN) { return bIt->name_str(); }
114
+ else if (var_type_ == VT_DOUBLE) { return dIt->name_str(); }
115
+ else if (var_type_ == VT_STRING) { return sIt->name_str(); }
116
+ else
117
+ return "ERROR: VariableContent::GetName()";
118
+ }
119
+
120
+ // Getter for the description.
121
+ const char* VariableContent::GetDescription() const {
122
+ if (var_type_ == VT_INTEGER) { return iIt->info_str(); }
123
+ else if (var_type_ == VT_BOOLEAN) { return bIt->info_str(); }
124
+ else if (var_type_ == VT_DOUBLE) { return dIt->info_str(); }
125
+ else if (var_type_ == VT_STRING) { return sIt->info_str(); }
126
+ else return NULL;
127
+ }
128
+
129
+ // Getter for the value.
130
+ const char* VariableContent::GetValue() const {
131
+ char* msg = new char[1024];
132
+ if (var_type_ == VT_INTEGER) {
133
+ sprintf(msg, "%d", ((inT32) *(iIt)));
134
+ } else if (var_type_ == VT_BOOLEAN) {
135
+ sprintf(msg, "%d", ((BOOL8) * (bIt)));
136
+ } else if (var_type_ == VT_DOUBLE) {
137
+ sprintf(msg, "%g", ((double) * (dIt)));
138
+ } else if (var_type_ == VT_STRING) {
139
+ if (((STRING) * (sIt)).string() != NULL) {
140
+ sprintf(msg, "%s", ((STRING) * (sIt)).string());
141
+ } else {
142
+ return "Null";
143
+ }
144
+ }
145
+ return msg;
146
+ }
147
+
148
+ // Setter for the value.
149
+ void VariableContent::SetValue(const char* val) {
150
+ // TODO (wanke) Test if the values actually are properly converted.
151
+ // (Quickly visible impacts?)
152
+ changed_ = TRUE;
153
+ if (var_type_ == VT_INTEGER) {
154
+ iIt->set_value(atoi(val));
155
+ } else if (var_type_ == VT_BOOLEAN) {
156
+ bIt->set_value(atoi(val));
157
+ } else if (var_type_ == VT_DOUBLE) {
158
+ dIt->set_value(strtod(val, NULL));
159
+ } else if (var_type_ == VT_STRING) {
160
+ sIt->set_value(val);
161
+ }
162
+ }
163
+
164
+ // Gets the up to the first 3 prefixes from s (split by _).
165
+ // For example, tesseract_foo_bar will be split into tesseract,foo and bar.
166
+ void VariablesEditor::GetPrefixes(const char* s, STRING* level_one,
167
+ STRING* level_two,
168
+ STRING* level_three) {
169
+ char* p = new char[1024];
170
+ GetFirstWords(s, 1, p);
171
+ *level_one = p;
172
+ GetFirstWords(s, 2, p);
173
+ *level_two = p;
174
+ GetFirstWords(s, 3, p);
175
+ *level_three = p;
176
+ delete[] p;
177
+ }
178
+
179
+ // Compare two VC objects by their name.
180
+ int VariableContent::Compare(const void* v1, const void* v2) {
181
+ const VariableContent* one = *reinterpret_cast<const VariableContent* const *>(v1);
182
+ const VariableContent* two = *reinterpret_cast<const VariableContent* const *>(v2);
183
+ return strcmp(one->GetName(), two->GetName());
184
+ }
185
+
186
+ // Find all editable variables used within tesseract and create a
187
+ // SVMenuNode tree from it.
188
+ // TODO (wanke): This is actually sort of hackish.
189
+ SVMenuNode* VariablesEditor::BuildListOfAllLeaves() { // find all variables.
190
+ SVMenuNode* mr = new SVMenuNode();
191
+ VariableContent_LIST vclist;
192
+ VariableContent_IT vc_it(&vclist);
193
+ std::map<const char*, int> amount; //to count the # of entries for a specifc char*.
194
+
195
+ INT_VARIABLE_C_IT int_it(INT_VARIABLE::get_head());
196
+ BOOL_VARIABLE_C_IT bool_it(BOOL_VARIABLE::get_head());
197
+ STRING_VARIABLE_C_IT str_it(STRING_VARIABLE::get_head());
198
+ double_VARIABLE_C_IT dbl_it(double_VARIABLE::get_head());
199
+
200
+ // Add all variables to a list.
201
+ for (int_it.mark_cycle_pt(); !int_it.cycled_list(); int_it.forward()) {
202
+ vc_it.add_after_then_move(new VariableContent(int_it.data()));
203
+ }
204
+
205
+ for (bool_it.mark_cycle_pt(); !bool_it.cycled_list(); bool_it.forward()) {
206
+ vc_it.add_after_then_move(new VariableContent(bool_it.data()));
207
+ }
208
+
209
+ for (str_it.mark_cycle_pt(); !str_it.cycled_list(); str_it.forward()) {
210
+ vc_it.add_after_then_move(new VariableContent(str_it.data()));
211
+ }
212
+
213
+ for (dbl_it.mark_cycle_pt(); !dbl_it.cycled_list(); dbl_it.forward()) {
214
+ vc_it.add_after_then_move(new VariableContent(dbl_it.data()));
215
+ }
216
+
217
+ // Count the # of entries starting with a specific prefix.
218
+ for (vc_it.mark_cycle_pt(); !vc_it.cycled_list(); vc_it.forward()) {
219
+ VariableContent* vc = vc_it.data();
220
+ STRING tag;
221
+ STRING tag2;
222
+ STRING tag3;
223
+
224
+ GetPrefixes(vc->GetName(), &tag, &tag2, &tag3);
225
+ amount[tag.string()]++;
226
+ amount[tag2.string()]++;
227
+ amount[tag3.string()]++;
228
+ }
229
+
230
+ vclist.sort(VariableContent::Compare); // Sort the list alphabetically.
231
+
232
+ SVMenuNode* other = mr->AddChild("OTHER");
233
+
234
+ // go through the list again and this time create the menu structure.
235
+ vc_it.move_to_first();
236
+ for (vc_it.mark_cycle_pt(); !vc_it.cycled_list(); vc_it.forward()) {
237
+ VariableContent* vc = vc_it.data();
238
+ STRING tag;
239
+ STRING tag2;
240
+ STRING tag3;
241
+ GetPrefixes(vc->GetName(), &tag, &tag2, &tag3);
242
+
243
+ if (amount[tag.string()] == 1) { other->AddChild(vc->GetName(), vc->GetId(),
244
+ vc->GetValue(),
245
+ vc->GetDescription());
246
+ } else { // More than one would use this submenu -> create submenu.
247
+ SVMenuNode* sv = mr->AddChild(tag.string());
248
+ if ((amount[tag.string()] <= MAX_ITEMS_IN_SUBMENU) || (amount[tag2.string()] <= 1)) {
249
+ sv->AddChild(vc->GetName(), vc->GetId(),
250
+ vc->GetValue(), vc->GetDescription());
251
+ } else { // Make subsubmenus.
252
+ SVMenuNode* sv2 = sv->AddChild(tag2.string());
253
+ sv2->AddChild(vc->GetName(), vc->GetId(),
254
+ vc->GetValue(), vc->GetDescription());
255
+ }
256
+ }
257
+ }
258
+ return mr;
259
+ }
260
+
261
+ // Event listener. Waits for SVET_POPUP events and processes them.
262
+ void VariablesEditor::Notify(const SVEvent* sve) {
263
+ if (sve->type == SVET_POPUP) { // only catch SVET_POPUP!
264
+ char* param = sve->parameter;
265
+ if (sve->command_id == writeCommands[0]) {
266
+ WriteVars(param, false);
267
+ } else if (sve->command_id == writeCommands[1]) {
268
+ WriteVars(param, true);
269
+ } else {
270
+ VariableContent* vc = VariableContent::GetVariableContentById(
271
+ sve->command_id);
272
+ vc->SetValue(param);
273
+ sv_window_->AddMessage("Setting %s to %s",
274
+ vc->GetName(), vc->GetValue());
275
+ }
276
+ }
277
+ }
278
+
279
+ // Integrate the variables editor as popupmenu into the existing scrollview
280
+ // window (usually the pg editor). If sv == null, create a new empty
281
+ // empty window and attach the variables editor to that window (ugly).
282
+ VariablesEditor::VariablesEditor(ScrollView* sv) {
283
+ if (sv == NULL) {
284
+ const char* name = "VarEditorMAIN";
285
+ sv = new ScrollView(name, 1, 1, 200, 200, 300, 200);
286
+ }
287
+
288
+ sv_window_ = sv;
289
+
290
+ //Only one event handler per window.
291
+ //sv->AddEventHandler((SVEventHandler*) this);
292
+
293
+ SVMenuNode* svMenuRoot = BuildListOfAllLeaves();
294
+
295
+ STRING varfile;
296
+ varfile = datadir;
297
+ varfile += VARDIR; // variables dir
298
+ varfile += "edited"; // actual name
299
+
300
+ SVMenuNode* std_menu = svMenuRoot->AddChild ("Build Config File");
301
+
302
+ writeCommands[0] = nrVariables+1;
303
+ std_menu->AddChild("All Variables", writeCommands[0],
304
+ varfile.string(), "Config file name?");
305
+
306
+ writeCommands[1] = nrVariables+2;
307
+ std_menu->AddChild ("changed_ Variables Only", writeCommands[1],
308
+ varfile.string(), "Config file name?");
309
+
310
+ svMenuRoot->BuildMenu(sv, false);
311
+ }
312
+
313
+
314
+ // Write all (changed_) variables to a config file.
315
+ void VariablesEditor::WriteVars(char *filename, // in this file
316
+ bool changes_only // changed_ vars only?
317
+ ) {
318
+ FILE *fp; // input file
319
+ char msg_str[255];
320
+ // if file exists
321
+ if ((fp = fopen (filename, "r")) != NULL) {
322
+ fclose(fp);
323
+ sprintf (msg_str, "Overwrite file " "%s" "? (Y/N)", filename);
324
+ int a = sv_window_->ShowYesNoDialog(msg_str);
325
+ if (a == 'n') { return; } // dont write
326
+ }
327
+
328
+
329
+ fp = fopen (filename, "w"); // can we write to it?
330
+ if (fp == NULL) {
331
+ sv_window_->AddMessage("Cant write to file " "%s" "", filename);
332
+ return;
333
+ }
334
+
335
+ for (std::map<int, VariableContent*>::iterator iter = vcMap.begin();
336
+ iter != vcMap.end();
337
+ ++iter) {
338
+ VariableContent* cur = iter->second;
339
+ if (!changes_only || cur->HasChanged()) {
340
+ fprintf (fp, "%-25s %-12s # %s\n",
341
+ cur->GetName(), cur->GetValue(), cur->GetDescription());
342
+ }
343
+ }
344
+ fclose(fp);
345
+ }
346
+ #endif
@@ -0,0 +1,125 @@
1
+ ///////////////////////////////////////////////////////////////////////
2
+ // File: varabled.cpp
3
+ // Description: Variables Editor
4
+ // Author: Joern Wanke
5
+ // Created: Wed Jul 18 10:05:01 PDT 2007
6
+ //
7
+ // (C) Copyright 2007, Google Inc.
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
+ // The variables editor is used to edit all the variables used within
21
+ // tesseract from the ui.
22
+ #ifndef GRAPHICS_DISABLED
23
+ #ifndef VARABLED_H
24
+ #define VARABLED_H
25
+
26
+ #include "elst.h"
27
+ #include "scrollview.h"
28
+ #include "varable.h"
29
+
30
+ class SVMenuNode;
31
+
32
+ // A list of all possible variable types used.
33
+ enum VarType {
34
+ VT_INTEGER,
35
+ VT_BOOLEAN,
36
+ VT_STRING,
37
+ VT_DOUBLE
38
+ };
39
+
40
+ // A rather hackish helper structure which can take any kind of variable input
41
+ // (defined by VarType) and do a couple of common operations on them, like
42
+ // comparisond or getting its value. It is used in the context of the
43
+ // VariablesEditor as a bridge from the internal tesseract variables to the
44
+ // ones displayed by the ScrollView server.
45
+ class VariableContent : public ELIST_LINK {
46
+ public:
47
+ // Compare two VC objects by their name.
48
+ static int Compare(const void* v1, const void* v2);
49
+
50
+ // Gets a VC object identified by its ID.
51
+ static VariableContent* GetVariableContentById(int id);
52
+
53
+ // Constructors for the various VarTypes.
54
+ VariableContent() {
55
+ }
56
+ VariableContent(STRING_VARIABLE* it);
57
+ VariableContent(INT_VARIABLE* it);
58
+ VariableContent(BOOL_VARIABLE* it);
59
+ VariableContent(double_VARIABLE* it);
60
+
61
+
62
+ // Getters and Setters.
63
+ void SetValue(const char* val);
64
+ const char* GetValue() const;
65
+ const char* GetName() const;
66
+ const char* GetDescription() const;
67
+
68
+ int GetId() { return my_id_; }
69
+ bool HasChanged() { return changed_; }
70
+
71
+ private:
72
+ // The unique ID of this VC object.
73
+ int my_id_;
74
+ // Whether the variable was changed_ and thus needs to be rewritten.
75
+ bool changed_;
76
+ // The actual vartype of this VC object.
77
+ VarType var_type_;
78
+
79
+ STRING_VARIABLE* sIt;
80
+ INT_VARIABLE* iIt;
81
+ BOOL_VARIABLE* bIt;
82
+ double_VARIABLE* dIt;
83
+ };
84
+
85
+ ELISTIZEH(VariableContent)
86
+
87
+ // The variables editor enables the user to edit all the variables used within
88
+ // tesseract. It can be invoked on its own, but is supposed to be invoked by
89
+ // the program editor.
90
+ class VariablesEditor : public SVEventHandler {
91
+ public:
92
+ // Integrate the variables editor as popupmenu into the existing scrollview
93
+ // window (usually the pg editor). If sv == null, create a new empty
94
+ // empty window and attach the variables editor to that window (ugly).
95
+ VariablesEditor(ScrollView* sv = NULL);
96
+
97
+ // Event listener. Waits for SVET_POPUP events and processes them.
98
+ void Notify(const SVEvent* sve);
99
+
100
+ private:
101
+ // Gets the up to the first 3 prefixes from s (split by _).
102
+ // For example, tesseract_foo_bar will be split into tesseract,foo and bar.
103
+ void GetPrefixes(const char* s, STRING* level_one,
104
+ STRING* level_two, STRING* level_three);
105
+
106
+ // Gets the first n words (split by _) and puts them in t.
107
+ // For example, tesseract_foo_bar with N=2 will yield tesseract_foo_.
108
+ void GetFirstWords( //copy first N words
109
+ const char *s, //source string
110
+ int n, //number of words
111
+ char *t //target string
112
+ );
113
+
114
+ // Find all editable variables used within tesseract and create a
115
+ // SVMenuNode tree from it.
116
+ SVMenuNode *BuildListOfAllLeaves();
117
+
118
+ // Write all (changed_) variables to a config file.
119
+ void WriteVars(char* filename, bool changes_only);
120
+
121
+ ScrollView* sv_window_;
122
+ };
123
+
124
+ #endif
125
+ #endif
@@ -0,0 +1,193 @@
1
+ /**********************************************************************
2
+ * File: werdit.cpp (Formerly wordit.c)
3
+ * Description: An iterator for passing over all the words in a document.
4
+ * Author: Ray Smith
5
+ * Created: Mon Apr 27 08:51:22 BST 1992
6
+ *
7
+ * (C) Copyright 1992, 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 "werdit.h"
22
+
23
+ #define EXTERN
24
+
25
+ //EXTERN BOOL_VAR(wordit_linearc,FALSE,"Pass poly of linearc to Tess");
26
+
27
+ /**********************************************************************
28
+ * WERDIT::start_page
29
+ *
30
+ * Get ready to iterate over the page by setting the iterators.
31
+ **********************************************************************/
32
+
33
+ void WERDIT::start_page( //set iterators
34
+ BLOCK_LIST *block_list //blocks to check
35
+ ) {
36
+ block_it.set_to_list (block_list);
37
+ block_it.mark_cycle_pt ();
38
+ do {
39
+ while (block_it.data ()->row_list ()->empty ()
40
+ && !block_it.cycled_list ()) {
41
+ block_it.forward ();
42
+ }
43
+ if (!block_it.data ()->row_list ()->empty ()) {
44
+ row_it.set_to_list (block_it.data ()->row_list ());
45
+ row_it.mark_cycle_pt ();
46
+ while (row_it.data ()->word_list ()->empty ()
47
+ && !row_it.cycled_list ()) {
48
+ row_it.forward ();
49
+ }
50
+ if (!row_it.data ()->word_list ()->empty ()) {
51
+ word_it.set_to_list (row_it.data ()->word_list ());
52
+ word_it.mark_cycle_pt ();
53
+ }
54
+ }
55
+ }
56
+ while (!block_it.cycled_list () && row_it.data ()->word_list ()->empty ());
57
+ }
58
+
59
+
60
+ /**********************************************************************
61
+ * WERDIT::forward
62
+ *
63
+ * Give the next word on the page, or NULL if none left.
64
+ * This code assumes all rows to be non-empty, but blocks are allowed
65
+ * to be empty as eventually we will have non-text blocks.
66
+ * The output is always a copy and needs to be deleted by somebody.
67
+ **********************************************************************/
68
+
69
+ WERD *WERDIT::forward() { //use iterators
70
+ WERD *word; //actual word
71
+ // WERD *larc_word; //linearc copy
72
+ WERD *result; //output word
73
+ ROW *row; //row of word
74
+
75
+ if (word_it.cycled_list ()) {
76
+ return NULL; //finished page
77
+ }
78
+ else {
79
+ word = word_it.data ();
80
+ row = row_it.data ();
81
+ word_it.forward ();
82
+ if (word_it.cycled_list ()) {
83
+ row_it.forward (); //finished row
84
+ if (row_it.cycled_list ()) {
85
+ do {
86
+ block_it.forward (); //finished block
87
+ if (!block_it.cycled_list ()) {
88
+ row_it.set_to_list (block_it.data ()->row_list ());
89
+ row_it.mark_cycle_pt ();
90
+ }
91
+ }
92
+ //find non-empty block
93
+ while (!block_it.cycled_list ()
94
+ && row_it.cycled_list ());
95
+ }
96
+ if (!row_it.cycled_list ()) {
97
+ word_it.set_to_list (row_it.data ()->word_list ());
98
+ word_it.mark_cycle_pt ();
99
+ }
100
+ }
101
+
102
+ // if (wordit_linearc && !word->flag(W_POLYGON))
103
+ // {
104
+ // larc_word=word->larc_copy(row->x_height());
105
+ // result=larc_word->poly_copy(row->x_height());
106
+ // delete larc_word;
107
+ // }
108
+ // else
109
+ result = word->poly_copy (row->x_height ());
110
+ return result;
111
+ }
112
+ }
113
+
114
+
115
+ /**********************************************************************
116
+ * make_pseudo_word
117
+ *
118
+ * Make all the blobs inside a selection into a single word.
119
+ * The word is always a copy and needs to be deleted.
120
+ **********************************************************************/
121
+
122
+ WERD *make_pseudo_word( //make fake word
123
+ BLOCK_LIST *block_list, //blocks to check //block of selection
124
+ TBOX &selection_box,
125
+ BLOCK *&pseudo_block,
126
+ ROW *&pseudo_row //row of selection
127
+ ) {
128
+ BLOCK_IT block_it(block_list);
129
+ BLOCK *block;
130
+ ROW_IT row_it;
131
+ ROW *row;
132
+ WERD_IT word_it;
133
+ WERD *word;
134
+ PBLOB_IT blob_it;
135
+ PBLOB *blob;
136
+ PBLOB_LIST new_blobs; //list of gathered blobs
137
+ //iterator
138
+ PBLOB_IT new_blob_it = &new_blobs;
139
+ WERD *pseudo_word; //fabricated word
140
+ WERD *poly_word; //poly copy of word
141
+ // WERD *larc_word; //linearc copy
142
+
143
+ for (block_it.mark_cycle_pt ();
144
+ !block_it.cycled_list (); block_it.forward ()) {
145
+ block = block_it.data ();
146
+ if (block->bounding_box ().overlap (selection_box)) {
147
+ pseudo_block = block;
148
+ row_it.set_to_list (block->row_list ());
149
+ for (row_it.mark_cycle_pt ();
150
+ !row_it.cycled_list (); row_it.forward ()) {
151
+ row = row_it.data ();
152
+ if (row->bounding_box ().overlap (selection_box)) {
153
+ word_it.set_to_list (row->word_list ());
154
+ for (word_it.mark_cycle_pt ();
155
+ !word_it.cycled_list (); word_it.forward ()) {
156
+ word = word_it.data ();
157
+ if (word->bounding_box ().overlap (selection_box)) {
158
+ // if (wordit_linearc && !word->flag(W_POLYGON))
159
+ // {
160
+ // larc_word=word->larc_copy(row->x_height());
161
+ // poly_word=larc_word->poly_copy(row->x_height());
162
+ // delete larc_word;
163
+ // }
164
+ // else
165
+ poly_word = word->poly_copy (row->x_height ());
166
+ blob_it.set_to_list (poly_word->blob_list ());
167
+ for (blob_it.mark_cycle_pt ();
168
+ !blob_it.cycled_list (); blob_it.forward ()) {
169
+ blob = blob_it.data ();
170
+ if (blob->bounding_box ().
171
+ overlap (selection_box)) {
172
+ new_blob_it.add_after_then_move (blob_it.
173
+ extract
174
+ ());
175
+ //steal off list
176
+ pseudo_row = row;
177
+ }
178
+ }
179
+ delete poly_word; //get rid of it
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ }
186
+ if (!new_blobs.empty ()) {
187
+ //make new word
188
+ pseudo_word = new WERD (&new_blobs, 1, NULL);
189
+ }
190
+ else
191
+ pseudo_word = NULL;
192
+ return pseudo_word;
193
+ }