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,412 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
* File: edgblob.c (Formerly edgeloop.c)
|
3
|
+
* Description: Functions to clean up an outline before approximation.
|
4
|
+
* Author: Ray Smith
|
5
|
+
* Created: Tue Mar 26 16:56:25 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 "dirtab.h"
|
22
|
+
#include "scanedg.h"
|
23
|
+
#include "drawedg.h"
|
24
|
+
#include "edgloop.h"
|
25
|
+
#include "edgblob.h"
|
26
|
+
|
27
|
+
#define EXTERN
|
28
|
+
|
29
|
+
EXTERN INT_VAR (edges_children_per_grandchild, 10,
|
30
|
+
"Importance ratio for chucking outlines");
|
31
|
+
EXTERN INT_VAR (edges_children_count_limit, 45, "Max holes allowed in blob");
|
32
|
+
EXTERN BOOL_VAR (edges_children_fix, FALSE,
|
33
|
+
"Remove boxy parents of char-like children");
|
34
|
+
EXTERN INT_VAR (edges_min_nonhole, 12,
|
35
|
+
"Min pixels for potential char in box");
|
36
|
+
EXTERN INT_VAR (edges_patharea_ratio, 40,
|
37
|
+
"Max lensq/area for acceptable child outline");
|
38
|
+
EXTERN double_VAR (edges_childarea, 0.5,
|
39
|
+
"Max area fraction of child outline");
|
40
|
+
EXTERN double_VAR (edges_boxarea, 0.875,
|
41
|
+
"Min area fraction of grandchild for box");
|
42
|
+
|
43
|
+
/**********************************************************************
|
44
|
+
* OL_BUCKETS::OL_BUCKETS
|
45
|
+
*
|
46
|
+
* Construct an array of buckets for associating outlines into blobs.
|
47
|
+
**********************************************************************/
|
48
|
+
|
49
|
+
OL_BUCKETS::OL_BUCKETS (
|
50
|
+
////constructor
|
51
|
+
ICOORD bleft, //corners
|
52
|
+
ICOORD tright): bl (bleft), tr (tright) {
|
53
|
+
|
54
|
+
bxdim = (tright.x () - bleft.x ()) / BUCKETSIZE + 1;
|
55
|
+
bydim = (tright.y () - bleft.y ()) / BUCKETSIZE + 1;
|
56
|
+
//make array
|
57
|
+
buckets = new C_OUTLINE_LIST[bxdim * bydim];
|
58
|
+
index = 0;
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
/**********************************************************************
|
63
|
+
* OL_BUCKETS::operator(
|
64
|
+
*
|
65
|
+
* Return a pointer to a list of C_OUTLINEs corresponding to the
|
66
|
+
* given pixel coordinates.
|
67
|
+
**********************************************************************/
|
68
|
+
|
69
|
+
C_OUTLINE_LIST *
|
70
|
+
OL_BUCKETS::operator () ( //array access
|
71
|
+
inT16 x, //image coords
|
72
|
+
inT16 y) {
|
73
|
+
return &buckets[(y - bl.y ()) / BUCKETSIZE * bxdim +
|
74
|
+
(x - bl.x ()) / BUCKETSIZE];
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
/**********************************************************************
|
79
|
+
* OL_BUCKETS::count_children
|
80
|
+
*
|
81
|
+
* Find number of descendants of this outline.
|
82
|
+
**********************************************************************/
|
83
|
+
|
84
|
+
inT32 OL_BUCKETS::count_children( //recursive count
|
85
|
+
C_OUTLINE *outline, //parent outline
|
86
|
+
inT32 max_count //max output
|
87
|
+
) {
|
88
|
+
BOOL8 parent_box; //could it be boxy
|
89
|
+
inT16 xmin, xmax; //coord limits
|
90
|
+
inT16 ymin, ymax;
|
91
|
+
inT16 xindex, yindex; //current bucket
|
92
|
+
C_OUTLINE *child; //current child
|
93
|
+
inT32 child_count; //no of children
|
94
|
+
inT32 grandchild_count; //no of grandchildren
|
95
|
+
inT32 parent_area; //potential box
|
96
|
+
FLOAT32 max_parent_area; //potential box
|
97
|
+
inT32 child_area; //current child
|
98
|
+
inT32 child_length; //current child
|
99
|
+
TBOX olbox;
|
100
|
+
C_OUTLINE_IT child_it; //search iterator
|
101
|
+
|
102
|
+
olbox = outline->bounding_box ();
|
103
|
+
xmin = (olbox.left () - bl.x ()) / BUCKETSIZE;
|
104
|
+
xmax = (olbox.right () - bl.x ()) / BUCKETSIZE;
|
105
|
+
ymin = (olbox.bottom () - bl.y ()) / BUCKETSIZE;
|
106
|
+
ymax = (olbox.top () - bl.y ()) / BUCKETSIZE;
|
107
|
+
child_count = 0;
|
108
|
+
grandchild_count = 0;
|
109
|
+
parent_area = 0;
|
110
|
+
max_parent_area = 0;
|
111
|
+
parent_box = TRUE;
|
112
|
+
for (yindex = ymin; yindex <= ymax; yindex++) {
|
113
|
+
for (xindex = xmin; xindex <= xmax; xindex++) {
|
114
|
+
child_it.set_to_list (&buckets[yindex * bxdim + xindex]);
|
115
|
+
if (child_it.empty ())
|
116
|
+
continue;
|
117
|
+
for (child_it.mark_cycle_pt (); !child_it.cycled_list ();
|
118
|
+
child_it.forward ()) {
|
119
|
+
child = child_it.data ();
|
120
|
+
if (child != outline && *child < *outline) {
|
121
|
+
child_count++;
|
122
|
+
if (child_count <= max_count) {
|
123
|
+
int max_grand = (max_count - child_count) /
|
124
|
+
edges_children_per_grandchild;
|
125
|
+
if (max_grand > 0)
|
126
|
+
grandchild_count += count_children (child, max_grand) *
|
127
|
+
edges_children_per_grandchild;
|
128
|
+
else
|
129
|
+
grandchild_count += count_children(child, 1);
|
130
|
+
}
|
131
|
+
if (child_count + grandchild_count > max_count) {
|
132
|
+
/* err.log(RESULT_OKAY,E_LOC,ERR_OCR,
|
133
|
+
ERR_SCROLLING,ERR_CONTINUE,ERR_DEBUG,
|
134
|
+
"Discarding parent with child count=%d, gc=%d",
|
135
|
+
child_count,grandchild_count);*/
|
136
|
+
return child_count + grandchild_count;
|
137
|
+
}
|
138
|
+
if (parent_area == 0) {
|
139
|
+
parent_area = outline->outer_area ();
|
140
|
+
if (parent_area < 0)
|
141
|
+
parent_area = -parent_area;
|
142
|
+
max_parent_area = outline->bounding_box ().width ()
|
143
|
+
* outline->bounding_box ().height () * edges_boxarea;
|
144
|
+
if (parent_area < max_parent_area)
|
145
|
+
parent_box = FALSE;
|
146
|
+
}
|
147
|
+
if (parent_box
|
148
|
+
&& (!edges_children_fix
|
149
|
+
|| child->bounding_box ().height () >
|
150
|
+
edges_min_nonhole) /**/) {
|
151
|
+
child_area = child->outer_area ();
|
152
|
+
if (child_area < 0)
|
153
|
+
child_area = -child_area;
|
154
|
+
if (edges_children_fix) {
|
155
|
+
if (parent_area - child_area < max_parent_area) {
|
156
|
+
parent_box = FALSE;
|
157
|
+
continue;
|
158
|
+
}
|
159
|
+
if (grandchild_count > 0) {
|
160
|
+
/* err.log(RESULT_OKAY,E_LOC,ERR_OCR,
|
161
|
+
ERR_SCROLLING,ERR_CONTINUE,ERR_DEBUG,
|
162
|
+
"Discarding parent of area %d, child area=%d, max%g with gc=%d",
|
163
|
+
parent_area,child_area,max_parent_area,grandchild_count);*/
|
164
|
+
return max_count + 1;
|
165
|
+
}
|
166
|
+
child_length = child->pathlength ();
|
167
|
+
if (child_length * child_length >
|
168
|
+
child_area * edges_patharea_ratio) {
|
169
|
+
/*/ err.log(RESULT_OKAY,E_LOC,ERR_OCR,
|
170
|
+
ERR_SCROLLING,ERR_CONTINUE,ERR_DEBUG,
|
171
|
+
"Discarding parent of area %d, child area=%d, max%g with child length=%d",
|
172
|
+
parent_area,child_area,max_parent_area,child_length);*/
|
173
|
+
return max_count + 1;
|
174
|
+
}
|
175
|
+
}
|
176
|
+
if (child_area < child->bounding_box ().width ()
|
177
|
+
* child->bounding_box ().height () *
|
178
|
+
edges_childarea) {
|
179
|
+
/* err.log(RESULT_OKAY,E_LOC,ERR_OCR,
|
180
|
+
ERR_SCROLLING,ERR_CONTINUE,ERR_DEBUG,
|
181
|
+
"Discarding parent of area %d, child area=%d, max%g with child rect=%d",
|
182
|
+
parent_area,child_area,max_parent_area,child->bounding_box().width()
|
183
|
+
*child->bounding_box().height()); */
|
184
|
+
return max_count + 1;
|
185
|
+
}
|
186
|
+
}
|
187
|
+
}
|
188
|
+
}
|
189
|
+
}
|
190
|
+
}
|
191
|
+
return child_count + grandchild_count;
|
192
|
+
}
|
193
|
+
|
194
|
+
|
195
|
+
/**********************************************************************
|
196
|
+
* OL_BUCKETS::extract_children
|
197
|
+
*
|
198
|
+
* Find number of descendants of this outline.
|
199
|
+
**********************************************************************/
|
200
|
+
|
201
|
+
void OL_BUCKETS::extract_children( //recursive count
|
202
|
+
C_OUTLINE *outline, //parent outline
|
203
|
+
C_OUTLINE_IT *it //destination iterator
|
204
|
+
) {
|
205
|
+
inT16 xmin, xmax; //coord limits
|
206
|
+
inT16 ymin, ymax;
|
207
|
+
inT16 xindex, yindex; //current bucket
|
208
|
+
TBOX olbox;
|
209
|
+
C_OUTLINE_IT child_it; //search iterator
|
210
|
+
|
211
|
+
olbox = outline->bounding_box ();
|
212
|
+
xmin = (olbox.left () - bl.x ()) / BUCKETSIZE;
|
213
|
+
xmax = (olbox.right () - bl.x ()) / BUCKETSIZE;
|
214
|
+
ymin = (olbox.bottom () - bl.y ()) / BUCKETSIZE;
|
215
|
+
ymax = (olbox.top () - bl.y ()) / BUCKETSIZE;
|
216
|
+
for (yindex = ymin; yindex <= ymax; yindex++) {
|
217
|
+
for (xindex = xmin; xindex <= xmax; xindex++) {
|
218
|
+
child_it.set_to_list (&buckets[yindex * bxdim + xindex]);
|
219
|
+
for (child_it.mark_cycle_pt (); !child_it.cycled_list ();
|
220
|
+
child_it.forward ()) {
|
221
|
+
if (*child_it.data () < *outline) {
|
222
|
+
it->add_after_then_move (child_it.extract ());
|
223
|
+
}
|
224
|
+
}
|
225
|
+
}
|
226
|
+
}
|
227
|
+
}
|
228
|
+
|
229
|
+
|
230
|
+
/**********************************************************************
|
231
|
+
* extract_edges
|
232
|
+
*
|
233
|
+
* Run the edge detector over the block and return a list of blobs.
|
234
|
+
**********************************************************************/
|
235
|
+
|
236
|
+
void extract_edges( //find blobs
|
237
|
+
#ifndef GRAPHICS_DISABLED
|
238
|
+
ScrollView* window, //window for output
|
239
|
+
#endif
|
240
|
+
IMAGE *image, //image to scan
|
241
|
+
IMAGE *t_image, //thresholded image
|
242
|
+
ICOORD page_tr, //corner of page
|
243
|
+
BLOCK *block //block to scan
|
244
|
+
) {
|
245
|
+
ICOORD bleft; //block box
|
246
|
+
ICOORD tright;
|
247
|
+
C_OUTLINE_LIST outlines; //outlines in block
|
248
|
+
//iterator
|
249
|
+
C_OUTLINE_IT out_it = &outlines;
|
250
|
+
|
251
|
+
#ifndef GRAPHICS_DISABLED
|
252
|
+
get_outlines (window, image, t_image, page_tr, (PDBLK *) block, &out_it);
|
253
|
+
#else
|
254
|
+
get_outlines (image, t_image, page_tr, (PDBLK *) block, &out_it);
|
255
|
+
#endif
|
256
|
+
//block box
|
257
|
+
block->bounding_box (bleft, tright);
|
258
|
+
//make blobs
|
259
|
+
outlines_to_blobs(block, bleft, tright, &outlines);
|
260
|
+
|
261
|
+
}
|
262
|
+
|
263
|
+
|
264
|
+
/**********************************************************************
|
265
|
+
* outlines_to_blobs
|
266
|
+
*
|
267
|
+
* Gather together outlines into blobs using the usual bucket sort.
|
268
|
+
**********************************************************************/
|
269
|
+
|
270
|
+
void outlines_to_blobs( //find blobs
|
271
|
+
BLOCK *block, //block to scan
|
272
|
+
ICOORD bleft, //block box //outlines in block
|
273
|
+
ICOORD tright,
|
274
|
+
C_OUTLINE_LIST *outlines) {
|
275
|
+
//make buckets
|
276
|
+
OL_BUCKETS buckets(bleft, tright);
|
277
|
+
|
278
|
+
fill_buckets(outlines, &buckets);
|
279
|
+
empty_buckets(block, &buckets);
|
280
|
+
}
|
281
|
+
|
282
|
+
|
283
|
+
/**********************************************************************
|
284
|
+
* fill_buckets
|
285
|
+
*
|
286
|
+
* Run the edge detector over the block and return a list of blobs.
|
287
|
+
**********************************************************************/
|
288
|
+
|
289
|
+
void fill_buckets( //find blobs
|
290
|
+
C_OUTLINE_LIST *outlines, //outlines in block
|
291
|
+
OL_BUCKETS *buckets //output buckets
|
292
|
+
) {
|
293
|
+
TBOX ol_box; //outline box
|
294
|
+
C_OUTLINE_IT out_it = outlines;//iterator
|
295
|
+
C_OUTLINE_IT bucket_it; //iterator in bucket
|
296
|
+
C_OUTLINE *outline; //current outline
|
297
|
+
|
298
|
+
for (out_it.mark_cycle_pt (); !out_it.cycled_list (); out_it.forward ()) {
|
299
|
+
outline = out_it.extract (); //take off list
|
300
|
+
//get box
|
301
|
+
ol_box = outline->bounding_box ();
|
302
|
+
bucket_it.set_to_list ((*buckets) (ol_box.left (), ol_box.bottom ()));
|
303
|
+
bucket_it.add_to_end (outline);
|
304
|
+
}
|
305
|
+
}
|
306
|
+
|
307
|
+
|
308
|
+
/**********************************************************************
|
309
|
+
* empty_buckets
|
310
|
+
*
|
311
|
+
* Run the edge detector over the block and return a list of blobs.
|
312
|
+
**********************************************************************/
|
313
|
+
|
314
|
+
void empty_buckets( //find blobs
|
315
|
+
BLOCK *block, //block to scan
|
316
|
+
OL_BUCKETS *buckets //output buckets
|
317
|
+
) {
|
318
|
+
BOOL8 good_blob; //healthy blob
|
319
|
+
C_OUTLINE_LIST outlines; //outlines in block
|
320
|
+
//iterator
|
321
|
+
C_OUTLINE_IT out_it = &outlines;
|
322
|
+
C_OUTLINE_IT bucket_it = buckets->start_scan ();
|
323
|
+
C_OUTLINE_IT parent_it; //parent outline
|
324
|
+
C_BLOB *blob; //new blob
|
325
|
+
C_BLOB_IT good_blobs = block->blob_list ();
|
326
|
+
C_BLOB_IT junk_blobs = block->reject_blobs ();
|
327
|
+
|
328
|
+
while (!bucket_it.empty ()) {
|
329
|
+
out_it.set_to_list (&outlines);
|
330
|
+
do {
|
331
|
+
parent_it = bucket_it; //find outermost
|
332
|
+
do
|
333
|
+
bucket_it.forward ();
|
334
|
+
while (!bucket_it.at_first ()
|
335
|
+
&& !(*parent_it.data () < *bucket_it.data ()));
|
336
|
+
}
|
337
|
+
while (!bucket_it.at_first ());
|
338
|
+
|
339
|
+
//move to new list
|
340
|
+
out_it.add_after_then_move (parent_it.extract ());
|
341
|
+
good_blob = capture_children (buckets, &junk_blobs, &out_it);
|
342
|
+
blob = new C_BLOB (&outlines);
|
343
|
+
if (good_blob)
|
344
|
+
good_blobs.add_after_then_move (blob);
|
345
|
+
else
|
346
|
+
junk_blobs.add_after_then_move (blob);
|
347
|
+
|
348
|
+
bucket_it.set_to_list (buckets->scan_next ());
|
349
|
+
}
|
350
|
+
}
|
351
|
+
|
352
|
+
|
353
|
+
/**********************************************************************
|
354
|
+
* capture_children
|
355
|
+
*
|
356
|
+
* Find all neighbouring outlines that are children of this outline
|
357
|
+
* and either move them to the output list or declare this outline
|
358
|
+
* illegal and return FALSE.
|
359
|
+
**********************************************************************/
|
360
|
+
|
361
|
+
BOOL8 capture_children( //find children
|
362
|
+
OL_BUCKETS *buckets, //bucket sort clanss
|
363
|
+
C_BLOB_IT *reject_it, //dead grandchildren
|
364
|
+
C_OUTLINE_IT *blob_it //output outlines
|
365
|
+
) {
|
366
|
+
C_OUTLINE *outline; //master outline
|
367
|
+
inT32 child_count; //no of children
|
368
|
+
|
369
|
+
outline = blob_it->data ();
|
370
|
+
child_count = buckets->count_children (outline, edges_children_count_limit);
|
371
|
+
if (child_count > edges_children_count_limit)
|
372
|
+
return FALSE;
|
373
|
+
if (child_count == 0)
|
374
|
+
return TRUE;
|
375
|
+
//get single level
|
376
|
+
buckets->extract_children (outline, blob_it);
|
377
|
+
#if 0
|
378
|
+
C_BLOB *blob; //reject
|
379
|
+
C_OUTLINE *child; //child under test
|
380
|
+
C_OUTLINE_LIST r_list; //rejects
|
381
|
+
C_OUTLINE_IT r_it; //iterator
|
382
|
+
C_OUTLINE_IT test_it; //for grandchildren
|
383
|
+
BOOL8 anydone; //anything canned
|
384
|
+
if (child_count == 1)
|
385
|
+
return TRUE;
|
386
|
+
do {
|
387
|
+
anydone = FALSE;
|
388
|
+
blob_it->move_to_first ();
|
389
|
+
for (blob_it->mark_cycle_pt (); !blob_it->cycled_list ();
|
390
|
+
blob_it->forward ()) {
|
391
|
+
child = blob_it->data ();
|
392
|
+
if (child != outline) {
|
393
|
+
for (test_it = *blob_it, test_it.mark_cycle_pt ();
|
394
|
+
!test_it.cycled_list (); test_it.forward ()) {
|
395
|
+
if (test_it.data () != child && *test_it.data () < *child) {
|
396
|
+
r_it.set_to_list (&r_list);
|
397
|
+
r_it.add_after_then_move (test_it.extract ());
|
398
|
+
//turn to blob
|
399
|
+
blob = new C_BLOB (&r_list);
|
400
|
+
reject_it->add_after_then_move (blob);
|
401
|
+
anydone = TRUE;
|
402
|
+
}
|
403
|
+
}
|
404
|
+
if (anydone)
|
405
|
+
break; //got to reatart
|
406
|
+
}
|
407
|
+
}
|
408
|
+
}
|
409
|
+
while (anydone); //got to restart
|
410
|
+
#endif
|
411
|
+
return TRUE;
|
412
|
+
}
|
@@ -0,0 +1,100 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
* File: edgblob.h (Formerly edgeloop.h)
|
3
|
+
* Description: Functions to clean up an outline before approximation.
|
4
|
+
* Author: Ray Smith
|
5
|
+
* Created: Tue Mar 26 16:56:25 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
|
+
#ifndef EDGBLOB_H
|
21
|
+
#define EDGBLOB_H
|
22
|
+
|
23
|
+
#include "scrollview.h"
|
24
|
+
#include "varable.h"
|
25
|
+
#include "img.h"
|
26
|
+
#include "ocrblock.h"
|
27
|
+
#include "coutln.h"
|
28
|
+
#include "crakedge.h"
|
29
|
+
#include "notdll.h"
|
30
|
+
|
31
|
+
#define BUCKETSIZE 16
|
32
|
+
|
33
|
+
class OL_BUCKETS
|
34
|
+
{
|
35
|
+
public:
|
36
|
+
OL_BUCKETS( //constructor
|
37
|
+
ICOORD bleft, //corners
|
38
|
+
ICOORD tright);
|
39
|
+
|
40
|
+
~OL_BUCKETS () { //cleanup
|
41
|
+
delete[]buckets;
|
42
|
+
}
|
43
|
+
C_OUTLINE_LIST *operator () (//array access
|
44
|
+
inT16 x, //image coords
|
45
|
+
inT16 y);
|
46
|
+
//first non-empty bucket
|
47
|
+
C_OUTLINE_LIST *start_scan() {
|
48
|
+
for (index = 0; buckets[index].empty () && index < bxdim * bydim - 1;
|
49
|
+
index++);
|
50
|
+
return &buckets[index];
|
51
|
+
}
|
52
|
+
//next non-empty bucket
|
53
|
+
C_OUTLINE_LIST *scan_next() {
|
54
|
+
for (; buckets[index].empty () && index < bxdim * bydim - 1; index++);
|
55
|
+
return &buckets[index];
|
56
|
+
}
|
57
|
+
inT32 count_children( //recursive sum
|
58
|
+
C_OUTLINE *outline, //parent outline
|
59
|
+
inT32 max_count); //max output
|
60
|
+
void extract_children( //single level get
|
61
|
+
C_OUTLINE *outline, //parent outline
|
62
|
+
C_OUTLINE_IT *it); //destination iterator
|
63
|
+
|
64
|
+
private:
|
65
|
+
C_OUTLINE_LIST * buckets; //array of buckets
|
66
|
+
inT16 bxdim; //size of array
|
67
|
+
inT16 bydim;
|
68
|
+
ICOORD bl; //corners
|
69
|
+
ICOORD tr;
|
70
|
+
inT32 index; //for extraction scan
|
71
|
+
};
|
72
|
+
|
73
|
+
void extract_edges( //find blobs
|
74
|
+
#ifndef GRAPHICS_DISABLED
|
75
|
+
ScrollView* window, //window for output
|
76
|
+
#endif
|
77
|
+
IMAGE *image, //image to scan
|
78
|
+
IMAGE *t_image, //thresholded image
|
79
|
+
ICOORD page_tr, //corner of page
|
80
|
+
BLOCK *block //block to scan
|
81
|
+
);
|
82
|
+
void outlines_to_blobs( //find blobs
|
83
|
+
BLOCK *block, //block to scan
|
84
|
+
ICOORD bleft, //block box //outlines in block
|
85
|
+
ICOORD tright,
|
86
|
+
C_OUTLINE_LIST *outlines);
|
87
|
+
void fill_buckets( //find blobs
|
88
|
+
C_OUTLINE_LIST *outlines, //outlines in block
|
89
|
+
OL_BUCKETS *buckets //output buckets
|
90
|
+
);
|
91
|
+
void empty_buckets( //find blobs
|
92
|
+
BLOCK *block, //block to scan
|
93
|
+
OL_BUCKETS *buckets //output buckets
|
94
|
+
);
|
95
|
+
BOOL8 capture_children( //find children
|
96
|
+
OL_BUCKETS *buckets, //bucket sort clanss
|
97
|
+
C_BLOB_IT *reject_it, //dead grandchildren
|
98
|
+
C_OUTLINE_IT *blob_it //output outlines
|
99
|
+
);
|
100
|
+
#endif
|