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.
- data/.document +5 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +23 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +46 -0
- data/VERSION +1 -0
- data/ext/tesseract_bin/extconf.rb +17 -0
- data/lib/tesseract_bin.rb +12 -0
- data/tesseract_bin.gemspec +660 -0
- data/test/helper.rb +18 -0
- data/test/test_tesseract_bin.rb +7 -0
- data/vendor/tesseract-2.04/AUTHORS +8 -0
- data/vendor/tesseract-2.04/COPYING +23 -0
- data/vendor/tesseract-2.04/ChangeLog +71 -0
- data/vendor/tesseract-2.04/INSTALL +229 -0
- data/vendor/tesseract-2.04/Makefile.am +20 -0
- data/vendor/tesseract-2.04/Makefile.in +641 -0
- data/vendor/tesseract-2.04/NEWS +1 -0
- data/vendor/tesseract-2.04/README +138 -0
- data/vendor/tesseract-2.04/ReleaseNotes +213 -0
- data/vendor/tesseract-2.04/StdAfx.cpp +8 -0
- data/vendor/tesseract-2.04/StdAfx.h +24 -0
- data/vendor/tesseract-2.04/ccmain/Makefile.am +63 -0
- data/vendor/tesseract-2.04/ccmain/Makefile.in +735 -0
- data/vendor/tesseract-2.04/ccmain/adaptions.cpp +1082 -0
- data/vendor/tesseract-2.04/ccmain/adaptions.h +109 -0
- data/vendor/tesseract-2.04/ccmain/applybox.cpp +891 -0
- data/vendor/tesseract-2.04/ccmain/applybox.h +73 -0
- data/vendor/tesseract-2.04/ccmain/baseapi.cpp +1105 -0
- data/vendor/tesseract-2.04/ccmain/baseapi.h +256 -0
- data/vendor/tesseract-2.04/ccmain/blobcmp.cpp +76 -0
- data/vendor/tesseract-2.04/ccmain/blobcmp.h +29 -0
- data/vendor/tesseract-2.04/ccmain/callnet.cpp +93 -0
- data/vendor/tesseract-2.04/ccmain/callnet.h +32 -0
- data/vendor/tesseract-2.04/ccmain/charcut.cpp +704 -0
- data/vendor/tesseract-2.04/ccmain/charcut.h +120 -0
- data/vendor/tesseract-2.04/ccmain/charsample.cpp +699 -0
- data/vendor/tesseract-2.04/ccmain/control.cpp +1842 -0
- data/vendor/tesseract-2.04/ccmain/control.h +198 -0
- data/vendor/tesseract-2.04/ccmain/docqual.cpp +1481 -0
- data/vendor/tesseract-2.04/ccmain/docqual.h +155 -0
- data/vendor/tesseract-2.04/ccmain/expandblob.cpp +82 -0
- data/vendor/tesseract-2.04/ccmain/expandblob.h +13 -0
- data/vendor/tesseract-2.04/ccmain/fixspace.cpp +989 -0
- data/vendor/tesseract-2.04/ccmain/fixspace.h +72 -0
- data/vendor/tesseract-2.04/ccmain/fixxht.cpp +825 -0
- data/vendor/tesseract-2.04/ccmain/fixxht.h +93 -0
- data/vendor/tesseract-2.04/ccmain/imgscale.cpp +154 -0
- data/vendor/tesseract-2.04/ccmain/imgscale.h +32 -0
- data/vendor/tesseract-2.04/ccmain/matmatch.cpp +391 -0
- data/vendor/tesseract-2.04/ccmain/matmatch.h +48 -0
- data/vendor/tesseract-2.04/ccmain/output.cpp +1273 -0
- data/vendor/tesseract-2.04/ccmain/output.h +116 -0
- data/vendor/tesseract-2.04/ccmain/pagewalk.cpp +666 -0
- data/vendor/tesseract-2.04/ccmain/pagewalk.h +155 -0
- data/vendor/tesseract-2.04/ccmain/paircmp.cpp +107 -0
- data/vendor/tesseract-2.04/ccmain/paircmp.h +43 -0
- data/vendor/tesseract-2.04/ccmain/pgedit.cpp +1867 -0
- data/vendor/tesseract-2.04/ccmain/pgedit.h +181 -0
- data/vendor/tesseract-2.04/ccmain/reject.cpp +1775 -0
- data/vendor/tesseract-2.04/ccmain/reject.h +181 -0
- data/vendor/tesseract-2.04/ccmain/scaleimg.cpp +366 -0
- data/vendor/tesseract-2.04/ccmain/scaleimg.h +35 -0
- data/vendor/tesseract-2.04/ccmain/tessbox.cpp +375 -0
- data/vendor/tesseract-2.04/ccmain/tessbox.h +110 -0
- data/vendor/tesseract-2.04/ccmain/tessedit.cpp +278 -0
- data/vendor/tesseract-2.04/ccmain/tessedit.h +49 -0
- data/vendor/tesseract-2.04/ccmain/tessembedded.cpp +110 -0
- data/vendor/tesseract-2.04/ccmain/tessembedded.h +38 -0
- data/vendor/tesseract-2.04/ccmain/tesseractfull.cc +37 -0
- data/vendor/tesseract-2.04/ccmain/tesseractmain.cpp +387 -0
- data/vendor/tesseract-2.04/ccmain/tesseractmain.h +58 -0
- data/vendor/tesseract-2.04/ccmain/tessio.h +110 -0
- data/vendor/tesseract-2.04/ccmain/tessvars.cpp +38 -0
- data/vendor/tesseract-2.04/ccmain/tessvars.h +48 -0
- data/vendor/tesseract-2.04/ccmain/tfacep.h +62 -0
- data/vendor/tesseract-2.04/ccmain/tfacepp.cpp +443 -0
- data/vendor/tesseract-2.04/ccmain/tfacepp.h +85 -0
- data/vendor/tesseract-2.04/ccmain/tstruct.cpp +549 -0
- data/vendor/tesseract-2.04/ccmain/tstruct.h +108 -0
- data/vendor/tesseract-2.04/ccmain/varabled.cpp +346 -0
- data/vendor/tesseract-2.04/ccmain/varabled.h +125 -0
- data/vendor/tesseract-2.04/ccmain/werdit.cpp +193 -0
- data/vendor/tesseract-2.04/ccmain/werdit.h +67 -0
- data/vendor/tesseract-2.04/ccstruct/Makefile.am +25 -0
- data/vendor/tesseract-2.04/ccstruct/Makefile.in +650 -0
- data/vendor/tesseract-2.04/ccstruct/blckerr.h +29 -0
- data/vendor/tesseract-2.04/ccstruct/blobbox.cpp +778 -0
- data/vendor/tesseract-2.04/ccstruct/blobbox.h +381 -0
- data/vendor/tesseract-2.04/ccstruct/blobs.cpp +247 -0
- data/vendor/tesseract-2.04/ccstruct/blobs.h +119 -0
- data/vendor/tesseract-2.04/ccstruct/blread.cpp +537 -0
- data/vendor/tesseract-2.04/ccstruct/blread.h +63 -0
- data/vendor/tesseract-2.04/ccstruct/callcpp.cpp +252 -0
- data/vendor/tesseract-2.04/ccstruct/coutln.cpp +650 -0
- data/vendor/tesseract-2.04/ccstruct/coutln.h +186 -0
- data/vendor/tesseract-2.04/ccstruct/crakedge.h +39 -0
- data/vendor/tesseract-2.04/ccstruct/genblob.cpp +133 -0
- data/vendor/tesseract-2.04/ccstruct/genblob.h +52 -0
- data/vendor/tesseract-2.04/ccstruct/hpddef.h +39 -0
- data/vendor/tesseract-2.04/ccstruct/hpdsizes.h +8 -0
- data/vendor/tesseract-2.04/ccstruct/ipoints.h +479 -0
- data/vendor/tesseract-2.04/ccstruct/labls.cpp +188 -0
- data/vendor/tesseract-2.04/ccstruct/labls.h +38 -0
- data/vendor/tesseract-2.04/ccstruct/linlsq.cpp +249 -0
- data/vendor/tesseract-2.04/ccstruct/linlsq.h +102 -0
- data/vendor/tesseract-2.04/ccstruct/lmedsq.cpp +453 -0
- data/vendor/tesseract-2.04/ccstruct/lmedsq.h +84 -0
- data/vendor/tesseract-2.04/ccstruct/mod128.cpp +100 -0
- data/vendor/tesseract-2.04/ccstruct/mod128.h +85 -0
- data/vendor/tesseract-2.04/ccstruct/normalis.cpp +176 -0
- data/vendor/tesseract-2.04/ccstruct/normalis.h +108 -0
- data/vendor/tesseract-2.04/ccstruct/ocrblock.cpp +369 -0
- data/vendor/tesseract-2.04/ccstruct/ocrblock.h +235 -0
- data/vendor/tesseract-2.04/ccstruct/ocrrow.cpp +216 -0
- data/vendor/tesseract-2.04/ccstruct/ocrrow.h +133 -0
- data/vendor/tesseract-2.04/ccstruct/pageblk.cpp +879 -0
- data/vendor/tesseract-2.04/ccstruct/pageblk.h +318 -0
- data/vendor/tesseract-2.04/ccstruct/pageres.cpp +330 -0
- data/vendor/tesseract-2.04/ccstruct/pageres.h +313 -0
- data/vendor/tesseract-2.04/ccstruct/pdblock.cpp +361 -0
- data/vendor/tesseract-2.04/ccstruct/pdblock.h +181 -0
- data/vendor/tesseract-2.04/ccstruct/pdclass.h +54 -0
- data/vendor/tesseract-2.04/ccstruct/points.cpp +102 -0
- data/vendor/tesseract-2.04/ccstruct/points.h +299 -0
- data/vendor/tesseract-2.04/ccstruct/polyaprx.cpp +588 -0
- data/vendor/tesseract-2.04/ccstruct/polyaprx.h +51 -0
- data/vendor/tesseract-2.04/ccstruct/polyblk.cpp +398 -0
- data/vendor/tesseract-2.04/ccstruct/polyblk.h +122 -0
- data/vendor/tesseract-2.04/ccstruct/polyblob.cpp +357 -0
- data/vendor/tesseract-2.04/ccstruct/polyblob.h +102 -0
- data/vendor/tesseract-2.04/ccstruct/polyvert.cpp +23 -0
- data/vendor/tesseract-2.04/ccstruct/polyvert.h +58 -0
- data/vendor/tesseract-2.04/ccstruct/poutline.cpp +441 -0
- data/vendor/tesseract-2.04/ccstruct/poutline.h +125 -0
- data/vendor/tesseract-2.04/ccstruct/quadlsq.cpp +147 -0
- data/vendor/tesseract-2.04/ccstruct/quadlsq.h +67 -0
- data/vendor/tesseract-2.04/ccstruct/quadratc.cpp +21 -0
- data/vendor/tesseract-2.04/ccstruct/quadratc.h +63 -0
- data/vendor/tesseract-2.04/ccstruct/quspline.cpp +382 -0
- data/vendor/tesseract-2.04/ccstruct/quspline.h +113 -0
- data/vendor/tesseract-2.04/ccstruct/ratngs.cpp +372 -0
- data/vendor/tesseract-2.04/ccstruct/ratngs.h +198 -0
- data/vendor/tesseract-2.04/ccstruct/rect.cpp +229 -0
- data/vendor/tesseract-2.04/ccstruct/rect.h +320 -0
- data/vendor/tesseract-2.04/ccstruct/rejctmap.cpp +545 -0
- data/vendor/tesseract-2.04/ccstruct/rejctmap.h +284 -0
- data/vendor/tesseract-2.04/ccstruct/rwpoly.cpp +89 -0
- data/vendor/tesseract-2.04/ccstruct/rwpoly.h +45 -0
- data/vendor/tesseract-2.04/ccstruct/statistc.cpp +905 -0
- data/vendor/tesseract-2.04/ccstruct/statistc.h +135 -0
- data/vendor/tesseract-2.04/ccstruct/stepblob.cpp +296 -0
- data/vendor/tesseract-2.04/ccstruct/stepblob.h +88 -0
- data/vendor/tesseract-2.04/ccstruct/txtregn.cpp +230 -0
- data/vendor/tesseract-2.04/ccstruct/txtregn.h +155 -0
- data/vendor/tesseract-2.04/ccstruct/vecfuncs.cpp +63 -0
- data/vendor/tesseract-2.04/ccstruct/vecfuncs.h +91 -0
- data/vendor/tesseract-2.04/ccstruct/werd.cpp +967 -0
- data/vendor/tesseract-2.04/ccstruct/werd.h +277 -0
- data/vendor/tesseract-2.04/ccutil/Makefile.am +19 -0
- data/vendor/tesseract-2.04/ccutil/Makefile.in +626 -0
- data/vendor/tesseract-2.04/ccutil/basedir.cpp +118 -0
- data/vendor/tesseract-2.04/ccutil/basedir.h +32 -0
- data/vendor/tesseract-2.04/ccutil/bits16.cpp +30 -0
- data/vendor/tesseract-2.04/ccutil/bits16.h +61 -0
- data/vendor/tesseract-2.04/ccutil/boxread.cpp +105 -0
- data/vendor/tesseract-2.04/ccutil/boxread.h +44 -0
- data/vendor/tesseract-2.04/ccutil/clst.cpp +626 -0
- data/vendor/tesseract-2.04/ccutil/clst.h +1085 -0
- data/vendor/tesseract-2.04/ccutil/debugwin.cpp +500 -0
- data/vendor/tesseract-2.04/ccutil/debugwin.h +103 -0
- data/vendor/tesseract-2.04/ccutil/elst.cpp +593 -0
- data/vendor/tesseract-2.04/ccutil/elst.h +1125 -0
- data/vendor/tesseract-2.04/ccutil/elst2.cpp +606 -0
- data/vendor/tesseract-2.04/ccutil/elst2.h +1121 -0
- data/vendor/tesseract-2.04/ccutil/errcode.cpp +104 -0
- data/vendor/tesseract-2.04/ccutil/errcode.h +104 -0
- data/vendor/tesseract-2.04/ccutil/fileerr.h +34 -0
- data/vendor/tesseract-2.04/ccutil/globaloc.cpp +115 -0
- data/vendor/tesseract-2.04/ccutil/globaloc.h +40 -0
- data/vendor/tesseract-2.04/ccutil/hashfn.cpp +57 -0
- data/vendor/tesseract-2.04/ccutil/hashfn.h +30 -0
- data/vendor/tesseract-2.04/ccutil/host.h +180 -0
- data/vendor/tesseract-2.04/ccutil/hosthplb.h +1 -0
- data/vendor/tesseract-2.04/ccutil/lsterr.h +43 -0
- data/vendor/tesseract-2.04/ccutil/mainblk.cpp +126 -0
- data/vendor/tesseract-2.04/ccutil/mainblk.h +39 -0
- data/vendor/tesseract-2.04/ccutil/memblk.cpp +1106 -0
- data/vendor/tesseract-2.04/ccutil/memblk.h +189 -0
- data/vendor/tesseract-2.04/ccutil/memry.cpp +532 -0
- data/vendor/tesseract-2.04/ccutil/memry.h +192 -0
- data/vendor/tesseract-2.04/ccutil/memryerr.h +38 -0
- data/vendor/tesseract-2.04/ccutil/mfcpch.cpp +5 -0
- data/vendor/tesseract-2.04/ccutil/mfcpch.h +37 -0
- data/vendor/tesseract-2.04/ccutil/ndminx.h +31 -0
- data/vendor/tesseract-2.04/ccutil/notdll.h +28 -0
- data/vendor/tesseract-2.04/ccutil/nwmain.h +176 -0
- data/vendor/tesseract-2.04/ccutil/ocrclass.h +345 -0
- data/vendor/tesseract-2.04/ccutil/ocrshell.cpp +772 -0
- data/vendor/tesseract-2.04/ccutil/ocrshell.h +191 -0
- data/vendor/tesseract-2.04/ccutil/platform.h +18 -0
- data/vendor/tesseract-2.04/ccutil/scanutils.cpp +543 -0
- data/vendor/tesseract-2.04/ccutil/scanutils.h +55 -0
- data/vendor/tesseract-2.04/ccutil/secname.h +9 -0
- data/vendor/tesseract-2.04/ccutil/serialis.cpp +117 -0
- data/vendor/tesseract-2.04/ccutil/serialis.h +93 -0
- data/vendor/tesseract-2.04/ccutil/stderr.h +26 -0
- data/vendor/tesseract-2.04/ccutil/strngs.cpp +495 -0
- data/vendor/tesseract-2.04/ccutil/strngs.h +138 -0
- data/vendor/tesseract-2.04/ccutil/tessclas.h +135 -0
- data/vendor/tesseract-2.04/ccutil/tessopt.cpp +61 -0
- data/vendor/tesseract-2.04/ccutil/tessopt.h +30 -0
- data/vendor/tesseract-2.04/ccutil/tprintf.cpp +122 -0
- data/vendor/tesseract-2.04/ccutil/tprintf.h +35 -0
- data/vendor/tesseract-2.04/ccutil/unichar.cpp +144 -0
- data/vendor/tesseract-2.04/ccutil/unichar.h +84 -0
- data/vendor/tesseract-2.04/ccutil/unicharmap.cpp +172 -0
- data/vendor/tesseract-2.04/ccutil/unicharmap.h +82 -0
- data/vendor/tesseract-2.04/ccutil/unicharset.cpp +307 -0
- data/vendor/tesseract-2.04/ccutil/unicharset.h +267 -0
- data/vendor/tesseract-2.04/ccutil/varable.cpp +672 -0
- data/vendor/tesseract-2.04/ccutil/varable.h +419 -0
- data/vendor/tesseract-2.04/classify/Makefile.am +24 -0
- data/vendor/tesseract-2.04/classify/Makefile.in +647 -0
- data/vendor/tesseract-2.04/classify/adaptive.cpp +535 -0
- data/vendor/tesseract-2.04/classify/adaptive.h +199 -0
- data/vendor/tesseract-2.04/classify/adaptmatch.cpp +2958 -0
- data/vendor/tesseract-2.04/classify/adaptmatch.h +86 -0
- data/vendor/tesseract-2.04/classify/baseline.cpp +58 -0
- data/vendor/tesseract-2.04/classify/baseline.h +91 -0
- data/vendor/tesseract-2.04/classify/blobclass.cpp +123 -0
- data/vendor/tesseract-2.04/classify/blobclass.h +49 -0
- data/vendor/tesseract-2.04/classify/chartoname.cpp +74 -0
- data/vendor/tesseract-2.04/classify/chartoname.h +21 -0
- data/vendor/tesseract-2.04/classify/cluster.cpp +2834 -0
- data/vendor/tesseract-2.04/classify/cluster.h +158 -0
- data/vendor/tesseract-2.04/classify/clusttool.cpp +507 -0
- data/vendor/tesseract-2.04/classify/clusttool.h +70 -0
- data/vendor/tesseract-2.04/classify/cutoffs.cpp +73 -0
- data/vendor/tesseract-2.04/classify/cutoffs.h +49 -0
- data/vendor/tesseract-2.04/classify/extern.h +32 -0
- data/vendor/tesseract-2.04/classify/extract.cpp +100 -0
- data/vendor/tesseract-2.04/classify/extract.h +36 -0
- data/vendor/tesseract-2.04/classify/featdefs.cpp +244 -0
- data/vendor/tesseract-2.04/classify/featdefs.h +71 -0
- data/vendor/tesseract-2.04/classify/flexfx.cpp +87 -0
- data/vendor/tesseract-2.04/classify/flexfx.h +34 -0
- data/vendor/tesseract-2.04/classify/float2int.cpp +126 -0
- data/vendor/tesseract-2.04/classify/float2int.h +65 -0
- data/vendor/tesseract-2.04/classify/fpoint.cpp +73 -0
- data/vendor/tesseract-2.04/classify/fpoint.h +63 -0
- data/vendor/tesseract-2.04/classify/fxdefs.cpp +74 -0
- data/vendor/tesseract-2.04/classify/fxdefs.h +93 -0
- data/vendor/tesseract-2.04/classify/fxid.h +69 -0
- data/vendor/tesseract-2.04/classify/hideedge.cpp +35 -0
- data/vendor/tesseract-2.04/classify/hideedge.h +76 -0
- data/vendor/tesseract-2.04/classify/intfx.cpp +608 -0
- data/vendor/tesseract-2.04/classify/intfx.h +63 -0
- data/vendor/tesseract-2.04/classify/intmatcher.cpp +1524 -0
- data/vendor/tesseract-2.04/classify/intmatcher.h +199 -0
- data/vendor/tesseract-2.04/classify/intproto.cpp +1823 -0
- data/vendor/tesseract-2.04/classify/intproto.h +320 -0
- data/vendor/tesseract-2.04/classify/kdtree.cpp +884 -0
- data/vendor/tesseract-2.04/classify/kdtree.h +118 -0
- data/vendor/tesseract-2.04/classify/mf.cpp +106 -0
- data/vendor/tesseract-2.04/classify/mf.h +43 -0
- data/vendor/tesseract-2.04/classify/mfdefs.cpp +58 -0
- data/vendor/tesseract-2.04/classify/mfdefs.h +60 -0
- data/vendor/tesseract-2.04/classify/mfoutline.cpp +1087 -0
- data/vendor/tesseract-2.04/classify/mfoutline.h +277 -0
- data/vendor/tesseract-2.04/classify/mfx.cpp +436 -0
- data/vendor/tesseract-2.04/classify/mfx.h +52 -0
- data/vendor/tesseract-2.04/classify/normfeat.cpp +132 -0
- data/vendor/tesseract-2.04/classify/normfeat.h +63 -0
- data/vendor/tesseract-2.04/classify/normmatch.cpp +305 -0
- data/vendor/tesseract-2.04/classify/normmatch.h +38 -0
- data/vendor/tesseract-2.04/classify/ocrfeatures.cpp +310 -0
- data/vendor/tesseract-2.04/classify/ocrfeatures.h +148 -0
- data/vendor/tesseract-2.04/classify/outfeat.cpp +262 -0
- data/vendor/tesseract-2.04/classify/outfeat.h +76 -0
- data/vendor/tesseract-2.04/classify/picofeat.cpp +297 -0
- data/vendor/tesseract-2.04/classify/picofeat.h +65 -0
- data/vendor/tesseract-2.04/classify/protos.cpp +472 -0
- data/vendor/tesseract-2.04/classify/protos.h +258 -0
- data/vendor/tesseract-2.04/classify/sigmenu.cpp +225 -0
- data/vendor/tesseract-2.04/classify/sigmenu.h +39 -0
- data/vendor/tesseract-2.04/classify/speckle.cpp +127 -0
- data/vendor/tesseract-2.04/classify/speckle.h +69 -0
- data/vendor/tesseract-2.04/classify/xform2d.cpp +120 -0
- data/vendor/tesseract-2.04/classify/xform2d.h +60 -0
- data/vendor/tesseract-2.04/config/config.guess +1466 -0
- data/vendor/tesseract-2.04/config/config.h.in +188 -0
- data/vendor/tesseract-2.04/config/config.sub +1579 -0
- data/vendor/tesseract-2.04/config/depcomp +530 -0
- data/vendor/tesseract-2.04/config/install-sh +269 -0
- data/vendor/tesseract-2.04/config/missing +198 -0
- data/vendor/tesseract-2.04/config/mkinstalldirs +40 -0
- data/vendor/tesseract-2.04/config/stamp-h.in +0 -0
- data/vendor/tesseract-2.04/configure +10424 -0
- data/vendor/tesseract-2.04/cutil/Makefile.am +14 -0
- data/vendor/tesseract-2.04/cutil/Makefile.in +612 -0
- data/vendor/tesseract-2.04/cutil/bitvec.cpp +115 -0
- data/vendor/tesseract-2.04/cutil/bitvec.h +100 -0
- data/vendor/tesseract-2.04/cutil/callcpp.h +190 -0
- data/vendor/tesseract-2.04/cutil/const.h +108 -0
- data/vendor/tesseract-2.04/cutil/cutil.cpp +92 -0
- data/vendor/tesseract-2.04/cutil/cutil.h +159 -0
- data/vendor/tesseract-2.04/cutil/danerror.cpp +144 -0
- data/vendor/tesseract-2.04/cutil/danerror.h +41 -0
- data/vendor/tesseract-2.04/cutil/debug.cpp +97 -0
- data/vendor/tesseract-2.04/cutil/debug.h +348 -0
- data/vendor/tesseract-2.04/cutil/efio.cpp +62 -0
- data/vendor/tesseract-2.04/cutil/efio.h +32 -0
- data/vendor/tesseract-2.04/cutil/emalloc.cpp +91 -0
- data/vendor/tesseract-2.04/cutil/emalloc.h +44 -0
- data/vendor/tesseract-2.04/cutil/freelist.cpp +75 -0
- data/vendor/tesseract-2.04/cutil/freelist.h +45 -0
- data/vendor/tesseract-2.04/cutil/funcdefs.h +35 -0
- data/vendor/tesseract-2.04/cutil/general.h +33 -0
- data/vendor/tesseract-2.04/cutil/globals.cpp +69 -0
- data/vendor/tesseract-2.04/cutil/globals.h +70 -0
- data/vendor/tesseract-2.04/cutil/listio.cpp +68 -0
- data/vendor/tesseract-2.04/cutil/listio.h +43 -0
- data/vendor/tesseract-2.04/cutil/minmax.h +40 -0
- data/vendor/tesseract-2.04/cutil/oldheap.cpp +337 -0
- data/vendor/tesseract-2.04/cutil/oldheap.h +126 -0
- data/vendor/tesseract-2.04/cutil/oldlist.cpp +393 -0
- data/vendor/tesseract-2.04/cutil/oldlist.h +350 -0
- data/vendor/tesseract-2.04/cutil/structures.cpp +66 -0
- data/vendor/tesseract-2.04/cutil/structures.h +112 -0
- data/vendor/tesseract-2.04/cutil/tessarray.cpp +115 -0
- data/vendor/tesseract-2.04/cutil/tessarray.h +166 -0
- data/vendor/tesseract-2.04/cutil/tordvars.cpp +95 -0
- data/vendor/tesseract-2.04/cutil/tordvars.h +61 -0
- data/vendor/tesseract-2.04/cutil/variables.cpp +317 -0
- data/vendor/tesseract-2.04/cutil/variables.h +170 -0
- data/vendor/tesseract-2.04/dict/Makefile.am +13 -0
- data/vendor/tesseract-2.04/dict/Makefile.in +609 -0
- data/vendor/tesseract-2.04/dict/choicearr.h +96 -0
- data/vendor/tesseract-2.04/dict/choices.cpp +210 -0
- data/vendor/tesseract-2.04/dict/choices.h +241 -0
- data/vendor/tesseract-2.04/dict/context.cpp +270 -0
- data/vendor/tesseract-2.04/dict/context.h +82 -0
- data/vendor/tesseract-2.04/dict/dawg.cpp +363 -0
- data/vendor/tesseract-2.04/dict/dawg.h +394 -0
- data/vendor/tesseract-2.04/dict/hyphen.cpp +84 -0
- data/vendor/tesseract-2.04/dict/hyphen.h +125 -0
- data/vendor/tesseract-2.04/dict/lookdawg.cpp +228 -0
- data/vendor/tesseract-2.04/dict/lookdawg.h +76 -0
- data/vendor/tesseract-2.04/dict/makedawg.cpp +449 -0
- data/vendor/tesseract-2.04/dict/makedawg.h +83 -0
- data/vendor/tesseract-2.04/dict/matchdefs.h +145 -0
- data/vendor/tesseract-2.04/dict/permdawg.cpp +415 -0
- data/vendor/tesseract-2.04/dict/permdawg.h +98 -0
- data/vendor/tesseract-2.04/dict/permngram.cpp +358 -0
- data/vendor/tesseract-2.04/dict/permngram.h +33 -0
- data/vendor/tesseract-2.04/dict/permnum.cpp +522 -0
- data/vendor/tesseract-2.04/dict/permnum.h +83 -0
- data/vendor/tesseract-2.04/dict/permute.cpp +1704 -0
- data/vendor/tesseract-2.04/dict/permute.h +93 -0
- data/vendor/tesseract-2.04/dict/reduce.cpp +424 -0
- data/vendor/tesseract-2.04/dict/reduce.h +112 -0
- data/vendor/tesseract-2.04/dict/states.cpp +382 -0
- data/vendor/tesseract-2.04/dict/states.h +111 -0
- data/vendor/tesseract-2.04/dict/stopper.cpp +1458 -0
- data/vendor/tesseract-2.04/dict/stopper.h +103 -0
- data/vendor/tesseract-2.04/dict/trie.cpp +683 -0
- data/vendor/tesseract-2.04/dict/trie.h +190 -0
- data/vendor/tesseract-2.04/dlltest/Makefile.am +2 -0
- data/vendor/tesseract-2.04/dlltest/Makefile.in +388 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.cpp +163 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.dsp +186 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.vcproj +637 -0
- data/vendor/tesseract-2.04/eurotext.tif +0 -0
- data/vendor/tesseract-2.04/image/Makefile.am +10 -0
- data/vendor/tesseract-2.04/image/Makefile.in +596 -0
- data/vendor/tesseract-2.04/image/bitstrm.cpp +157 -0
- data/vendor/tesseract-2.04/image/bitstrm.h +73 -0
- data/vendor/tesseract-2.04/image/img.h +336 -0
- data/vendor/tesseract-2.04/image/imgbmp.cpp +223 -0
- data/vendor/tesseract-2.04/image/imgbmp.h +50 -0
- data/vendor/tesseract-2.04/image/imgerrs.h +35 -0
- data/vendor/tesseract-2.04/image/imgio.cpp +321 -0
- data/vendor/tesseract-2.04/image/imgio.h +22 -0
- data/vendor/tesseract-2.04/image/imgs.cpp +1764 -0
- data/vendor/tesseract-2.04/image/imgs.h +102 -0
- data/vendor/tesseract-2.04/image/imgtiff.cpp +723 -0
- data/vendor/tesseract-2.04/image/imgtiff.h +89 -0
- data/vendor/tesseract-2.04/image/imgunpk.h +1377 -0
- data/vendor/tesseract-2.04/image/svshowim.cpp +40 -0
- data/vendor/tesseract-2.04/image/svshowim.h +25 -0
- data/vendor/tesseract-2.04/java/Makefile.am +4 -0
- data/vendor/tesseract-2.04/java/Makefile.in +473 -0
- data/vendor/tesseract-2.04/java/com/Makefile.am +1 -0
- data/vendor/tesseract-2.04/java/com/Makefile.in +470 -0
- data/vendor/tesseract-2.04/java/com/google/Makefile.am +1 -0
- data/vendor/tesseract-2.04/java/com/google/Makefile.in +470 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.am +4 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.in +473 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ScrollView.java +421 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.am +5 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.in +474 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEvent.java +87 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventHandler.java +296 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventType.java +31 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.am +7 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.in +476 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVAbstractMenuItem.java +58 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVCheckboxMenuItem.java +60 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVEmptyMenuItem.java +48 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVImageHandler.java +228 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuBar.java +130 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuItem.java +61 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVPopupMenu.java +142 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVSubMenuItem.java +41 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVWindow.java +643 -0
- data/vendor/tesseract-2.04/java/makefile +55 -0
- data/vendor/tesseract-2.04/pageseg/Makefile.am +13 -0
- data/vendor/tesseract-2.04/pageseg/Makefile.in +596 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.cpp +363 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.h +90 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.cpp +82 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.h +30 -0
- data/vendor/tesseract-2.04/pageseg/pageseg.cpp +170 -0
- data/vendor/tesseract-2.04/pageseg/pageseg.h +29 -0
- data/vendor/tesseract-2.04/phototest.tif +0 -0
- data/vendor/tesseract-2.04/tessdata/Makefile.am +31 -0
- data/vendor/tesseract-2.04/tessdata/Makefile.in +529 -0
- data/vendor/tesseract-2.04/tessdata/configs/Makefile.am +3 -0
- data/vendor/tesseract-2.04/tessdata/configs/Makefile.in +344 -0
- data/vendor/tesseract-2.04/tessdata/configs/api_config +1 -0
- data/vendor/tesseract-2.04/tessdata/configs/box.train +19 -0
- data/vendor/tesseract-2.04/tessdata/configs/box.train.stderr +18 -0
- data/vendor/tesseract-2.04/tessdata/configs/inter +4 -0
- data/vendor/tesseract-2.04/tessdata/configs/kannada +4 -0
- data/vendor/tesseract-2.04/tessdata/configs/makebox +1 -0
- data/vendor/tesseract-2.04/tessdata/configs/unlv +3 -0
- data/vendor/tesseract-2.04/tessdata/confsets +3 -0
- data/vendor/tesseract-2.04/tessdata/eng.DangAmbigs +39 -0
- data/vendor/tesseract-2.04/tessdata/eng.freq-dawg +0 -0
- data/vendor/tesseract-2.04/tessdata/eng.inttemp +0 -0
- data/vendor/tesseract-2.04/tessdata/eng.normproto +1247 -0
- data/vendor/tesseract-2.04/tessdata/eng.pffmtable +111 -0
- data/vendor/tesseract-2.04/tessdata/eng.unicharset +113 -0
- data/vendor/tesseract-2.04/tessdata/eng.user-words +921 -0
- data/vendor/tesseract-2.04/tessdata/eng.word-dawg +0 -0
- data/vendor/tesseract-2.04/tessdata/makedummies +8 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.am +3 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.in +344 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/batch +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/batch.nochop +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/matdemo +7 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/msdemo +13 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/nobatch +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/segdemo +9 -0
- data/vendor/tesseract-2.04/tessdll.cpp +351 -0
- data/vendor/tesseract-2.04/tessdll.dsp +2050 -0
- data/vendor/tesseract-2.04/tessdll.h +143 -0
- data/vendor/tesseract-2.04/tessdll.vcproj +5495 -0
- data/vendor/tesseract-2.04/tesseract.dsp +2124 -0
- data/vendor/tesseract-2.04/tesseract.dsw +116 -0
- data/vendor/tesseract-2.04/tesseract.sln +59 -0
- data/vendor/tesseract-2.04/tesseract.spec +188 -0
- data/vendor/tesseract-2.04/tesseract.vcproj +5859 -0
- data/vendor/tesseract-2.04/testing/Makefile.am +2 -0
- data/vendor/tesseract-2.04/testing/Makefile.in +312 -0
- data/vendor/tesseract-2.04/testing/README +43 -0
- data/vendor/tesseract-2.04/testing/counttestset.sh +61 -0
- data/vendor/tesseract-2.04/testing/reorgdata.sh +44 -0
- data/vendor/tesseract-2.04/testing/reports/1995.bus.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.doe3.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.mag.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.news.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/2.03.summary +9 -0
- data/vendor/tesseract-2.04/testing/reports/2.04.summary +9 -0
- data/vendor/tesseract-2.04/testing/runalltests.sh +110 -0
- data/vendor/tesseract-2.04/testing/runtestset.sh +61 -0
- data/vendor/tesseract-2.04/textord/Makefile.am +20 -0
- data/vendor/tesseract-2.04/textord/Makefile.in +624 -0
- data/vendor/tesseract-2.04/textord/blkocc.cpp +809 -0
- data/vendor/tesseract-2.04/textord/blkocc.h +327 -0
- data/vendor/tesseract-2.04/textord/blobcmpl.h +31 -0
- data/vendor/tesseract-2.04/textord/drawedg.cpp +77 -0
- data/vendor/tesseract-2.04/textord/drawedg.h +34 -0
- data/vendor/tesseract-2.04/textord/drawtord.cpp +469 -0
- data/vendor/tesseract-2.04/textord/drawtord.h +107 -0
- data/vendor/tesseract-2.04/textord/edgblob.cpp +412 -0
- data/vendor/tesseract-2.04/textord/edgblob.h +100 -0
- data/vendor/tesseract-2.04/textord/edgloop.cpp +211 -0
- data/vendor/tesseract-2.04/textord/edgloop.h +66 -0
- data/vendor/tesseract-2.04/textord/fpchop.cpp +1641 -0
- data/vendor/tesseract-2.04/textord/fpchop.h +238 -0
- data/vendor/tesseract-2.04/textord/gap_map.cpp +166 -0
- data/vendor/tesseract-2.04/textord/gap_map.h +40 -0
- data/vendor/tesseract-2.04/textord/makerow.cpp +2628 -0
- data/vendor/tesseract-2.04/textord/makerow.h +295 -0
- data/vendor/tesseract-2.04/textord/oldbasel.cpp +1761 -0
- data/vendor/tesseract-2.04/textord/oldbasel.h +195 -0
- data/vendor/tesseract-2.04/textord/pithsync.cpp +696 -0
- data/vendor/tesseract-2.04/textord/pithsync.h +134 -0
- data/vendor/tesseract-2.04/textord/pitsync1.cpp +425 -0
- data/vendor/tesseract-2.04/textord/pitsync1.h +135 -0
- data/vendor/tesseract-2.04/textord/scanedg.cpp +452 -0
- data/vendor/tesseract-2.04/textord/scanedg.h +74 -0
- data/vendor/tesseract-2.04/textord/sortflts.cpp +80 -0
- data/vendor/tesseract-2.04/textord/sortflts.h +64 -0
- data/vendor/tesseract-2.04/textord/tessout.h +76 -0
- data/vendor/tesseract-2.04/textord/topitch.cpp +2019 -0
- data/vendor/tesseract-2.04/textord/topitch.h +195 -0
- data/vendor/tesseract-2.04/textord/tordmain.cpp +907 -0
- data/vendor/tesseract-2.04/textord/tordmain.h +132 -0
- data/vendor/tesseract-2.04/textord/tospace.cpp +1939 -0
- data/vendor/tesseract-2.04/textord/tospace.h +193 -0
- data/vendor/tesseract-2.04/textord/tovars.cpp +87 -0
- data/vendor/tesseract-2.04/textord/tovars.h +94 -0
- data/vendor/tesseract-2.04/textord/underlin.cpp +312 -0
- data/vendor/tesseract-2.04/textord/underlin.h +53 -0
- data/vendor/tesseract-2.04/textord/wordseg.cpp +620 -0
- data/vendor/tesseract-2.04/textord/wordseg.h +70 -0
- data/vendor/tesseract-2.04/training/Makefile.am +54 -0
- data/vendor/tesseract-2.04/training/Makefile.in +720 -0
- data/vendor/tesseract-2.04/training/cnTraining.cpp +855 -0
- data/vendor/tesseract-2.04/training/cntraining.dsp +243 -0
- data/vendor/tesseract-2.04/training/cntraining.vcproj +950 -0
- data/vendor/tesseract-2.04/training/mergenf.cpp +451 -0
- data/vendor/tesseract-2.04/training/mergenf.h +106 -0
- data/vendor/tesseract-2.04/training/mfTraining.cpp +1341 -0
- data/vendor/tesseract-2.04/training/mftraining.dsp +285 -0
- data/vendor/tesseract-2.04/training/mftraining.vcproj +1055 -0
- data/vendor/tesseract-2.04/training/name2char.cpp +166 -0
- data/vendor/tesseract-2.04/training/name2char.h +38 -0
- data/vendor/tesseract-2.04/training/training.cpp +190 -0
- data/vendor/tesseract-2.04/training/training.h +130 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.cpp +140 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.dsp +335 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.vcproj +769 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.cpp +69 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.dsp +319 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.vcproj +1113 -0
- data/vendor/tesseract-2.04/viewer/Makefile.am +9 -0
- data/vendor/tesseract-2.04/viewer/Makefile.in +591 -0
- data/vendor/tesseract-2.04/viewer/scrollview.cpp +825 -0
- data/vendor/tesseract-2.04/viewer/scrollview.h +414 -0
- data/vendor/tesseract-2.04/viewer/svmnode.cpp +140 -0
- data/vendor/tesseract-2.04/viewer/svmnode.h +94 -0
- data/vendor/tesseract-2.04/viewer/svpaint.cpp +220 -0
- data/vendor/tesseract-2.04/viewer/svutil.cpp +347 -0
- data/vendor/tesseract-2.04/viewer/svutil.h +138 -0
- data/vendor/tesseract-2.04/wordrec/Makefile.am +23 -0
- data/vendor/tesseract-2.04/wordrec/Makefile.in +641 -0
- data/vendor/tesseract-2.04/wordrec/associate.cpp +62 -0
- data/vendor/tesseract-2.04/wordrec/associate.h +93 -0
- data/vendor/tesseract-2.04/wordrec/badwords.cpp +106 -0
- data/vendor/tesseract-2.04/wordrec/badwords.h +51 -0
- data/vendor/tesseract-2.04/wordrec/bestfirst.cpp +526 -0
- data/vendor/tesseract-2.04/wordrec/bestfirst.h +203 -0
- data/vendor/tesseract-2.04/wordrec/charsample.h +208 -0
- data/vendor/tesseract-2.04/wordrec/chop.cpp +458 -0
- data/vendor/tesseract-2.04/wordrec/chop.h +153 -0
- data/vendor/tesseract-2.04/wordrec/chopper.cpp +750 -0
- data/vendor/tesseract-2.04/wordrec/chopper.h +104 -0
- data/vendor/tesseract-2.04/wordrec/closed.cpp +136 -0
- data/vendor/tesseract-2.04/wordrec/closed.h +65 -0
- data/vendor/tesseract-2.04/wordrec/djmenus.cpp +118 -0
- data/vendor/tesseract-2.04/wordrec/djmenus.h +33 -0
- data/vendor/tesseract-2.04/wordrec/drawfx.cpp +92 -0
- data/vendor/tesseract-2.04/wordrec/drawfx.h +33 -0
- data/vendor/tesseract-2.04/wordrec/findseam.cpp +566 -0
- data/vendor/tesseract-2.04/wordrec/findseam.h +69 -0
- data/vendor/tesseract-2.04/wordrec/gradechop.cpp +226 -0
- data/vendor/tesseract-2.04/wordrec/gradechop.h +91 -0
- data/vendor/tesseract-2.04/wordrec/heuristic.cpp +194 -0
- data/vendor/tesseract-2.04/wordrec/heuristic.h +120 -0
- data/vendor/tesseract-2.04/wordrec/makechop.cpp +281 -0
- data/vendor/tesseract-2.04/wordrec/makechop.h +69 -0
- data/vendor/tesseract-2.04/wordrec/matchtab.cpp +191 -0
- data/vendor/tesseract-2.04/wordrec/matchtab.h +45 -0
- data/vendor/tesseract-2.04/wordrec/matrix.cpp +118 -0
- data/vendor/tesseract-2.04/wordrec/matrix.h +104 -0
- data/vendor/tesseract-2.04/wordrec/measure.h +135 -0
- data/vendor/tesseract-2.04/wordrec/metrics.cpp +363 -0
- data/vendor/tesseract-2.04/wordrec/metrics.h +130 -0
- data/vendor/tesseract-2.04/wordrec/mfvars.cpp +51 -0
- data/vendor/tesseract-2.04/wordrec/mfvars.h +27 -0
- data/vendor/tesseract-2.04/wordrec/msmenus.cpp +110 -0
- data/vendor/tesseract-2.04/wordrec/msmenus.h +45 -0
- data/vendor/tesseract-2.04/wordrec/olutil.cpp +153 -0
- data/vendor/tesseract-2.04/wordrec/olutil.h +128 -0
- data/vendor/tesseract-2.04/wordrec/outlines.cpp +172 -0
- data/vendor/tesseract-2.04/wordrec/outlines.h +148 -0
- data/vendor/tesseract-2.04/wordrec/pieces.cpp +410 -0
- data/vendor/tesseract-2.04/wordrec/pieces.h +154 -0
- data/vendor/tesseract-2.04/wordrec/plotedges.cpp +134 -0
- data/vendor/tesseract-2.04/wordrec/plotedges.h +71 -0
- data/vendor/tesseract-2.04/wordrec/plotseg.cpp +116 -0
- data/vendor/tesseract-2.04/wordrec/plotseg.h +73 -0
- data/vendor/tesseract-2.04/wordrec/render.cpp +152 -0
- data/vendor/tesseract-2.04/wordrec/render.h +58 -0
- data/vendor/tesseract-2.04/wordrec/seam.cpp +482 -0
- data/vendor/tesseract-2.04/wordrec/seam.h +136 -0
- data/vendor/tesseract-2.04/wordrec/split.cpp +182 -0
- data/vendor/tesseract-2.04/wordrec/split.h +115 -0
- data/vendor/tesseract-2.04/wordrec/tally.cpp +68 -0
- data/vendor/tesseract-2.04/wordrec/tally.h +94 -0
- data/vendor/tesseract-2.04/wordrec/tessinit.cpp +108 -0
- data/vendor/tesseract-2.04/wordrec/tessinit.h +46 -0
- data/vendor/tesseract-2.04/wordrec/tface.cpp +272 -0
- data/vendor/tesseract-2.04/wordrec/tface.h +35 -0
- data/vendor/tesseract-2.04/wordrec/wordclass.cpp +284 -0
- data/vendor/tesseract-2.04/wordrec/wordclass.h +64 -0
- metadata +708 -0
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: pageres.h (Formerly page_res.h)
|
|
3
|
+
* Description: Results classes used by control.c
|
|
4
|
+
* Author: Phil Cheatle
|
|
5
|
+
* Created: Tue Sep 22 08:42:49 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
|
+
#ifndef PAGERES_H
|
|
20
|
+
#define PAGERES_H
|
|
21
|
+
|
|
22
|
+
#include "elst.h"
|
|
23
|
+
#include "ocrblock.h"
|
|
24
|
+
#include "ocrrow.h"
|
|
25
|
+
#include "werd.h"
|
|
26
|
+
#include "ratngs.h"
|
|
27
|
+
#include "rejctmap.h"
|
|
28
|
+
#include "notdll.h"
|
|
29
|
+
#include "notdll.h"
|
|
30
|
+
|
|
31
|
+
/* Forward declarations */
|
|
32
|
+
|
|
33
|
+
class BLOCK_RES;
|
|
34
|
+
|
|
35
|
+
ELISTIZEH (BLOCK_RES) CLISTIZEH (BLOCK_RES)
|
|
36
|
+
class
|
|
37
|
+
ROW_RES;
|
|
38
|
+
|
|
39
|
+
ELISTIZEH (ROW_RES)
|
|
40
|
+
class WERD_RES;
|
|
41
|
+
|
|
42
|
+
ELISTIZEH (WERD_RES)
|
|
43
|
+
/*************************************************************************
|
|
44
|
+
* PAGE_RES - Page results
|
|
45
|
+
*************************************************************************/
|
|
46
|
+
class PAGE_RES //page result
|
|
47
|
+
{
|
|
48
|
+
public:
|
|
49
|
+
inT32 char_count;
|
|
50
|
+
inT32 rej_count;
|
|
51
|
+
BLOCK_RES_LIST block_res_list;
|
|
52
|
+
BOOL8 rejected;
|
|
53
|
+
|
|
54
|
+
PAGE_RES() {
|
|
55
|
+
} //empty constructor
|
|
56
|
+
|
|
57
|
+
PAGE_RES( //simple constructor
|
|
58
|
+
BLOCK_LIST *block_list); //real blocks
|
|
59
|
+
|
|
60
|
+
~PAGE_RES () { //destructor
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/*************************************************************************
|
|
65
|
+
* BLOCK_RES - Block results
|
|
66
|
+
*************************************************************************/
|
|
67
|
+
|
|
68
|
+
class BLOCK_RES:public ELIST_LINK
|
|
69
|
+
//page block result
|
|
70
|
+
{
|
|
71
|
+
public:
|
|
72
|
+
BLOCK * block; //real block
|
|
73
|
+
inT32 char_count; //chars in block
|
|
74
|
+
inT32 rej_count; //rejected chars
|
|
75
|
+
inT16 font_class; //
|
|
76
|
+
inT16 row_count;
|
|
77
|
+
float x_height;
|
|
78
|
+
BOOL8 font_assigned; // block already
|
|
79
|
+
// processed
|
|
80
|
+
BOOL8 bold; // all bold
|
|
81
|
+
BOOL8 italic; // all italic
|
|
82
|
+
|
|
83
|
+
ROW_RES_LIST row_res_list;
|
|
84
|
+
|
|
85
|
+
BLOCK_RES() {
|
|
86
|
+
} //empty constructor
|
|
87
|
+
|
|
88
|
+
BLOCK_RES( //simple constructor
|
|
89
|
+
BLOCK *the_block); //real block
|
|
90
|
+
|
|
91
|
+
~BLOCK_RES () { //destructor
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/*************************************************************************
|
|
96
|
+
* ROW_RES - Row results
|
|
97
|
+
*************************************************************************/
|
|
98
|
+
|
|
99
|
+
class ROW_RES:public ELIST_LINK //row result
|
|
100
|
+
{
|
|
101
|
+
public:
|
|
102
|
+
ROW * row; //real row
|
|
103
|
+
inT32 char_count; //chars in block
|
|
104
|
+
inT32 rej_count; //rejected chars
|
|
105
|
+
inT32 whole_word_rej_count; //rejs in total rej wds
|
|
106
|
+
WERD_RES_LIST word_res_list;
|
|
107
|
+
float font_class_score;
|
|
108
|
+
inT16 font_class; //
|
|
109
|
+
inT32 italic;
|
|
110
|
+
inT32 bold;
|
|
111
|
+
inT8 font1; //primary font
|
|
112
|
+
inT8 font1_count; //no of voters
|
|
113
|
+
inT8 font2; //secondary font
|
|
114
|
+
inT8 font2_count; //no of voters
|
|
115
|
+
|
|
116
|
+
ROW_RES() {
|
|
117
|
+
} //empty constructor
|
|
118
|
+
|
|
119
|
+
ROW_RES( //simple constructor
|
|
120
|
+
ROW *the_row); //real row
|
|
121
|
+
|
|
122
|
+
~ROW_RES () { //destructor
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
/*************************************************************************
|
|
127
|
+
* WERD_RES - Word results
|
|
128
|
+
*************************************************************************/
|
|
129
|
+
enum CRUNCH_MODE
|
|
130
|
+
{
|
|
131
|
+
CR_NONE,
|
|
132
|
+
CR_KEEP_SPACE,
|
|
133
|
+
CR_LOOSE_SPACE,
|
|
134
|
+
CR_DELETE
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
class WERD_RES:public ELIST_LINK //word result
|
|
138
|
+
{
|
|
139
|
+
public:
|
|
140
|
+
WERD * word; //non-bln real word
|
|
141
|
+
WERD *outword; //bln best choice
|
|
142
|
+
//segmentation
|
|
143
|
+
DENORM denorm; //for use on outword
|
|
144
|
+
WERD_CHOICE *best_choice; //tess output
|
|
145
|
+
WERD_CHOICE *raw_choice; //top choice permuter
|
|
146
|
+
WERD_CHOICE *ep_choice; //ep text
|
|
147
|
+
REJMAP reject_map; //best_choice rejects
|
|
148
|
+
BOOL8 tess_failed;
|
|
149
|
+
/*
|
|
150
|
+
If tess_failed is TRUE, one of the following tests failed when Tess
|
|
151
|
+
returned:
|
|
152
|
+
- The outword blob list was not the same length as the best_choice string;
|
|
153
|
+
- The best_choice string contained ALL blanks;
|
|
154
|
+
- The best_choice string was zero length
|
|
155
|
+
*/
|
|
156
|
+
BOOL8 tess_accepted; //Tess thinks its ok?
|
|
157
|
+
BOOL8 tess_would_adapt; //Tess would adapt?
|
|
158
|
+
BOOL8 done; //ready for output?
|
|
159
|
+
inT8 italic;
|
|
160
|
+
inT8 bold;
|
|
161
|
+
inT8 font1; //primary font
|
|
162
|
+
inT8 font1_count; //no of voters
|
|
163
|
+
inT8 font2; //secondary font
|
|
164
|
+
inT8 font2_count; //no of voters
|
|
165
|
+
CRUNCH_MODE unlv_crunch_mode;
|
|
166
|
+
float x_height; //Post match estimate
|
|
167
|
+
float caps_height; //Post match estimate
|
|
168
|
+
BOOL8 guessed_x_ht;
|
|
169
|
+
BOOL8 guessed_caps_ht;
|
|
170
|
+
/*
|
|
171
|
+
To deal with fuzzy spaces we need to be able to combine "words" to form
|
|
172
|
+
combinations when we suspect that the gap is a non-space. The (new) text
|
|
173
|
+
ord code generates separate words for EVERY fuzzy gap - flags in the word
|
|
174
|
+
indicate whether the gap is below the threshold (fuzzy kern) and is thus
|
|
175
|
+
NOT a real word break by default, or above the threshold (fuzzy space) and
|
|
176
|
+
this is a real word break by default.
|
|
177
|
+
|
|
178
|
+
The WERD_RES list contains all these words PLUS "combination" words built
|
|
179
|
+
out of (copies of) the words split by fuzzy kerns. The separate parts have
|
|
180
|
+
their "part_of_combo" flag set true and should be IGNORED on a default
|
|
181
|
+
reading of the list.
|
|
182
|
+
|
|
183
|
+
Combination words are FOLLOWED by the sequence of part_of_combo words
|
|
184
|
+
which they combine.
|
|
185
|
+
*/
|
|
186
|
+
BOOL8 combination; //of two fuzzy gap wds
|
|
187
|
+
BOOL8 part_of_combo; //part of a combo
|
|
188
|
+
BOOL8 reject_spaces; //Reject spacing?
|
|
189
|
+
|
|
190
|
+
WERD_RES() {
|
|
191
|
+
} //empty constructor
|
|
192
|
+
|
|
193
|
+
WERD_RES( //simple constructor
|
|
194
|
+
WERD *the_word) { //real word
|
|
195
|
+
word = the_word;
|
|
196
|
+
outword = NULL;
|
|
197
|
+
best_choice = NULL;
|
|
198
|
+
raw_choice = NULL;
|
|
199
|
+
ep_choice = NULL;
|
|
200
|
+
tess_failed = FALSE;
|
|
201
|
+
tess_accepted = FALSE;
|
|
202
|
+
tess_would_adapt = FALSE;
|
|
203
|
+
done = FALSE;
|
|
204
|
+
unlv_crunch_mode = CR_NONE;
|
|
205
|
+
italic = FALSE;
|
|
206
|
+
bold = FALSE;
|
|
207
|
+
font1 = -1;
|
|
208
|
+
font1_count = 0;
|
|
209
|
+
font2 = -1;
|
|
210
|
+
font2_count = 0;
|
|
211
|
+
x_height = 0.0;
|
|
212
|
+
caps_height = 0.0;
|
|
213
|
+
guessed_x_ht = TRUE;
|
|
214
|
+
guessed_caps_ht = TRUE;
|
|
215
|
+
combination = FALSE;
|
|
216
|
+
part_of_combo = FALSE;
|
|
217
|
+
reject_spaces = FALSE;
|
|
218
|
+
}
|
|
219
|
+
WERD_RES(const WERD_RES &source) {
|
|
220
|
+
*this = source; //see operator=
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
~WERD_RES (); //destructor
|
|
224
|
+
|
|
225
|
+
WERD_RES& operator=(const WERD_RES& source); //from this
|
|
226
|
+
|
|
227
|
+
static WERD_RES* deep_copy(const WERD_RES* src) {
|
|
228
|
+
return new WERD_RES(*src);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
void copy_on( //copy blobs onto word
|
|
232
|
+
WERD_RES *word_res) { //from this word
|
|
233
|
+
word->set_flag (W_EOL, word_res->word->flag (W_EOL));
|
|
234
|
+
word->copy_on (word_res->word);
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
/*************************************************************************
|
|
239
|
+
* PAGE_RES_IT - Page results iterator
|
|
240
|
+
*************************************************************************/
|
|
241
|
+
|
|
242
|
+
class PAGE_RES_IT
|
|
243
|
+
{
|
|
244
|
+
public:
|
|
245
|
+
PAGE_RES * page_res; //page being iterated
|
|
246
|
+
|
|
247
|
+
PAGE_RES_IT() {
|
|
248
|
+
} //empty contructor
|
|
249
|
+
|
|
250
|
+
PAGE_RES_IT( //empty contructor
|
|
251
|
+
PAGE_RES *the_page_res) { //page result
|
|
252
|
+
page_res = the_page_res;
|
|
253
|
+
restart_page(); //ready to scan
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
WERD_RES *restart_page(); //get ready
|
|
257
|
+
|
|
258
|
+
WERD_RES *internal_forward( //get next word
|
|
259
|
+
BOOL8 new_block);
|
|
260
|
+
|
|
261
|
+
WERD_RES *forward() { //get next word
|
|
262
|
+
return internal_forward (FALSE);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
WERD_RES *forward_block(); //get first word in
|
|
266
|
+
//next non-empty block
|
|
267
|
+
WERD_RES *prev_word() { //previous word
|
|
268
|
+
return prev_word_res;
|
|
269
|
+
}
|
|
270
|
+
ROW_RES *prev_row() { //row of prev word
|
|
271
|
+
return prev_row_res;
|
|
272
|
+
}
|
|
273
|
+
BLOCK_RES *prev_block() { //block of prev word
|
|
274
|
+
return prev_block_res;
|
|
275
|
+
}
|
|
276
|
+
WERD_RES *word() { //current word
|
|
277
|
+
return word_res;
|
|
278
|
+
}
|
|
279
|
+
ROW_RES *row() { //row of current word
|
|
280
|
+
return row_res;
|
|
281
|
+
}
|
|
282
|
+
BLOCK_RES *block() { //block of cur. word
|
|
283
|
+
return block_res;
|
|
284
|
+
}
|
|
285
|
+
WERD_RES *next_word() { //next word
|
|
286
|
+
return next_word_res;
|
|
287
|
+
}
|
|
288
|
+
ROW_RES *next_row() { //row of next word
|
|
289
|
+
return next_row_res;
|
|
290
|
+
}
|
|
291
|
+
BLOCK_RES *next_block() { //block of next word
|
|
292
|
+
return next_block_res;
|
|
293
|
+
}
|
|
294
|
+
void rej_stat_word(); //for page/block/row
|
|
295
|
+
|
|
296
|
+
private:
|
|
297
|
+
WERD_RES * prev_word_res; //previous word
|
|
298
|
+
ROW_RES *prev_row_res; //row of prev word
|
|
299
|
+
BLOCK_RES *prev_block_res; //block of prev word
|
|
300
|
+
|
|
301
|
+
WERD_RES *word_res; //current word
|
|
302
|
+
ROW_RES *row_res; //row of current word
|
|
303
|
+
BLOCK_RES *block_res; //block of cur. word
|
|
304
|
+
|
|
305
|
+
WERD_RES *next_word_res; //next word
|
|
306
|
+
ROW_RES *next_row_res; //row of next word
|
|
307
|
+
BLOCK_RES *next_block_res; //block of next word
|
|
308
|
+
|
|
309
|
+
BLOCK_RES_IT block_res_it; //iterators
|
|
310
|
+
ROW_RES_IT row_res_it;
|
|
311
|
+
WERD_RES_IT word_res_it;
|
|
312
|
+
};
|
|
313
|
+
#endif
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: pdblock.c (Formerly pdblk.c)
|
|
3
|
+
* Description: PDBLK member functions and iterator functions.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Fri Mar 15 09:41:28 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
|
+
#include "blckerr.h"
|
|
23
|
+
#include "pdblock.h"
|
|
24
|
+
#include "svshowim.h"
|
|
25
|
+
|
|
26
|
+
#include "hpddef.h" //must be last (handpd.dll)
|
|
27
|
+
|
|
28
|
+
#define BLOCK_LABEL_HEIGHT 150 //char height of block id
|
|
29
|
+
|
|
30
|
+
CLISTIZE (PDBLK)
|
|
31
|
+
/**********************************************************************
|
|
32
|
+
* PDBLK::PDBLK
|
|
33
|
+
*
|
|
34
|
+
* Constructor for a simple rectangular block.
|
|
35
|
+
**********************************************************************/
|
|
36
|
+
PDBLK::PDBLK ( //rectangular block
|
|
37
|
+
inT16 xmin, //bottom left
|
|
38
|
+
inT16 ymin, inT16 xmax, //top right
|
|
39
|
+
inT16 ymax): box (ICOORD (xmin, ymin), ICOORD (xmax, ymax)) {
|
|
40
|
+
//boundaries
|
|
41
|
+
ICOORDELT_IT left_it = &leftside;
|
|
42
|
+
ICOORDELT_IT right_it = &rightside;
|
|
43
|
+
|
|
44
|
+
hand_block = NULL;
|
|
45
|
+
hand_poly = NULL;
|
|
46
|
+
left_it.set_to_list (&leftside);
|
|
47
|
+
right_it.set_to_list (&rightside);
|
|
48
|
+
//make default box
|
|
49
|
+
left_it.add_to_end (new ICOORDELT (xmin, ymin));
|
|
50
|
+
left_it.add_to_end (new ICOORDELT (xmin, ymax));
|
|
51
|
+
right_it.add_to_end (new ICOORDELT (xmax, ymin));
|
|
52
|
+
right_it.add_to_end (new ICOORDELT (xmax, ymax));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
/**********************************************************************
|
|
57
|
+
* PDBLK::set_sides
|
|
58
|
+
*
|
|
59
|
+
* Sets left and right vertex lists
|
|
60
|
+
**********************************************************************/
|
|
61
|
+
|
|
62
|
+
void PDBLK::set_sides( //set vertex lists
|
|
63
|
+
ICOORDELT_LIST *left, //left vertices
|
|
64
|
+
ICOORDELT_LIST *right //right vertices
|
|
65
|
+
) {
|
|
66
|
+
//boundaries
|
|
67
|
+
ICOORDELT_IT left_it = &leftside;
|
|
68
|
+
ICOORDELT_IT right_it = &rightside;
|
|
69
|
+
|
|
70
|
+
leftside.clear ();
|
|
71
|
+
left_it.move_to_first ();
|
|
72
|
+
left_it.add_list_before (left);
|
|
73
|
+
rightside.clear ();
|
|
74
|
+
right_it.move_to_first ();
|
|
75
|
+
right_it.add_list_before (right);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/**********************************************************************
|
|
80
|
+
* PDBLK::contains
|
|
81
|
+
*
|
|
82
|
+
* Return TRUE if the given point is within the block.
|
|
83
|
+
**********************************************************************/
|
|
84
|
+
|
|
85
|
+
BOOL8 PDBLK::contains( //test containment
|
|
86
|
+
ICOORD pt //point to test
|
|
87
|
+
) {
|
|
88
|
+
BLOCK_RECT_IT it = this; //rectangle iterator
|
|
89
|
+
ICOORD bleft, tright; //corners of rectangle
|
|
90
|
+
|
|
91
|
+
for (it.start_block (); !it.cycled_rects (); it.forward ()) {
|
|
92
|
+
//get rectangle
|
|
93
|
+
it.bounding_box (bleft, tright);
|
|
94
|
+
//inside rect
|
|
95
|
+
if (pt.x () >= bleft.x () && pt.x () <= tright.x ()
|
|
96
|
+
&& pt.y () >= bleft.y () && pt.y () <= tright.y ())
|
|
97
|
+
return TRUE; //is inside
|
|
98
|
+
}
|
|
99
|
+
return FALSE; //not inside
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
/**********************************************************************
|
|
104
|
+
* PDBLK::move
|
|
105
|
+
*
|
|
106
|
+
* Reposition block
|
|
107
|
+
**********************************************************************/
|
|
108
|
+
|
|
109
|
+
void PDBLK::move( // reposition block
|
|
110
|
+
const ICOORD vec // by vector
|
|
111
|
+
) {
|
|
112
|
+
ICOORDELT_IT it(&leftside);
|
|
113
|
+
|
|
114
|
+
for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ())
|
|
115
|
+
*(it.data ()) += vec;
|
|
116
|
+
|
|
117
|
+
it.set_to_list (&rightside);
|
|
118
|
+
|
|
119
|
+
for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ())
|
|
120
|
+
*(it.data ()) += vec;
|
|
121
|
+
|
|
122
|
+
box.move (vec);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
/**********************************************************************
|
|
127
|
+
* PDBLK::plot
|
|
128
|
+
*
|
|
129
|
+
* Plot the outline of a block in the given colour.
|
|
130
|
+
**********************************************************************/
|
|
131
|
+
|
|
132
|
+
#ifndef GRAPHICS_DISABLED
|
|
133
|
+
void PDBLK::plot( //draw outline
|
|
134
|
+
ScrollView* window, //window to draw in
|
|
135
|
+
inT32 serial, //serial number
|
|
136
|
+
ScrollView::Color colour //colour to draw in
|
|
137
|
+
) {
|
|
138
|
+
ICOORD startpt; //start of outline
|
|
139
|
+
ICOORD endpt; //end of outline
|
|
140
|
+
ICOORD prevpt; //previous point
|
|
141
|
+
ICOORDELT_IT it = &leftside; //iterator
|
|
142
|
+
|
|
143
|
+
//set the colour
|
|
144
|
+
window->Pen(colour);
|
|
145
|
+
window->TextAttributes("Times", BLOCK_LABEL_HEIGHT, false, false, false);
|
|
146
|
+
|
|
147
|
+
if (hand_poly != NULL) {
|
|
148
|
+
hand_poly->plot(window, colour, serial);
|
|
149
|
+
} else if (!leftside.empty ()) {
|
|
150
|
+
startpt = *(it.data ()); //bottom left corner
|
|
151
|
+
// tprintf("Block %d bottom left is (%d,%d)\n",
|
|
152
|
+
// serial,startpt.x(),startpt.y());
|
|
153
|
+
char temp_buff[34];
|
|
154
|
+
#ifdef __UNIX__
|
|
155
|
+
sprintf(temp_buff, INT32FORMAT, serial);
|
|
156
|
+
#else
|
|
157
|
+
ultoa (serial, temp_buff, 10);
|
|
158
|
+
#endif
|
|
159
|
+
window->Text(startpt.x (), startpt.y (), temp_buff);
|
|
160
|
+
|
|
161
|
+
window->SetCursor(startpt.x (), startpt.y ());
|
|
162
|
+
do {
|
|
163
|
+
prevpt = *(it.data ()); //previous point
|
|
164
|
+
it.forward (); //move to next point
|
|
165
|
+
//draw round corner
|
|
166
|
+
window->DrawTo(prevpt.x (), it.data ()->y ());
|
|
167
|
+
window->DrawTo(it.data ()->x (), it.data ()->y ());
|
|
168
|
+
}
|
|
169
|
+
while (!it.at_last ()); //until end of list
|
|
170
|
+
endpt = *(it.data ()); //end point
|
|
171
|
+
|
|
172
|
+
//other side of boundary
|
|
173
|
+
window->SetCursor(startpt.x (), startpt.y ());
|
|
174
|
+
it.set_to_list (&rightside);
|
|
175
|
+
prevpt = startpt;
|
|
176
|
+
for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ()) {
|
|
177
|
+
//draw round corner
|
|
178
|
+
window->DrawTo(prevpt.x (), it.data ()->y ());
|
|
179
|
+
window->DrawTo(it.data ()->x (), it.data ()->y ());
|
|
180
|
+
prevpt = *(it.data ()); //previous point
|
|
181
|
+
}
|
|
182
|
+
//close boundary
|
|
183
|
+
window->DrawTo(endpt.x(), endpt.y());
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
#endif
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
/**********************************************************************
|
|
190
|
+
* PDBLK::show
|
|
191
|
+
*
|
|
192
|
+
* Show the image corresponding to a block as its set of rectangles.
|
|
193
|
+
**********************************************************************/
|
|
194
|
+
|
|
195
|
+
#ifndef GRAPHICS_DISABLED
|
|
196
|
+
void PDBLK::show( //show image block
|
|
197
|
+
IMAGE *image, //image to show
|
|
198
|
+
ScrollView* window //window to show in
|
|
199
|
+
) {
|
|
200
|
+
BLOCK_RECT_IT it = this; //rectangle iterator
|
|
201
|
+
ICOORD bleft, tright; //corners of rectangle
|
|
202
|
+
|
|
203
|
+
for (it.start_block (); !it.cycled_rects (); it.forward ()) {
|
|
204
|
+
//get rectangle
|
|
205
|
+
it.bounding_box (bleft, tright);
|
|
206
|
+
// tprintf("Drawing a block with a bottom left of (%d,%d)\n",
|
|
207
|
+
// bleft.x(),bleft.y());
|
|
208
|
+
//show it
|
|
209
|
+
sv_show_sub_image (image, bleft.x (), bleft.y (), tright.x () - bleft.x (), tright.y () - bleft.y (), window, bleft.x (), bleft.y ());
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
#endif
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
/**********************************************************************
|
|
216
|
+
* PDBLK::operator=
|
|
217
|
+
*
|
|
218
|
+
* Assignment - duplicate the block structure, but with an EMPTY row list.
|
|
219
|
+
**********************************************************************/
|
|
220
|
+
|
|
221
|
+
PDBLK & PDBLK::operator= ( //assignment
|
|
222
|
+
const PDBLK & source //from this
|
|
223
|
+
) {
|
|
224
|
+
// this->ELIST_LINK::operator=(source);
|
|
225
|
+
if (!leftside.empty ())
|
|
226
|
+
leftside.clear ();
|
|
227
|
+
if (!rightside.empty ())
|
|
228
|
+
rightside.clear ();
|
|
229
|
+
leftside.deep_copy(&source.leftside, &ICOORDELT::deep_copy);
|
|
230
|
+
rightside.deep_copy(&source.rightside, &ICOORDELT::deep_copy);
|
|
231
|
+
box = source.box;
|
|
232
|
+
return *this;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
/**********************************************************************
|
|
237
|
+
* BLOCK_RECT_IT::BLOCK_RECT_IT
|
|
238
|
+
*
|
|
239
|
+
* Construct a block rectangle iterator.
|
|
240
|
+
**********************************************************************/
|
|
241
|
+
|
|
242
|
+
BLOCK_RECT_IT::BLOCK_RECT_IT (
|
|
243
|
+
//iterate rectangles
|
|
244
|
+
PDBLK * blkptr //from block
|
|
245
|
+
):left_it (&blkptr->leftside), right_it (&blkptr->rightside) {
|
|
246
|
+
block = blkptr; //remember block
|
|
247
|
+
//non empty list
|
|
248
|
+
if (!blkptr->leftside.empty ()) {
|
|
249
|
+
start_block(); //ready for iteration
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
/**********************************************************************
|
|
255
|
+
* BLOCK_RECT_IT::set_to_block
|
|
256
|
+
*
|
|
257
|
+
* Start a new block.
|
|
258
|
+
**********************************************************************/
|
|
259
|
+
|
|
260
|
+
void BLOCK_RECT_IT::set_to_block( //start (new) block
|
|
261
|
+
PDBLK *blkptr) { //block to start
|
|
262
|
+
block = blkptr; //remember block
|
|
263
|
+
//set iterators
|
|
264
|
+
left_it.set_to_list (&blkptr->leftside);
|
|
265
|
+
right_it.set_to_list (&blkptr->rightside);
|
|
266
|
+
if (!blkptr->leftside.empty ())
|
|
267
|
+
start_block(); //ready for iteration
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
/**********************************************************************
|
|
272
|
+
* BLOCK_RECT_IT::start_block
|
|
273
|
+
*
|
|
274
|
+
* Restart a block.
|
|
275
|
+
**********************************************************************/
|
|
276
|
+
|
|
277
|
+
void BLOCK_RECT_IT::start_block() { //start (new) block
|
|
278
|
+
left_it.move_to_first ();
|
|
279
|
+
right_it.move_to_first ();
|
|
280
|
+
left_it.mark_cycle_pt ();
|
|
281
|
+
right_it.mark_cycle_pt ();
|
|
282
|
+
ymin = left_it.data ()->y (); //bottom of first box
|
|
283
|
+
ymax = left_it.data_relative (1)->y ();
|
|
284
|
+
if (right_it.data_relative (1)->y () < ymax)
|
|
285
|
+
//smallest step
|
|
286
|
+
ymax = right_it.data_relative (1)->y ();
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
/**********************************************************************
|
|
291
|
+
* BLOCK_RECT_IT::forward
|
|
292
|
+
*
|
|
293
|
+
* Move to the next rectangle in the block.
|
|
294
|
+
**********************************************************************/
|
|
295
|
+
|
|
296
|
+
void BLOCK_RECT_IT::forward() { //next rectangle
|
|
297
|
+
if (!left_it.empty ()) { //non-empty list
|
|
298
|
+
if (left_it.data_relative (1)->y () == ymax)
|
|
299
|
+
left_it.forward (); //move to meet top
|
|
300
|
+
if (right_it.data_relative (1)->y () == ymax)
|
|
301
|
+
right_it.forward ();
|
|
302
|
+
//last is special
|
|
303
|
+
if (left_it.at_last () || right_it.at_last ()) {
|
|
304
|
+
left_it.move_to_first (); //restart
|
|
305
|
+
right_it.move_to_first ();
|
|
306
|
+
//now at bottom
|
|
307
|
+
ymin = left_it.data ()->y ();
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
ymin = ymax; //new bottom
|
|
311
|
+
}
|
|
312
|
+
//next point
|
|
313
|
+
ymax = left_it.data_relative (1)->y ();
|
|
314
|
+
if (right_it.data_relative (1)->y () < ymax)
|
|
315
|
+
//least step forward
|
|
316
|
+
ymax = right_it.data_relative (1)->y ();
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
/**********************************************************************
|
|
322
|
+
* BLOCK_LINE_IT::get_line
|
|
323
|
+
*
|
|
324
|
+
* Get the the start and width of a line in the block.
|
|
325
|
+
**********************************************************************/
|
|
326
|
+
|
|
327
|
+
inT16 BLOCK_LINE_IT::get_line( //get a line
|
|
328
|
+
inT16 y, //line to get
|
|
329
|
+
inT16 &xext //output extent
|
|
330
|
+
) {
|
|
331
|
+
ICOORD bleft; //bounding box
|
|
332
|
+
ICOORD tright; //of block & rect
|
|
333
|
+
|
|
334
|
+
//get block box
|
|
335
|
+
block->bounding_box (bleft, tright);
|
|
336
|
+
if (y < bleft.y () || y >= tright.y ()) {
|
|
337
|
+
// block->print(stderr,FALSE);
|
|
338
|
+
BADBLOCKLINE.error ("BLOCK_LINE_IT::get_line", ABORT, "Y=%d", y);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
//get rectangle box
|
|
342
|
+
rect_it.bounding_box (bleft, tright);
|
|
343
|
+
//inside rectangle
|
|
344
|
+
if (y >= bleft.y () && y < tright.y ()) {
|
|
345
|
+
//width of line
|
|
346
|
+
xext = tright.x () - bleft.x ();
|
|
347
|
+
return bleft.x (); //start of line
|
|
348
|
+
}
|
|
349
|
+
for (rect_it.start_block (); !rect_it.cycled_rects (); rect_it.forward ()) {
|
|
350
|
+
//get rectangle box
|
|
351
|
+
rect_it.bounding_box (bleft, tright);
|
|
352
|
+
//inside rectangle
|
|
353
|
+
if (y >= bleft.y () && y < tright.y ()) {
|
|
354
|
+
//width of line
|
|
355
|
+
xext = tright.x () - bleft.x ();
|
|
356
|
+
return bleft.x (); //start of line
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
LOSTBLOCKLINE.error ("BLOCK_LINE_IT::get_line", ABORT, "Y=%d", y);
|
|
360
|
+
return 0; //dummy to stop warning
|
|
361
|
+
}
|