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,119 @@
1
+ /* -*-C-*-
2
+ ********************************************************************************
3
+ *
4
+ * File: blobs.h (Formerly blobs.h)
5
+ * Description: Blob definition
6
+ * Author: Mark Seaman, OCR Technology
7
+ * Created: Fri Oct 27 15:39:52 1989
8
+ * Modified: Thu Mar 28 15:33:38 1991 (Mark Seaman) marks@hpgrlt
9
+ * Language: C
10
+ * Package: N/A
11
+ * Status: Experimental (Do Not Distribute)
12
+ *
13
+ * (c) Copyright 1989, Hewlett-Packard Company.
14
+ ** Licensed under the Apache License, Version 2.0 (the "License");
15
+ ** you may not use this file except in compliance with the License.
16
+ ** You may obtain a copy of the License at
17
+ ** http://www.apache.org/licenses/LICENSE-2.0
18
+ ** Unless required by applicable law or agreed to in writing, software
19
+ ** distributed under the License is distributed on an "AS IS" BASIS,
20
+ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ ** See the License for the specific language governing permissions and
22
+ ** limitations under the License.
23
+ *
24
+ *********************************************************************************/
25
+
26
+ #ifndef BLOBS_H
27
+ #define BLOBS_H
28
+
29
+ /*----------------------------------------------------------------------
30
+ I n c l u d e s
31
+ ----------------------------------------------------------------------*/
32
+ #include "vecfuncs.h"
33
+ #include "tessclas.h"
34
+
35
+ /*----------------------------------------------------------------------
36
+ T y p e s
37
+ ----------------------------------------------------------------------*/
38
+ typedef struct
39
+ { /* Widths of pieces */
40
+ int num_chars;
41
+ int widths[1];
42
+ } WIDTH_RECORD;
43
+
44
+ /*----------------------------------------------------------------------
45
+ M a c r o s
46
+ ----------------------------------------------------------------------*/
47
+ /**********************************************************************
48
+ * free_widths
49
+ *
50
+ * Free the memory taken up by a width array.
51
+ **********************************************************************/
52
+ #define free_widths(w) \
53
+ if (w) memfree (w)
54
+
55
+ /*----------------------------------------------------------------------
56
+ F u n c t i o n s
57
+ ----------------------------------------------------------------------*/
58
+ void blob_origin(TBLOB *blob, /*blob to compute on */
59
+ TPOINT *origin); /*return value */
60
+
61
+ /*blob to compute on */
62
+ void blob_bounding_box(TBLOB *blob,
63
+ register TPOINT *topleft, /*bounding box */
64
+ register TPOINT *botright);
65
+
66
+ void blobs_bounding_box(TBLOB *blobs, TPOINT *topleft, TPOINT *botright);
67
+
68
+ void blobs_origin(TBLOB *blobs, /*blob to compute on */
69
+ TPOINT *origin); /*return value */
70
+
71
+ /*blob to compute on */
72
+ WIDTH_RECORD *blobs_widths(TBLOB *blobs);
73
+
74
+ int count_blobs(TBLOB *blobs);
75
+
76
+ void delete_word(TWERD *word);
77
+
78
+ void delete_edgepts(register EDGEPT *edgepts);
79
+
80
+ /*
81
+ #if defined(__STDC__) || defined(__cplusplus)
82
+ # define _ARGS(s) s
83
+ #else
84
+ # define _ARGS(s) ()
85
+ #endif*/
86
+
87
+ /* blobs.c
88
+ void blob_origin
89
+ _ARGS((BLOB *blob,
90
+ TPOINT *origin));
91
+
92
+ void blob_bounding_box
93
+ _ARGS((BLOB *blob,
94
+ TPOINT *topleft,
95
+ TPOINT *botright));
96
+
97
+ void blobs_bounding_box
98
+ _ARGS((BLOB *blobs,
99
+ TPOINT *topleft,
100
+ TPOINT *botright));
101
+
102
+ void blobs_origin
103
+ _ARGS((BLOB *blobs,
104
+ TPOINT *origin));
105
+
106
+ WIDTH_RECORD *blobs_widths
107
+ _ARGS((BLOB *blobs));
108
+
109
+ int count_blobs
110
+ _ARGS((BLOB *blobs));
111
+
112
+ void delete_word
113
+ _ARGS((TWERD *word));
114
+
115
+ void delete_edgepts
116
+ _ARGS((EDGEPT *edgepts));
117
+ #undef _ARGS
118
+ */
119
+ #endif
@@ -0,0 +1,537 @@
1
+ /**********************************************************************
2
+ * File: blread.cpp (Formerly pdread.c)
3
+ * Description: Friend function of BLOCK to read the uscan pd file.
4
+ * Author: Ray Smith
5
+ * Created: Mon Mar 18 14:39:00 GMT 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 <stdlib.h>
22
+ #ifdef __UNIX__
23
+ #include <assert.h>
24
+ #endif
25
+ #include "scanutils.h"
26
+ #include "fileerr.h"
27
+ #include "imgtiff.h"
28
+ #include "pdclass.h"
29
+ #include "rwpoly.h"
30
+ #include "blread.h"
31
+
32
+ #define PD_EXT ".pd"
33
+ #define VEC_EXT ".vec" //accupage file
34
+ #define HPD_EXT ".bl" //hand pd file
35
+ //unlv zone file
36
+ #define UNLV_EXT ".uzn"
37
+ #define BLOCK_EXPANSION 8 //boundary expansion
38
+ #define EXTERN
39
+
40
+ EXTERN BOOL_EVAR (ignore_weird_blocks, TRUE, "Don't read weird blocks");
41
+
42
+ static TBOX convert_vec_block( //make non-rect block
43
+ VEC_ENTRY *entries, //vectors
44
+ uinT16 entry_count, //no of entries
45
+ inT32 ysize, //image size
46
+ ICOORDELT_IT *left_it, //block sides
47
+ ICOORDELT_IT *right_it);
48
+
49
+ /**********************************************************************
50
+ * BLOCK::read_pd_file
51
+ *
52
+ * Read a whole pd file to make a list of blocks, or return false.
53
+ **********************************************************************/
54
+
55
+ BOOL8 read_pd_file( //print list of sides
56
+ STRING name, //basename of file
57
+ inT32 xsize, //image size
58
+ inT32 ysize, //image size
59
+ BLOCK_LIST *blocks //output list
60
+ ) {
61
+ FILE *pdfp; //file pointer
62
+ BLOCK *block; //current block
63
+ inT32 block_count; //no of blocks
64
+ inT32 junk_count; //no of junks to read
65
+ inT32 junks[4]; //junk elements
66
+ inT32 vertex_count; //boundary vertices
67
+ inT32 xcoord; //current coords
68
+ inT32 ycoord;
69
+ inT32 prevx; //previous coords
70
+ inT32 prevy;
71
+ BLOCK_IT block_it = blocks; //block iterator
72
+ ICOORDELT_LIST dummy; //for constructor
73
+ ICOORDELT_IT left_it = &dummy; //iterator
74
+ ICOORDELT_IT right_it = &dummy;//iterator
75
+
76
+ if (read_hpd_file (name, xsize, ysize, blocks))
77
+ return TRUE; //succeeded
78
+ if (read_vec_file (name, xsize, ysize, blocks))
79
+ return TRUE; //succeeded
80
+ if (read_unlv_file (name, xsize, ysize, blocks))
81
+ return TRUE; //succeeded
82
+ name += PD_EXT; //add extension
83
+ if ((pdfp = fopen (name.string (), "r")) == NULL) {
84
+ //make rect block
85
+ return FALSE; //didn't read one
86
+ }
87
+ else {
88
+ if (fread (&block_count, sizeof (block_count), 1, pdfp) != 1)
89
+ READFAILED.error ("read_pd_file", EXIT, "Block count");
90
+ tprintf ("%d blocks in .pd file.\n", block_count);
91
+ while (block_count > 0) {
92
+ if (fread (&junk_count, sizeof (junk_count), 1, pdfp) != 1)
93
+ READFAILED.error ("read_pd_file", EXIT, "Junk count");
94
+ if (fread (&vertex_count, sizeof (vertex_count), 1, pdfp) != 1)
95
+ READFAILED.error ("read_pd_file", EXIT, "Vertex count");
96
+ block = new BLOCK; //make a block
97
+ //on end of list
98
+ block_it.add_to_end (block);
99
+ left_it.set_to_list (&block->leftside);
100
+ right_it.set_to_list (&block->rightside);
101
+
102
+ //read a pair
103
+ get_pd_vertex (pdfp, xsize, ysize, &block->box, xcoord, ycoord);
104
+ vertex_count -= 2; //count read ones
105
+ prevx = xcoord;
106
+ do {
107
+ if (xcoord == prevx) {
108
+ if (!right_it.empty ()) {
109
+ if (right_it.data ()->x () <= xcoord + BLOCK_EXPANSION)
110
+ right_it.data ()->set_y (right_it.data ()->y () +
111
+ BLOCK_EXPANSION);
112
+ else
113
+ right_it.data ()->set_y (right_it.data ()->y () -
114
+ BLOCK_EXPANSION);
115
+ }
116
+ right_it.
117
+ add_before_then_move (new
118
+ ICOORDELT (xcoord + BLOCK_EXPANSION,
119
+ ycoord));
120
+ }
121
+ prevx = xcoord; //remember previous
122
+ prevy = ycoord;
123
+ get_pd_vertex (pdfp, xsize, ysize, &block->box, xcoord, ycoord);
124
+ vertex_count -= 2; //count read ones
125
+ }
126
+ while (ycoord <= prevy);
127
+ right_it.data ()->set_y (right_it.data ()->y () - BLOCK_EXPANSION);
128
+
129
+ //start of left
130
+ left_it.add_to_end (new ICOORDELT (prevx - BLOCK_EXPANSION, prevy - BLOCK_EXPANSION));
131
+
132
+ do {
133
+ prevx = xcoord; //remember previous
134
+ get_pd_vertex (pdfp, xsize, ysize, &block->box, xcoord, ycoord);
135
+ vertex_count -= 2;
136
+ if (xcoord != prevx && vertex_count > 0) {
137
+ if (xcoord > prevx)
138
+ left_it.
139
+ add_to_end (new
140
+ ICOORDELT (xcoord - BLOCK_EXPANSION,
141
+ ycoord + BLOCK_EXPANSION));
142
+ else
143
+ left_it.
144
+ add_to_end (new
145
+ ICOORDELT (xcoord - BLOCK_EXPANSION,
146
+ ycoord - BLOCK_EXPANSION));
147
+ }
148
+ else if (vertex_count == 0)
149
+ left_it.add_to_end (new ICOORDELT (prevx - BLOCK_EXPANSION,
150
+ ycoord + BLOCK_EXPANSION));
151
+ }
152
+ while (vertex_count > 0); //until all read
153
+
154
+ while (junk_count > 0) {
155
+ if (fread (junks, sizeof (inT32), 4, pdfp) != 4)
156
+ READFAILED.error ("read_pd_file", EXIT, "Junk coords");
157
+ junk_count--;
158
+ }
159
+ block_count--; //count read blocks
160
+ }
161
+ }
162
+ fclose(pdfp);
163
+ return TRUE; //read one
164
+ }
165
+
166
+
167
+ /**********************************************************************
168
+ * get_pd_vertex
169
+ *
170
+ * Read a pair of coords, invert the y and clip to image limits.
171
+ * Also update the bounding box.
172
+ *
173
+ * Read a whole pd file to make a list of blocks, or use the whole page.
174
+ **********************************************************************/
175
+
176
+ void get_pd_vertex( //get new vertex
177
+ FILE *pdfp, //file to read
178
+ inT32 xsize, //image size
179
+ inT32 ysize, //image size
180
+ TBOX *box, //bounding box
181
+ inT32 &xcoord, //output coords
182
+ inT32 &ycoord) {
183
+ TBOX new_coord; //expansion box
184
+
185
+ //get new coords
186
+ if (fread (&xcoord, sizeof (xcoord), 1, pdfp) != 1)
187
+ READFAILED.error ("read_pd_file", EXIT, "Xcoord");
188
+ if (fread (&ycoord, sizeof (ycoord), 1, pdfp) != 1)
189
+ READFAILED.error ("read_pd_file", EXIT, "Xcoord");
190
+ ycoord = ysize - ycoord; //invert y
191
+ if (xcoord < BLOCK_EXPANSION)
192
+ xcoord = BLOCK_EXPANSION; //clip to limits
193
+ if (xcoord > xsize - BLOCK_EXPANSION)
194
+ xcoord = xsize - BLOCK_EXPANSION;
195
+ if (ycoord < BLOCK_EXPANSION)
196
+ ycoord = BLOCK_EXPANSION;
197
+ if (ycoord > ysize - BLOCK_EXPANSION)
198
+ ycoord = ysize - BLOCK_EXPANSION;
199
+
200
+ new_coord =
201
+ TBOX (ICOORD (xcoord - BLOCK_EXPANSION, ycoord - BLOCK_EXPANSION),
202
+ ICOORD (xcoord + BLOCK_EXPANSION, ycoord + BLOCK_EXPANSION));
203
+ (*box) += new_coord;
204
+ }
205
+
206
+
207
+ /**********************************************************************
208
+ * BLOCK::read_hpd_file
209
+ *
210
+ * Read a whole hpd file to make a list of blocks.
211
+ * Return FALSE if the .vec fiel cannot be found
212
+ **********************************************************************/
213
+
214
+ BOOL8 read_hpd_file( //print list of sides
215
+ STRING name, //basename of file
216
+ inT32 xsize, //image size
217
+ inT32 ysize, //image size
218
+ BLOCK_LIST *blocks //output list
219
+ ) {
220
+ FILE *pdfp; //file pointer
221
+ PAGE_BLOCK_LIST *page_blocks;
222
+ inT32 block_no; //no of blocks
223
+ BLOCK_IT block_it = blocks; //block iterator
224
+
225
+ name += HPD_EXT; //add extension
226
+ if ((pdfp = fopen (name.string (), "r")) == NULL) {
227
+ return FALSE; //can't find it
228
+ }
229
+ fclose(pdfp);
230
+ page_blocks = read_poly_blocks (name.string ());
231
+ block_no = 0;
232
+ scan_hpd_blocks (name.string (), page_blocks, block_no, &block_it);
233
+ tprintf ("Text region count=%d\n", block_no);
234
+ return TRUE; //read one
235
+ }
236
+
237
+
238
+ /**********************************************************************
239
+ * BLOCK::scan_hpd_blocks
240
+ *
241
+ * Read a whole hpd file to make a list of blocks.
242
+ * Return FALSE if the .vec fiel cannot be found
243
+ **********************************************************************/
244
+
245
+ void scan_hpd_blocks( //print list of sides
246
+ const char *name, //block label
247
+ PAGE_BLOCK_LIST *page_blocks, //head of full pag
248
+ inT32 &block_no, //no of blocks
249
+ BLOCK_IT *block_it //block iterator
250
+ ) {
251
+ BLOCK *block; //current block
252
+ //page blocks
253
+ PAGE_BLOCK_IT pb_it = page_blocks;
254
+ PAGE_BLOCK *current_block;
255
+ TEXT_REGION_IT tr_it;
256
+ TEXT_BLOCK *tb;
257
+ TEXT_REGION *tr;
258
+ TBOX *block_box; //from text region
259
+
260
+ for (pb_it.mark_cycle_pt (); !pb_it.cycled_list (); pb_it.forward ()) {
261
+ current_block = pb_it.data ();
262
+ if (current_block->type () == PB_TEXT) {
263
+ tb = (TEXT_BLOCK *) current_block;
264
+ if (!tb->regions ()->empty ()) {
265
+ tr_it.set_to_list (tb->regions ());
266
+ for (tr_it.mark_cycle_pt ();
267
+ !tr_it.cycled_list (); tr_it.forward ()) {
268
+ block_no++;
269
+ tr = tr_it.data ();
270
+ block_box = tr->bounding_box ();
271
+ block = new BLOCK (name, TRUE, 0, 0,
272
+ block_box->left (), block_box->bottom (),
273
+ block_box->right (), block_box->top ());
274
+ block->hand_block = tr;
275
+ block->hand_poly = tr;
276
+ block_it->add_after_then_move (block);
277
+ }
278
+ }
279
+ }
280
+ else if (current_block->type () == PB_WEIRD
281
+ && !ignore_weird_blocks
282
+ && ((WEIRD_BLOCK *) current_block)->id_no () > 0) {
283
+ block_no++;
284
+ block_box = current_block->bounding_box ();
285
+ block = new BLOCK (name, TRUE, 0, 0,
286
+ block_box->left (), block_box->bottom (),
287
+ block_box->right (), block_box->top ());
288
+ block->hand_block = NULL;
289
+ block->hand_poly = current_block;
290
+ block_it->add_after_then_move (block);
291
+ }
292
+ if (!current_block->child ()->empty ())
293
+ scan_hpd_blocks (name, current_block->child (), block_no, block_it);
294
+ }
295
+ }
296
+
297
+
298
+
299
+
300
+
301
+ /**********************************************************************
302
+ * BLOCK::read_vec_file
303
+ *
304
+ * Read a whole vec file to make a list of blocks.
305
+ * Return FALSE if the .vec fiel cannot be found
306
+ **********************************************************************/
307
+
308
+ BOOL8 read_vec_file( //print list of sides
309
+ STRING name, //basename of file
310
+ inT32 xsize, //image size
311
+ inT32 ysize, //image size
312
+ BLOCK_LIST *blocks //output list
313
+ ) {
314
+ FILE *pdfp; //file pointer
315
+ BLOCK *block; //current block
316
+ inT32 block_no; //no of blocks
317
+ inT32 block_index; //current blocks
318
+ inT32 vector_count; //total vectors
319
+ VEC_HEADER header; //file header
320
+ BLOCK_HEADER *vec_blocks; //blocks from file
321
+ VEC_ENTRY *vec_entries; //vectors from file
322
+ BLOCK_IT block_it = blocks; //block iterator
323
+ ICOORDELT_IT left_it; //iterators
324
+ ICOORDELT_IT right_it;
325
+
326
+ name += VEC_EXT; //add extension
327
+ if ((pdfp = fopen (name.string (), "r")) == NULL) {
328
+ return FALSE; //can't find it
329
+ }
330
+ if (fread (&header, sizeof (header), 1, pdfp) != 1)
331
+ READFAILED.error ("read_vec_file", EXIT, "Header");
332
+ //from intel
333
+ header.filesize = reverse32 (header.filesize);
334
+ header.bytesize = reverse16 (header.bytesize);
335
+ header.arraysize = reverse16 (header.arraysize);
336
+ header.width = reverse16 (header.width);
337
+ header.height = reverse16 (header.height);
338
+ header.res = reverse16 (header.res);
339
+ header.bpp = reverse16 (header.bpp);
340
+ tprintf ("%d blocks in %s file:", header.arraysize, VEC_EXT);
341
+ vector_count = header.filesize - header.arraysize * sizeof (BLOCK_HEADER);
342
+ vector_count /= sizeof (VEC_ENTRY);
343
+ vec_blocks =
344
+ (BLOCK_HEADER *) alloc_mem (header.arraysize * sizeof (BLOCK_HEADER));
345
+ vec_entries = (VEC_ENTRY *) alloc_mem (vector_count * sizeof (VEC_ENTRY));
346
+ xsize = header.width; //real image size
347
+ ysize = header.height;
348
+ if (fread (vec_blocks, sizeof (BLOCK_HEADER), header.arraysize, pdfp)
349
+ != static_cast<size_t>(header.arraysize))
350
+ READFAILED.error ("read_vec_file", EXIT, "Blocks");
351
+ if (fread (vec_entries, sizeof (VEC_ENTRY), vector_count, pdfp)
352
+ != static_cast<size_t>(vector_count))
353
+ READFAILED.error ("read_vec_file", EXIT, "Vectors");
354
+ for (block_index = 0; block_index < header.arraysize; block_index++) {
355
+ vec_blocks[block_index].offset =
356
+ reverse16 (vec_blocks[block_index].offset);
357
+ vec_blocks[block_index].order =
358
+ reverse16 (vec_blocks[block_index].order);
359
+ vec_blocks[block_index].entries =
360
+ reverse16 (vec_blocks[block_index].entries);
361
+ vec_blocks[block_index].charsize =
362
+ reverse16 (vec_blocks[block_index].charsize);
363
+ }
364
+ for (block_index = 0; block_index < vector_count; block_index++) {
365
+ vec_entries[block_index].start =
366
+ ICOORD (reverse16 (vec_entries[block_index].start.x ()),
367
+ reverse16 (vec_entries[block_index].start.y ()));
368
+ vec_entries[block_index].end =
369
+ ICOORD (reverse16 (vec_entries[block_index].end.x ()),
370
+ reverse16 (vec_entries[block_index].end.y ()));
371
+ }
372
+ for (block_no = 1; block_no <= header.arraysize; block_no++) {
373
+ for (block_index = 0; block_index < header.arraysize; block_index++) {
374
+ if (vec_blocks[block_index].order == block_no
375
+ && vec_blocks[block_index].valid) {
376
+ block = new BLOCK;
377
+ left_it.set_to_list (&block->leftside);
378
+ right_it.set_to_list (&block->rightside);
379
+ block->box =
380
+ convert_vec_block (&vec_entries
381
+ [vec_blocks[block_index].offset],
382
+ vec_blocks[block_index].entries, ysize,
383
+ &left_it, &right_it);
384
+ block->set_xheight (vec_blocks[block_index].charsize);
385
+ //on end of list
386
+ block_it.add_to_end (block);
387
+ // tprintf("Block at (%d,%d)->(%d,%d) has index %d and order %d\n",
388
+ // block->box.left(),
389
+ // block->box.bottom(),
390
+ // block->box.right(),
391
+ // block->box.top(),
392
+ // block_index,vec_blocks[block_index].order);
393
+ }
394
+ }
395
+ }
396
+ free_mem(vec_blocks);
397
+ free_mem(vec_entries);
398
+ tprintf ("%d valid\n", block_it.length ());
399
+ fclose(pdfp);
400
+ return TRUE; //read one
401
+ }
402
+
403
+
404
+ /**********************************************************************
405
+ * BLOCK::convert_vec_block
406
+ *
407
+ * Read a whole vec file to make a list of blocks.
408
+ * Return FALSE if the .vec fiel cannot be found
409
+ **********************************************************************/
410
+
411
+ static TBOX convert_vec_block( //make non-rect block
412
+ VEC_ENTRY *entries, //vectors
413
+ uinT16 entry_count, //no of entries
414
+ inT32 ysize, //image size
415
+ ICOORDELT_IT *left_it, //block sides
416
+ ICOORDELT_IT *right_it) {
417
+ TBOX block_box; //bounding box
418
+ TBOX vec_box; //box of vec
419
+ ICOORD box_point; //expanded coord
420
+ ICOORD shift_vec; //for box expansion
421
+ ICOORD prev_pt; //previous coord
422
+ ICOORD end_pt; //end of vector
423
+ inT32 vertex_index; //boundary vertices
424
+
425
+ for (vertex_index = 0; vertex_index < entry_count; vertex_index++) {
426
+ entries[vertex_index].start = ICOORD (entries[vertex_index].start.x (),
427
+ ysize - 1 -
428
+ entries[vertex_index].start.y ());
429
+ entries[vertex_index].end =
430
+ ICOORD (entries[vertex_index].end.x (),
431
+ ysize - 1 - entries[vertex_index].end.y ());
432
+ vec_box = TBOX (entries[vertex_index].start, entries[vertex_index].end);
433
+ block_box += vec_box; //find total bounds
434
+ }
435
+
436
+ for (vertex_index = 0; vertex_index < entry_count
437
+ && (entries[vertex_index].start.y () != block_box.bottom ()
438
+ || entries[vertex_index].end.y () != block_box.bottom ());
439
+ vertex_index++);
440
+ ASSERT_HOST (vertex_index < entry_count);
441
+ prev_pt = entries[vertex_index].start;
442
+ end_pt = entries[vertex_index].end;
443
+ do {
444
+ for (vertex_index = 0; vertex_index < entry_count
445
+ && entries[vertex_index].start != end_pt; vertex_index++);
446
+ //found start of vertical
447
+ ASSERT_HOST (vertex_index < entry_count);
448
+ box_point = entries[vertex_index].start;
449
+ if (box_point.x () <= prev_pt.x ())
450
+ shift_vec = ICOORD (-BLOCK_EXPANSION, -BLOCK_EXPANSION);
451
+ else
452
+ shift_vec = ICOORD (-BLOCK_EXPANSION, BLOCK_EXPANSION);
453
+ left_it->add_to_end (new ICOORDELT (box_point + shift_vec));
454
+ prev_pt = box_point;
455
+ for (vertex_index = 0; vertex_index < entry_count
456
+ && entries[vertex_index].start != end_pt; vertex_index++);
457
+ //found horizontal
458
+ ASSERT_HOST (vertex_index < entry_count);
459
+ end_pt = entries[vertex_index].end;
460
+ }
461
+ while (end_pt.y () < block_box.top ());
462
+ shift_vec = ICOORD (-BLOCK_EXPANSION, BLOCK_EXPANSION);
463
+ left_it->add_to_end (new ICOORDELT (end_pt + shift_vec));
464
+
465
+ for (vertex_index = 0; vertex_index < entry_count
466
+ && (entries[vertex_index].start.y () != block_box.top ()
467
+ || entries[vertex_index].end.y () != block_box.top ());
468
+ vertex_index++);
469
+ ASSERT_HOST (vertex_index < entry_count);
470
+ prev_pt = entries[vertex_index].start;
471
+ end_pt = entries[vertex_index].end;
472
+ do {
473
+ for (vertex_index = 0; vertex_index < entry_count
474
+ && entries[vertex_index].start != end_pt; vertex_index++);
475
+ //found start of vertical
476
+ ASSERT_HOST (vertex_index < entry_count);
477
+ box_point = entries[vertex_index].start;
478
+ if (box_point.x () < prev_pt.x ())
479
+ shift_vec = ICOORD (BLOCK_EXPANSION, -BLOCK_EXPANSION);
480
+ else
481
+ shift_vec = ICOORD (BLOCK_EXPANSION, BLOCK_EXPANSION);
482
+ right_it->add_before_then_move (new ICOORDELT (box_point + shift_vec));
483
+ prev_pt = box_point;
484
+ for (vertex_index = 0; vertex_index < entry_count
485
+ && entries[vertex_index].start != end_pt; vertex_index++);
486
+ //found horizontal
487
+ ASSERT_HOST (vertex_index < entry_count);
488
+ end_pt = entries[vertex_index].end;
489
+ }
490
+ while (end_pt.y () > block_box.bottom ());
491
+ shift_vec = ICOORD (BLOCK_EXPANSION, -BLOCK_EXPANSION);
492
+ right_it->add_before_then_move (new ICOORDELT (end_pt + shift_vec));
493
+
494
+ shift_vec = ICOORD (BLOCK_EXPANSION, BLOCK_EXPANSION);
495
+ box_point = block_box.botleft () - shift_vec;
496
+ end_pt = block_box.topright () + shift_vec;
497
+ return TBOX (box_point, end_pt);
498
+ }
499
+
500
+
501
+ /**********************************************************************
502
+ * read_unlv_file
503
+ *
504
+ * Read a whole unlv zone file to make a list of blocks.
505
+ **********************************************************************/
506
+
507
+ BOOL8 read_unlv_file( //print list of sides
508
+ STRING name, //basename of file
509
+ inT32 xsize, //image size
510
+ inT32 ysize, //image size
511
+ BLOCK_LIST *blocks //output list
512
+ ) {
513
+ FILE *pdfp; //file pointer
514
+ BLOCK *block; //current block
515
+ int x; //current top-down coords
516
+ int y;
517
+ int width; //of current block
518
+ int height;
519
+ BLOCK_IT block_it = blocks; //block iterator
520
+
521
+ name += UNLV_EXT; //add extension
522
+ if ((pdfp = fopen (name.string (), "r")) == NULL) {
523
+ return FALSE; //didn't read one
524
+ }
525
+ else {
526
+ while (fscanf (pdfp, "%d %d %d %d %*s", &x, &y, &width, &height) >= 4) {
527
+ //make rect block
528
+ block = new BLOCK (name.string (), TRUE, 0, 0,
529
+ (inT16) x, (inT16) (ysize - y - height),
530
+ (inT16) (x + width), (inT16) (ysize - y));
531
+ //on end of list
532
+ block_it.add_to_end (block);
533
+ }
534
+ fclose(pdfp);
535
+ }
536
+ return true;
537
+ }