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