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,452 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: scanedg.c (Formerly scanedge.c)
|
|
3
|
+
* Description: Raster scanning crack based edge extractor.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Fri Mar 22 16:11:50 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 "edgloop.h"
|
|
22
|
+
//#include "dirtab.h"
|
|
23
|
+
#include "scanedg.h"
|
|
24
|
+
|
|
25
|
+
#define WHITE_PIX 1 /*thresholded colours */
|
|
26
|
+
#define BLACK_PIX 0
|
|
27
|
+
/*W->B->W */
|
|
28
|
+
#define FLIP_COLOUR(pix) (1-(pix))
|
|
29
|
+
|
|
30
|
+
#define EWSIZE 4 /*edge operator size */
|
|
31
|
+
|
|
32
|
+
#define XMARGIN 2 //margin needed
|
|
33
|
+
#define YMARGIN 3 //by edge detector
|
|
34
|
+
|
|
35
|
+
/*local freelist */
|
|
36
|
+
static CRACKEDGE *free_cracks = NULL;
|
|
37
|
+
|
|
38
|
+
/**********************************************************************
|
|
39
|
+
* block_edges
|
|
40
|
+
*
|
|
41
|
+
* Extract edges from a PDBLK.
|
|
42
|
+
**********************************************************************/
|
|
43
|
+
|
|
44
|
+
DLLSYM void block_edges( //get edges in a block
|
|
45
|
+
IMAGE *t_image, //threshold image
|
|
46
|
+
PDBLK *block, //block in image
|
|
47
|
+
ICOORD page_tr //corner of page
|
|
48
|
+
) {
|
|
49
|
+
uinT8 margin; //margin colour
|
|
50
|
+
inT16 x; //line coords
|
|
51
|
+
inT16 y; //current line
|
|
52
|
+
ICOORD bleft; //bounding box
|
|
53
|
+
ICOORD tright;
|
|
54
|
+
ICOORD block_bleft; //bounding box
|
|
55
|
+
ICOORD block_tright;
|
|
56
|
+
int xindex; //index to pixel
|
|
57
|
+
BLOCK_LINE_IT line_it = block; //line iterator
|
|
58
|
+
IMAGELINE bwline; //thresholded line
|
|
59
|
+
//lines in progress
|
|
60
|
+
CRACKEDGE **ptrline = new CRACKEDGE*[t_image->get_xsize()+1];
|
|
61
|
+
block->bounding_box (bleft, tright); // block box
|
|
62
|
+
block_bleft = bleft;
|
|
63
|
+
block_tright = tright;
|
|
64
|
+
for (x = tright.x () - bleft.x (); x >= 0; x--)
|
|
65
|
+
ptrline[x] = NULL; //no lines in progress
|
|
66
|
+
|
|
67
|
+
bwline.init (t_image->get_xsize());
|
|
68
|
+
|
|
69
|
+
margin = WHITE_PIX;
|
|
70
|
+
|
|
71
|
+
for (y = tright.y () - 1; y >= bleft.y () - 1; y--) {
|
|
72
|
+
if (y >= block_bleft.y () && y < block_tright.y ()) {
|
|
73
|
+
t_image->get_line (bleft.x (), y, tright.x () - bleft.x (), &bwline,
|
|
74
|
+
0);
|
|
75
|
+
make_margins (block, &line_it, bwline.pixels, margin, bleft.x (),
|
|
76
|
+
tright.x (), y);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
x = tright.x () - bleft.x ();
|
|
80
|
+
for (xindex = 0; xindex < x; xindex++)
|
|
81
|
+
bwline.pixels[xindex] = margin;
|
|
82
|
+
}
|
|
83
|
+
line_edges (bleft.x (), y, tright.x () - bleft.x (),
|
|
84
|
+
margin, bwline.pixels, ptrline);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
free_crackedges(free_cracks); //really free them
|
|
88
|
+
free_cracks = NULL;
|
|
89
|
+
delete[] ptrline;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
/**********************************************************************
|
|
94
|
+
* make_margins
|
|
95
|
+
*
|
|
96
|
+
* Get an image line and set to margin non-text pixels.
|
|
97
|
+
**********************************************************************/
|
|
98
|
+
|
|
99
|
+
void make_margins( //get a line
|
|
100
|
+
PDBLK *block, //block in image
|
|
101
|
+
BLOCK_LINE_IT *line_it, //for old style
|
|
102
|
+
uinT8 *pixels, //pixels to strip
|
|
103
|
+
uinT8 margin, //white-out pixel
|
|
104
|
+
inT16 left, //block edges
|
|
105
|
+
inT16 right,
|
|
106
|
+
inT16 y //line coord
|
|
107
|
+
) {
|
|
108
|
+
PB_LINE_IT *lines;
|
|
109
|
+
ICOORDELT_LIST *segments; //bits of a line
|
|
110
|
+
ICOORDELT_IT seg_it;
|
|
111
|
+
inT32 start; //of segment
|
|
112
|
+
inT16 xext; //of segment
|
|
113
|
+
int xindex; //index to pixel
|
|
114
|
+
|
|
115
|
+
if (block->poly_block () != NULL) {
|
|
116
|
+
lines = new PB_LINE_IT (block->poly_block ());
|
|
117
|
+
segments = lines->get_line (y);
|
|
118
|
+
if (!segments->empty ()) {
|
|
119
|
+
seg_it.set_to_list (segments);
|
|
120
|
+
seg_it.mark_cycle_pt ();
|
|
121
|
+
start = seg_it.data ()->x ();
|
|
122
|
+
xext = seg_it.data ()->y ();
|
|
123
|
+
for (xindex = left; xindex < right; xindex++) {
|
|
124
|
+
if (xindex >= start && !seg_it.cycled_list ()) {
|
|
125
|
+
xindex = start + xext - 1;
|
|
126
|
+
seg_it.forward ();
|
|
127
|
+
start = seg_it.data ()->x ();
|
|
128
|
+
xext = seg_it.data ()->y ();
|
|
129
|
+
}
|
|
130
|
+
else
|
|
131
|
+
pixels[xindex - left] = margin;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
for (xindex = left; xindex < right; xindex++)
|
|
136
|
+
pixels[xindex - left] = margin;
|
|
137
|
+
}
|
|
138
|
+
delete segments;
|
|
139
|
+
delete lines;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
start = line_it->get_line (y, xext);
|
|
143
|
+
for (xindex = left; xindex < start; xindex++)
|
|
144
|
+
pixels[xindex - left] = margin;
|
|
145
|
+
for (xindex = start + xext; xindex < right; xindex++)
|
|
146
|
+
pixels[xindex - left] = margin;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
/**********************************************************************
|
|
152
|
+
* whiteout_block
|
|
153
|
+
*
|
|
154
|
+
* Extract edges from a PDBLK.
|
|
155
|
+
**********************************************************************/
|
|
156
|
+
|
|
157
|
+
void whiteout_block( //clean it
|
|
158
|
+
IMAGE *t_image, //threshold image
|
|
159
|
+
PDBLK *block //block in image
|
|
160
|
+
) {
|
|
161
|
+
inT16 x; //line coords
|
|
162
|
+
inT16 y; //current line
|
|
163
|
+
inT16 xext; //line width
|
|
164
|
+
int xindex; //index to pixel
|
|
165
|
+
uinT8 *dest; //destination pixel
|
|
166
|
+
TBOX block_box; //bounding box
|
|
167
|
+
BLOCK_LINE_IT line_it = block; //line iterator
|
|
168
|
+
IMAGELINE bwline; //thresholded line
|
|
169
|
+
|
|
170
|
+
block_box = block->bounding_box ();
|
|
171
|
+
for (y = block_box.bottom (); y < block_box.top (); y++) {
|
|
172
|
+
//find line limits
|
|
173
|
+
x = line_it.get_line (y, xext);
|
|
174
|
+
t_image->get_line (x, y, xext, &bwline, 0);
|
|
175
|
+
dest = bwline.pixels; //destination pixel
|
|
176
|
+
for (xindex = 0; xindex < xext; xindex++)
|
|
177
|
+
*dest++ = 1;
|
|
178
|
+
t_image->put_line (x, y, xext, &bwline, 0);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
/**********************************************************************
|
|
184
|
+
* line_edges
|
|
185
|
+
*
|
|
186
|
+
* Scan a line for edges and update the edges in progress.
|
|
187
|
+
* When edges close into loops, send them for approximation.
|
|
188
|
+
**********************************************************************/
|
|
189
|
+
|
|
190
|
+
void
|
|
191
|
+
line_edges ( //scan for edges
|
|
192
|
+
inT16 x, //coord of line start
|
|
193
|
+
inT16 y, //coord of line
|
|
194
|
+
inT16 xext, //width of line
|
|
195
|
+
uinT8 uppercolour, //start of prev line
|
|
196
|
+
uinT8 * bwpos, //thresholded line
|
|
197
|
+
CRACKEDGE ** prevline //edges in progress
|
|
198
|
+
) {
|
|
199
|
+
int xpos; //current x coord
|
|
200
|
+
int xmax; //max x coord
|
|
201
|
+
int colour; //of current pixel
|
|
202
|
+
int prevcolour; //of previous pixel
|
|
203
|
+
CRACKEDGE *current; //current h edge
|
|
204
|
+
CRACKEDGE *newcurrent; //new h edge
|
|
205
|
+
|
|
206
|
+
xmax = x + xext; //max allowable coord
|
|
207
|
+
prevcolour = uppercolour; //forced plain margin
|
|
208
|
+
current = NULL; //nothing yet
|
|
209
|
+
|
|
210
|
+
//do each pixel
|
|
211
|
+
for (xpos = x; xpos < xmax; xpos++, prevline++) {
|
|
212
|
+
colour = *bwpos++; //current pixel
|
|
213
|
+
if (*prevline != NULL) {
|
|
214
|
+
//changed above
|
|
215
|
+
//change colour
|
|
216
|
+
uppercolour = FLIP_COLOUR (uppercolour);
|
|
217
|
+
if (colour == prevcolour) {
|
|
218
|
+
if (colour == uppercolour) {
|
|
219
|
+
//finish a line
|
|
220
|
+
join_edges(current, *prevline);
|
|
221
|
+
current = NULL; //no edge now
|
|
222
|
+
}
|
|
223
|
+
else
|
|
224
|
+
//new horiz edge
|
|
225
|
+
current = h_edge (xpos, y, uppercolour - colour, *prevline);
|
|
226
|
+
*prevline = NULL; //no change this time
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
if (colour == uppercolour)
|
|
230
|
+
*prevline = v_edge (xpos, y, colour - prevcolour, *prevline);
|
|
231
|
+
//8 vs 4 connection
|
|
232
|
+
else if (colour == WHITE_PIX) {
|
|
233
|
+
join_edges(current, *prevline);
|
|
234
|
+
current = h_edge (xpos, y, uppercolour - colour, NULL);
|
|
235
|
+
*prevline = v_edge (xpos, y, colour - prevcolour, current);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
newcurrent = h_edge (xpos, y, uppercolour - colour, *prevline);
|
|
239
|
+
*prevline = v_edge (xpos, y, colour - prevcolour, current);
|
|
240
|
+
current = newcurrent; //right going h edge
|
|
241
|
+
}
|
|
242
|
+
prevcolour = colour; //remember new colour
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
if (colour != prevcolour) {
|
|
247
|
+
*prevline = current =
|
|
248
|
+
v_edge (xpos, y, colour - prevcolour, current);
|
|
249
|
+
prevcolour = colour;
|
|
250
|
+
}
|
|
251
|
+
if (colour != uppercolour)
|
|
252
|
+
current = h_edge (xpos, y, uppercolour - colour, current);
|
|
253
|
+
else
|
|
254
|
+
current = NULL; //no edge now
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
if (current != NULL) {
|
|
258
|
+
//out of block
|
|
259
|
+
if (*prevline != NULL) { //got one to join to?
|
|
260
|
+
join_edges(current, *prevline);
|
|
261
|
+
*prevline = NULL; //tidy now
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
//fake vertical
|
|
265
|
+
*prevline = v_edge (xpos, y, FLIP_COLOUR(prevcolour)-prevcolour, current);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
else if (*prevline != NULL)
|
|
269
|
+
//continue fake
|
|
270
|
+
*prevline = v_edge (xpos, y, FLIP_COLOUR(prevcolour)-prevcolour, *prevline);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
/**********************************************************************
|
|
275
|
+
* h_edge
|
|
276
|
+
*
|
|
277
|
+
* Create a new horizontal CRACKEDGE and join it to the given edge.
|
|
278
|
+
**********************************************************************/
|
|
279
|
+
|
|
280
|
+
CRACKEDGE *
|
|
281
|
+
h_edge ( //horizontal edge
|
|
282
|
+
inT16 x, //xposition
|
|
283
|
+
inT16 y, //y position
|
|
284
|
+
inT8 sign, //sign of edge
|
|
285
|
+
CRACKEDGE * join //edge to join to
|
|
286
|
+
) {
|
|
287
|
+
CRACKEDGE *newpt; //return value
|
|
288
|
+
|
|
289
|
+
// check_mem("h_edge",JUSTCHECKS);
|
|
290
|
+
if (free_cracks != NULL) {
|
|
291
|
+
newpt = free_cracks;
|
|
292
|
+
free_cracks = newpt->next; //get one fast
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
newpt = new CRACKEDGE;
|
|
296
|
+
}
|
|
297
|
+
newpt->pos.set_y (y + 1); //coords of pt
|
|
298
|
+
newpt->stepy = 0; //edge is horizontal
|
|
299
|
+
|
|
300
|
+
if (sign > 0) {
|
|
301
|
+
newpt->pos.set_x (x + 1); //start location
|
|
302
|
+
newpt->stepx = -1;
|
|
303
|
+
newpt->stepdir = 0;
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
newpt->pos.set_x (x); //start location
|
|
307
|
+
newpt->stepx = 1;
|
|
308
|
+
newpt->stepdir = 2;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
if (join == NULL) {
|
|
312
|
+
newpt->next = newpt; //ptrs to other ends
|
|
313
|
+
newpt->prev = newpt;
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
if (newpt->pos.x () + newpt->stepx == join->pos.x ()
|
|
317
|
+
&& newpt->pos.y () == join->pos.y ()) {
|
|
318
|
+
newpt->prev = join->prev; //update other ends
|
|
319
|
+
newpt->prev->next = newpt;
|
|
320
|
+
newpt->next = join; //join up
|
|
321
|
+
join->prev = newpt;
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
newpt->next = join->next; //update other ends
|
|
325
|
+
newpt->next->prev = newpt;
|
|
326
|
+
newpt->prev = join; //join up
|
|
327
|
+
join->next = newpt;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return newpt;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
/**********************************************************************
|
|
335
|
+
* v_edge
|
|
336
|
+
*
|
|
337
|
+
* Create a new vertical CRACKEDGE and join it to the given edge.
|
|
338
|
+
**********************************************************************/
|
|
339
|
+
|
|
340
|
+
CRACKEDGE *
|
|
341
|
+
v_edge ( //vertical edge
|
|
342
|
+
inT16 x, //xposition
|
|
343
|
+
inT16 y, //y position
|
|
344
|
+
inT8 sign, //sign of edge
|
|
345
|
+
CRACKEDGE * join //edge to join to
|
|
346
|
+
) {
|
|
347
|
+
CRACKEDGE *newpt; //return value
|
|
348
|
+
|
|
349
|
+
if (free_cracks != NULL) {
|
|
350
|
+
newpt = free_cracks;
|
|
351
|
+
free_cracks = newpt->next; //get one fast
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
newpt = new CRACKEDGE;
|
|
355
|
+
}
|
|
356
|
+
newpt->pos.set_x (x); //coords of pt
|
|
357
|
+
newpt->stepx = 0; //edge is vertical
|
|
358
|
+
|
|
359
|
+
if (sign > 0) {
|
|
360
|
+
newpt->pos.set_y (y); //start location
|
|
361
|
+
newpt->stepy = 1;
|
|
362
|
+
newpt->stepdir = 3;
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
newpt->pos.set_y (y + 1); //start location
|
|
366
|
+
newpt->stepy = -1;
|
|
367
|
+
newpt->stepdir = 1;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
if (join == NULL) {
|
|
371
|
+
newpt->next = newpt; //ptrs to other ends
|
|
372
|
+
newpt->prev = newpt;
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
if (newpt->pos.x () == join->pos.x ()
|
|
376
|
+
&& newpt->pos.y () + newpt->stepy == join->pos.y ()) {
|
|
377
|
+
newpt->prev = join->prev; //update other ends
|
|
378
|
+
newpt->prev->next = newpt;
|
|
379
|
+
newpt->next = join; //join up
|
|
380
|
+
join->prev = newpt;
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
newpt->next = join->next; //update other ends
|
|
384
|
+
newpt->next->prev = newpt;
|
|
385
|
+
newpt->prev = join; //join up
|
|
386
|
+
join->next = newpt;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
return newpt;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
/**********************************************************************
|
|
394
|
+
* join_edges
|
|
395
|
+
*
|
|
396
|
+
* Join 2 edges together. Send the outline for approximation when a
|
|
397
|
+
* closed loop is formed.
|
|
398
|
+
**********************************************************************/
|
|
399
|
+
|
|
400
|
+
void join_edges( //join edge fragments
|
|
401
|
+
CRACKEDGE *edge1, //edges to join
|
|
402
|
+
CRACKEDGE *edge2 //no specific order
|
|
403
|
+
) {
|
|
404
|
+
CRACKEDGE *tempedge; //for exchanging
|
|
405
|
+
|
|
406
|
+
if (edge1->pos.x () + edge1->stepx != edge2->pos.x ()
|
|
407
|
+
|| edge1->pos.y () + edge1->stepy != edge2->pos.y ()) {
|
|
408
|
+
tempedge = edge1;
|
|
409
|
+
edge1 = edge2; //swap araound
|
|
410
|
+
edge2 = tempedge;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// tprintf("Joining %x=(%d,%d)+(%d,%d)->%x<-%x ",
|
|
414
|
+
// edge1,edge1->pos.x(),edge1->pos.y(),edge1->stepx,edge1->stepy,
|
|
415
|
+
// edge1->next,edge1->prev);
|
|
416
|
+
// tprintf("to %x=(%d,%d)+(%d,%d)->%x<-%x\n",
|
|
417
|
+
// edge2,edge2->pos.x(),edge2->pos.y(),edge2->stepx,edge2->stepy,
|
|
418
|
+
// edge2->next,edge2->prev);
|
|
419
|
+
if (edge1->next == edge2) {
|
|
420
|
+
//already closed
|
|
421
|
+
complete_edge(edge1); //approximate it
|
|
422
|
+
//attach freelist to end
|
|
423
|
+
edge1->prev->next = free_cracks;
|
|
424
|
+
free_cracks = edge1; //and free list
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
//update opposite ends
|
|
428
|
+
edge2->prev->next = edge1->next;
|
|
429
|
+
edge1->next->prev = edge2->prev;
|
|
430
|
+
edge1->next = edge2; //make joins
|
|
431
|
+
edge2->prev = edge1;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
/**********************************************************************
|
|
437
|
+
* free_crackedges
|
|
438
|
+
*
|
|
439
|
+
* Really free the CRACKEDGEs by giving them back to delete.
|
|
440
|
+
**********************************************************************/
|
|
441
|
+
|
|
442
|
+
void free_crackedges( //really free them
|
|
443
|
+
CRACKEDGE *start //start of loop
|
|
444
|
+
) {
|
|
445
|
+
CRACKEDGE *current; //current edge to free
|
|
446
|
+
CRACKEDGE *next; //next one to free
|
|
447
|
+
|
|
448
|
+
for (current = start; current != NULL; current = next) {
|
|
449
|
+
next = current->next;
|
|
450
|
+
delete current; //delete them all
|
|
451
|
+
}
|
|
452
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: scanedg.h (Formerly scanedge.h)
|
|
3
|
+
* Description: Raster scanning crack based edge extractor.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Fri Mar 22 16:11:50 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 SCANEDG_H
|
|
21
|
+
#define SCANEDG_H
|
|
22
|
+
|
|
23
|
+
#include "varable.h"
|
|
24
|
+
#include "scrollview.h"
|
|
25
|
+
#include "img.h"
|
|
26
|
+
#include "pdblock.h"
|
|
27
|
+
#include "crakedge.h"
|
|
28
|
+
|
|
29
|
+
DLLSYM void block_edges( //get edges in a block
|
|
30
|
+
IMAGE *t_image, //threshold image
|
|
31
|
+
PDBLK *block, //block in image
|
|
32
|
+
ICOORD page_tr //corner of page
|
|
33
|
+
);
|
|
34
|
+
void make_margins( //get a line
|
|
35
|
+
PDBLK *block, //block in image
|
|
36
|
+
BLOCK_LINE_IT *line_it, //for old style
|
|
37
|
+
uinT8 *pixels, //pixels to strip
|
|
38
|
+
uinT8 margin, //white-out pixel
|
|
39
|
+
inT16 left, //block edges
|
|
40
|
+
inT16 right,
|
|
41
|
+
inT16 y //line coord
|
|
42
|
+
);
|
|
43
|
+
void whiteout_block( //clean it
|
|
44
|
+
IMAGE *t_image, //threshold image
|
|
45
|
+
PDBLK *block //block in image
|
|
46
|
+
);
|
|
47
|
+
void line_edges ( //scan for edges
|
|
48
|
+
inT16 x, //coord of line start
|
|
49
|
+
inT16 y, //coord of line
|
|
50
|
+
inT16 xext, //width of line
|
|
51
|
+
uinT8 uppercolour, //start of prev line
|
|
52
|
+
uinT8 * bwpos, //thresholded line
|
|
53
|
+
CRACKEDGE ** prevline //edges in progress
|
|
54
|
+
);
|
|
55
|
+
CRACKEDGE *h_edge ( //horizontal edge
|
|
56
|
+
inT16 x, //xposition
|
|
57
|
+
inT16 y, //y position
|
|
58
|
+
inT8 sign, //sign of edge
|
|
59
|
+
CRACKEDGE * join //edge to join to
|
|
60
|
+
);
|
|
61
|
+
CRACKEDGE *v_edge ( //vertical edge
|
|
62
|
+
inT16 x, //xposition
|
|
63
|
+
inT16 y, //y position
|
|
64
|
+
inT8 sign, //sign of edge
|
|
65
|
+
CRACKEDGE * join //edge to join to
|
|
66
|
+
);
|
|
67
|
+
void join_edges( //join edge fragments
|
|
68
|
+
CRACKEDGE *edge1, //edges to join
|
|
69
|
+
CRACKEDGE *edge2 //no specific order
|
|
70
|
+
);
|
|
71
|
+
void free_crackedges( //really free them
|
|
72
|
+
CRACKEDGE *start //start of loop
|
|
73
|
+
);
|
|
74
|
+
#endif
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: sortflts.cpp (Formerly sfloats.c)
|
|
3
|
+
* Description: Code to maintain a sorted list of floats.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Mon Oct 4 16:15:40 BST 1993
|
|
6
|
+
*
|
|
7
|
+
* (C) Copyright 1993, 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 "sortflts.h"
|
|
22
|
+
#include "notdll.h"
|
|
23
|
+
|
|
24
|
+
ELISTIZE (SORTED_FLOAT)
|
|
25
|
+
/**********************************************************************
|
|
26
|
+
* SORTED_FLOATS::add
|
|
27
|
+
*
|
|
28
|
+
* Add a new entry to the sorted lsit of floats.
|
|
29
|
+
**********************************************************************/
|
|
30
|
+
void SORTED_FLOATS::add( //add new entry
|
|
31
|
+
float value,
|
|
32
|
+
inT32 key) {
|
|
33
|
+
SORTED_FLOAT *new_float = new SORTED_FLOAT (value, key);
|
|
34
|
+
|
|
35
|
+
if (list.empty ())
|
|
36
|
+
it.add_after_stay_put (new_float);
|
|
37
|
+
else {
|
|
38
|
+
it.move_to_first ();
|
|
39
|
+
while (!it.at_last () && it.data ()->entry < value)
|
|
40
|
+
it.forward ();
|
|
41
|
+
if (it.data ()->entry < value)
|
|
42
|
+
it.add_after_stay_put (new_float);
|
|
43
|
+
else
|
|
44
|
+
it.add_before_stay_put (new_float);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
/**********************************************************************
|
|
50
|
+
* SORTED_FLOATS::remove
|
|
51
|
+
*
|
|
52
|
+
* Remove an entry from the sorted lsit of floats.
|
|
53
|
+
**********************************************************************/
|
|
54
|
+
|
|
55
|
+
void SORTED_FLOATS::remove( //remove the entry
|
|
56
|
+
inT32 key) {
|
|
57
|
+
if (!list.empty ()) {
|
|
58
|
+
for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ()) {
|
|
59
|
+
if (it.data ()->address == key) {
|
|
60
|
+
delete it.extract ();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
/**********************************************************************
|
|
69
|
+
* SORTED_FLOATS::operator[]
|
|
70
|
+
*
|
|
71
|
+
* Return the floating point value of the given index into the list.
|
|
72
|
+
**********************************************************************/
|
|
73
|
+
|
|
74
|
+
float
|
|
75
|
+
SORTED_FLOATS::operator[] ( //get an entry
|
|
76
|
+
inT32 index //to list
|
|
77
|
+
) {
|
|
78
|
+
it.move_to_first ();
|
|
79
|
+
return it.data_relative (index)->entry;
|
|
80
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: sortflts.h (Formerly sfloats.h)
|
|
3
|
+
* Description: Code to maintain a sorted list of floats.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Mon Oct 4 16:15:40 BST 1993
|
|
6
|
+
*
|
|
7
|
+
* (C) Copyright 1993, 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 SORTFLTS_H
|
|
21
|
+
#define SORTFLTS_H
|
|
22
|
+
|
|
23
|
+
#include "elst.h"
|
|
24
|
+
#include "notdll.h"
|
|
25
|
+
#include "notdll.h"
|
|
26
|
+
|
|
27
|
+
class SORTED_FLOAT:public ELIST_LINK
|
|
28
|
+
{
|
|
29
|
+
friend class SORTED_FLOATS;
|
|
30
|
+
|
|
31
|
+
public:
|
|
32
|
+
SORTED_FLOAT() {
|
|
33
|
+
} //empty constructor
|
|
34
|
+
SORTED_FLOAT( //create one
|
|
35
|
+
float value, //value of entry
|
|
36
|
+
inT32 key) { //reference
|
|
37
|
+
entry = value;
|
|
38
|
+
address = key;
|
|
39
|
+
}
|
|
40
|
+
private:
|
|
41
|
+
float entry; //value of float
|
|
42
|
+
inT32 address; //key
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
ELISTIZEH (SORTED_FLOAT)
|
|
46
|
+
class SORTED_FLOATS
|
|
47
|
+
{
|
|
48
|
+
public:
|
|
49
|
+
SORTED_FLOATS() { //empty constructor
|
|
50
|
+
it.set_to_list (&list);
|
|
51
|
+
}
|
|
52
|
+
void add( //add sample
|
|
53
|
+
float value, //sample float
|
|
54
|
+
inT32 key); //retrieval key
|
|
55
|
+
void remove( //delete sample
|
|
56
|
+
inT32 key); //key to delete
|
|
57
|
+
float operator[] ( //index to list
|
|
58
|
+
inT32 index); //item to get
|
|
59
|
+
|
|
60
|
+
private:
|
|
61
|
+
SORTED_FLOAT_LIST list; //list of floats
|
|
62
|
+
SORTED_FLOAT_IT it; //iterator built-in
|
|
63
|
+
};
|
|
64
|
+
#endif
|