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,223 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: imgbmp.c (Formerly lz.c)
|
|
3
|
+
* Description: bmp image reader/writer.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Tue Jan 06 15:31:25 GMT 1998
|
|
6
|
+
*
|
|
7
|
+
* (C) Copyright 1998, Ray Smith.
|
|
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" //precompiled headers
|
|
21
|
+
#ifdef __MSW32__
|
|
22
|
+
#include <io.h>
|
|
23
|
+
#else
|
|
24
|
+
#include <unistd.h>
|
|
25
|
+
#endif
|
|
26
|
+
#include <stdio.h>
|
|
27
|
+
#include "img.h"
|
|
28
|
+
#include "imgbmp.h"
|
|
29
|
+
|
|
30
|
+
typedef struct
|
|
31
|
+
{ // bmfh
|
|
32
|
+
char bfType1; //'B'
|
|
33
|
+
char bfType2; //'M'
|
|
34
|
+
} BMPHEADER0;
|
|
35
|
+
typedef struct
|
|
36
|
+
{ // bmfh
|
|
37
|
+
uinT32 bfSize; //filesize
|
|
38
|
+
uinT16 bfReserved1; //zero
|
|
39
|
+
uinT16 bfReserved2; //zero
|
|
40
|
+
uinT32 bfOffBits; //offset to bitmap
|
|
41
|
+
} BMPHEADER;
|
|
42
|
+
|
|
43
|
+
typedef struct
|
|
44
|
+
{ // bmih
|
|
45
|
+
uinT32 biSize; //size of struct
|
|
46
|
+
inT32 biWidth; //image width
|
|
47
|
+
inT32 biHeight; //image height
|
|
48
|
+
uinT16 biPlanes; //1
|
|
49
|
+
uinT16 biBitCount; //bpp
|
|
50
|
+
uinT32 biCompression; //0 for uncompressed
|
|
51
|
+
uinT32 biSizeImage; //image size
|
|
52
|
+
inT32 biXPelsPerMeter; //res in pp metre
|
|
53
|
+
inT32 biYPelsPerMeter;
|
|
54
|
+
uinT32 biClrUsed; //0 or actual size of colour table
|
|
55
|
+
uinT32 biClrImportant; //usually 0
|
|
56
|
+
} BMPHEADER2;
|
|
57
|
+
|
|
58
|
+
typedef struct
|
|
59
|
+
{ // rgbq
|
|
60
|
+
uinT8 rgbBlue;
|
|
61
|
+
uinT8 rgbGreen;
|
|
62
|
+
uinT8 rgbRed;
|
|
63
|
+
uinT8 rgbReserved; //0
|
|
64
|
+
} WIN32_RGBQUAD;
|
|
65
|
+
|
|
66
|
+
/**********************************************************************
|
|
67
|
+
* open_bmp_image
|
|
68
|
+
*
|
|
69
|
+
* Read the header of a bmp format image and prepare to read the rest.
|
|
70
|
+
**********************************************************************/
|
|
71
|
+
|
|
72
|
+
inT8 open_bmp_image( //read header
|
|
73
|
+
int fd, //file to read
|
|
74
|
+
inT32 *xsize, //size of image
|
|
75
|
+
inT32 *ysize,
|
|
76
|
+
inT8 *bpp, //bits per pixel
|
|
77
|
+
inT8 *photo,
|
|
78
|
+
inT32 *res //resolution
|
|
79
|
+
) {
|
|
80
|
+
uinT32 nread; //current bits
|
|
81
|
+
BMPHEADER0 head0; //first part of header
|
|
82
|
+
BMPHEADER head1; //first part of header
|
|
83
|
+
BMPHEADER2 head2; //first part of header
|
|
84
|
+
|
|
85
|
+
*photo = 1;
|
|
86
|
+
nread = read (fd, &head0, sizeof (head0));
|
|
87
|
+
if (nread != sizeof (head0))
|
|
88
|
+
return -1;
|
|
89
|
+
nread = read (fd, &head1, sizeof (head1));
|
|
90
|
+
if (nread != sizeof (head1))
|
|
91
|
+
return -1;
|
|
92
|
+
nread = read (fd, &head2, sizeof (head2));
|
|
93
|
+
if (nread != sizeof (head2))
|
|
94
|
+
return -1;
|
|
95
|
+
|
|
96
|
+
if (head0.bfType1 != 'B')
|
|
97
|
+
return -1;
|
|
98
|
+
if (head0.bfType2 != 'M')
|
|
99
|
+
return -1;
|
|
100
|
+
lseek (fd, head1.bfOffBits, SEEK_SET);
|
|
101
|
+
*bpp = head2.biBitCount;
|
|
102
|
+
*xsize = head2.biWidth;
|
|
103
|
+
*ysize = head2.biHeight;
|
|
104
|
+
*res = 300; //make up resolution
|
|
105
|
+
return -2; //success
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
/**********************************************************************
|
|
110
|
+
* read_bmp_image
|
|
111
|
+
*
|
|
112
|
+
* Read a whole lz format image and close the file.
|
|
113
|
+
**********************************************************************/
|
|
114
|
+
|
|
115
|
+
inT8 read_bmp_image( //read header
|
|
116
|
+
int fd, //file to read
|
|
117
|
+
uinT8 *pixels, //pixels of image
|
|
118
|
+
inT32 xsize, //size of image
|
|
119
|
+
inT32 ysize,
|
|
120
|
+
inT8 bpp, //bits per pixel
|
|
121
|
+
inT32 //bytes per line
|
|
122
|
+
) {
|
|
123
|
+
uinT32 bpl; //bytes per line
|
|
124
|
+
uinT32 wpl; //words per line
|
|
125
|
+
uinT32 nread; //current bits
|
|
126
|
+
inT32 index; //to cols
|
|
127
|
+
|
|
128
|
+
bpl = (xsize * bpp + 7) / 8; //bytes per line
|
|
129
|
+
wpl = (bpl + 3) / 4;
|
|
130
|
+
wpl *= 4;
|
|
131
|
+
for (index = 0; index < ysize; index++) {
|
|
132
|
+
nread = read (fd, pixels + bpl * (ysize - 1 - index), bpl);
|
|
133
|
+
if (nread != bpl)
|
|
134
|
+
return -1;
|
|
135
|
+
if (wpl != bpl)
|
|
136
|
+
lseek (fd, wpl - bpl, SEEK_CUR);
|
|
137
|
+
}
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
/**********************************************************************
|
|
143
|
+
* write_bmp_image
|
|
144
|
+
*
|
|
145
|
+
* Write a whole lz format image and close the file.
|
|
146
|
+
**********************************************************************/
|
|
147
|
+
|
|
148
|
+
inT8 write_bmp_image( //write whole image
|
|
149
|
+
int fd, //file to write on
|
|
150
|
+
uinT8 *pixels, //image pixels
|
|
151
|
+
inT32 xsize, //size of image
|
|
152
|
+
inT32 ysize,
|
|
153
|
+
inT8 bpp, //bits per pixel
|
|
154
|
+
inT8,
|
|
155
|
+
inT32 res //resolution
|
|
156
|
+
) {
|
|
157
|
+
uinT32 bpl; //bytes per line
|
|
158
|
+
uinT32 wpl; //words per line
|
|
159
|
+
uinT32 nread; //current bits
|
|
160
|
+
inT32 cols; //entries in table
|
|
161
|
+
inT32 index; //to cols
|
|
162
|
+
BMPHEADER0 head0; //first part of header
|
|
163
|
+
BMPHEADER head1; //first part of header
|
|
164
|
+
BMPHEADER2 head2; //first part of header
|
|
165
|
+
WIN32_RGBQUAD coltab[256]; //colour table
|
|
166
|
+
|
|
167
|
+
if (bpp == 24)
|
|
168
|
+
cols = 0;
|
|
169
|
+
else
|
|
170
|
+
cols = 1 << bpp; //size of colour table
|
|
171
|
+
bpl = (xsize * bpp + 7) / 8; //bytes per line
|
|
172
|
+
wpl = (bpl + 3) / 4;
|
|
173
|
+
|
|
174
|
+
head2.biSize = sizeof (head2); //size of struct
|
|
175
|
+
head2.biWidth = xsize; //image width
|
|
176
|
+
head2.biHeight = ysize; //image height
|
|
177
|
+
head2.biPlanes = 1; //1
|
|
178
|
+
head2.biBitCount = bpp; //bpp
|
|
179
|
+
head2.biCompression = 0; //0 for uncompressed
|
|
180
|
+
//image size
|
|
181
|
+
head2.biSizeImage = wpl * 4 * ysize;
|
|
182
|
+
//res in pp metre
|
|
183
|
+
head2.biXPelsPerMeter = (uinT32) (res * 39.37);
|
|
184
|
+
head2.biYPelsPerMeter = (uinT32) (res * 39.37);
|
|
185
|
+
head2.biClrUsed = cols; //0 or actual size of colour table
|
|
186
|
+
head2.biClrImportant = 0; //usually 0
|
|
187
|
+
|
|
188
|
+
head0.bfType1 = 'B';
|
|
189
|
+
head0.bfType2 = 'M';
|
|
190
|
+
head1.bfReserved1 = 0; //zero
|
|
191
|
+
head1.bfReserved2 = 0; //zero
|
|
192
|
+
//offset to bitmap
|
|
193
|
+
head1.bfOffBits = sizeof (head0) + sizeof (head1) + sizeof (head2) + sizeof (WIN32_RGBQUAD) * cols;
|
|
194
|
+
//filesize
|
|
195
|
+
head1.bfSize = head1.bfOffBits + head2.biSizeImage;
|
|
196
|
+
|
|
197
|
+
for (index = 0; index < cols; index++) {
|
|
198
|
+
coltab[index].rgbBlue = index * 255 / (cols - 1);
|
|
199
|
+
coltab[index].rgbGreen = coltab[index].rgbBlue;
|
|
200
|
+
coltab[index].rgbRed = coltab[index].rgbBlue;
|
|
201
|
+
coltab[index].rgbReserved = 0;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
nread = write (fd, &head0, sizeof (head0));
|
|
205
|
+
if (nread != sizeof (head0))
|
|
206
|
+
return -1;
|
|
207
|
+
nread = write (fd, &head1, sizeof (head1));
|
|
208
|
+
if (nread != sizeof (head1))
|
|
209
|
+
return -1;
|
|
210
|
+
nread = write (fd, &head2, sizeof (head2));
|
|
211
|
+
if (nread != sizeof (head2))
|
|
212
|
+
return -1;
|
|
213
|
+
nread = write (fd, coltab, cols * sizeof (WIN32_RGBQUAD));
|
|
214
|
+
if (nread != cols * sizeof (WIN32_RGBQUAD))
|
|
215
|
+
return -1;
|
|
216
|
+
for (index = 0; index < ysize; index++) {
|
|
217
|
+
nread = write (fd, pixels + bpl * (ysize - 1 - index), wpl * 4);
|
|
218
|
+
if (nread != wpl * 4)
|
|
219
|
+
return -1;
|
|
220
|
+
}
|
|
221
|
+
close(fd); //done it
|
|
222
|
+
return 0;
|
|
223
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: imgbmp.c (Formerly lz.c)
|
|
3
|
+
* Description: bmp image reader/writer.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Tue Jan 06 20:15:52 GMT 1998
|
|
6
|
+
*
|
|
7
|
+
* (C) Copyright 1998, Ray Smith.
|
|
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 IMGBMP_H
|
|
21
|
+
#define IMGBMP_H
|
|
22
|
+
|
|
23
|
+
#include "host.h"
|
|
24
|
+
|
|
25
|
+
inT8 open_bmp_image( //read header
|
|
26
|
+
int fd, //file to read
|
|
27
|
+
inT32 *xsize, //size of image
|
|
28
|
+
inT32 *ysize,
|
|
29
|
+
inT8 *bpp, //bits per pixel
|
|
30
|
+
inT8 *photo,
|
|
31
|
+
inT32 *res //resolution
|
|
32
|
+
);
|
|
33
|
+
inT8 read_bmp_image( //read header
|
|
34
|
+
int fd, //file to read
|
|
35
|
+
uinT8 *pixels, //pixels of image
|
|
36
|
+
inT32 xsize, //size of image
|
|
37
|
+
inT32 ysize,
|
|
38
|
+
inT8 bpp, //bits per pixel
|
|
39
|
+
inT32 //bytes per line
|
|
40
|
+
);
|
|
41
|
+
inT8 write_bmp_image( //write whole image
|
|
42
|
+
int fd, //file to write on
|
|
43
|
+
uinT8 *pixels, //image pixels
|
|
44
|
+
inT32 xsize, //size of image
|
|
45
|
+
inT32 ysize,
|
|
46
|
+
inT8 bpp, //bits per pixel
|
|
47
|
+
inT8,
|
|
48
|
+
inT32 //resolution
|
|
49
|
+
);
|
|
50
|
+
#endif
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: imgerrs.h (Formerly imgerr.h)
|
|
3
|
+
* Description: Definitions of errors related to IMAGE operations.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Tue Aug 14 10:10:53 BST 1990
|
|
6
|
+
*
|
|
7
|
+
* (C) Copyright 1990, 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 IMGERRS_H
|
|
21
|
+
#define IMGERRS_H
|
|
22
|
+
|
|
23
|
+
#include "errcode.h"
|
|
24
|
+
|
|
25
|
+
const ERRCODE BADIMAGETYPE = "Unrecognized image type";
|
|
26
|
+
const ERRCODE CANTREADIMAGETYPE = "Can't read this image type";
|
|
27
|
+
const ERRCODE CANTWRITEIMAGETYPE = "Can't write this image type";
|
|
28
|
+
const ERRCODE IMAGEUNDEFINED = "Attempt to operate on undefined image";
|
|
29
|
+
const ERRCODE BADIMAGECOORDS = "Coordinates in image out of bounds";
|
|
30
|
+
const ERRCODE BADIMAGESEEK = "Can't seek backwards in a buffered image!";
|
|
31
|
+
const ERRCODE BADIMAGESIZE = "Illegal image size";
|
|
32
|
+
const ERRCODE BADIMAGEFORMAT = "Illegal image format";
|
|
33
|
+
const ERRCODE BADBPP = "Only 1,2,4,5,6,8 bpp are supported";
|
|
34
|
+
const ERRCODE BADWINDOW = "Convolution window must have odd dimensions";
|
|
35
|
+
#endif
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: imgio.c (Formerly imageio.c)
|
|
3
|
+
* Description: Controls image input/output and selection of format.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Mon Jun 11 11:47:26 BST 1990
|
|
6
|
+
*
|
|
7
|
+
* (C) Copyright 1990, 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" //precompiled headers
|
|
21
|
+
#ifdef __MSW32__
|
|
22
|
+
#include <io.h>
|
|
23
|
+
#else
|
|
24
|
+
#include <unistd.h>
|
|
25
|
+
#endif
|
|
26
|
+
#include <fcntl.h>
|
|
27
|
+
#include <sys/types.h>
|
|
28
|
+
#include <sys/stat.h>
|
|
29
|
+
#include <string.h>
|
|
30
|
+
#include "scanutils.h"
|
|
31
|
+
#include "stderr.h"
|
|
32
|
+
#include "fileerr.h"
|
|
33
|
+
#include "imgerrs.h"
|
|
34
|
+
#include "memry.h"
|
|
35
|
+
#include "imgs.h"
|
|
36
|
+
#include "imgbmp.h"
|
|
37
|
+
#include "imgtiff.h"
|
|
38
|
+
#include "imgio.h"
|
|
39
|
+
|
|
40
|
+
#define DEFAULTIMAGETYPE "tif" //default to im files
|
|
41
|
+
|
|
42
|
+
typedef struct
|
|
43
|
+
{
|
|
44
|
+
const char *string; //extension
|
|
45
|
+
IMAGE_OPENER opener; //opening function
|
|
46
|
+
IMAGE_READER reader; //reading function
|
|
47
|
+
IMAGE_WRITER writer; //writing function
|
|
48
|
+
} IMAGETYPE; //image type record
|
|
49
|
+
|
|
50
|
+
static IMAGETYPE imagetypes[] = { {
|
|
51
|
+
"TIF",
|
|
52
|
+
open_tif_image,
|
|
53
|
+
read_tif_image,
|
|
54
|
+
write_moto_tif
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"itf",
|
|
58
|
+
open_tif_image,
|
|
59
|
+
read_tif_image,
|
|
60
|
+
write_inverse_tif
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"tif",
|
|
64
|
+
open_tif_image,
|
|
65
|
+
read_tif_image,
|
|
66
|
+
write_intel_tif
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"bmp",
|
|
70
|
+
open_bmp_image,
|
|
71
|
+
read_bmp_image,
|
|
72
|
+
write_bmp_image
|
|
73
|
+
},
|
|
74
|
+
}; //image readers/writers
|
|
75
|
+
|
|
76
|
+
#define MAXIMAGETYPES (sizeof(imagetypes)/sizeof(IMAGETYPE))
|
|
77
|
+
|
|
78
|
+
/**********************************************************************
|
|
79
|
+
* name_to_image_type
|
|
80
|
+
*
|
|
81
|
+
* Convert a file name to an image type, picking defaults if it is
|
|
82
|
+
* has no extension, and complaining if the extension is not supported.
|
|
83
|
+
**********************************************************************/
|
|
84
|
+
|
|
85
|
+
static inT8 name_to_image_type( //get image type
|
|
86
|
+
const char *name //name of image
|
|
87
|
+
) {
|
|
88
|
+
const char *nametype; //type part of name
|
|
89
|
+
inT8 type; //imagetypes index
|
|
90
|
+
|
|
91
|
+
nametype = strrchr (name, '.');//find extension
|
|
92
|
+
if (nametype != NULL)
|
|
93
|
+
nametype++; //ptr to extension
|
|
94
|
+
else
|
|
95
|
+
nametype = DEFAULTIMAGETYPE; //had none
|
|
96
|
+
|
|
97
|
+
//find type of image
|
|
98
|
+
for (type = 0; type < MAXIMAGETYPES && strcmp (imagetypes[type].string, nametype); type++);
|
|
99
|
+
if (type >= MAXIMAGETYPES) {
|
|
100
|
+
//unrecognized type
|
|
101
|
+
BADIMAGETYPE.error ("name_to_image_type", TESSLOG, name);
|
|
102
|
+
return -1;
|
|
103
|
+
}
|
|
104
|
+
return type;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
/**********************************************************************
|
|
109
|
+
* read_header
|
|
110
|
+
*
|
|
111
|
+
* Read the header of an image, typed according to the extension of
|
|
112
|
+
* the name. Return is 0 for success, -1 for failure.
|
|
113
|
+
**********************************************************************/
|
|
114
|
+
|
|
115
|
+
inT8 IMAGE::read_header( //get file header
|
|
116
|
+
const char *name //name of image
|
|
117
|
+
) {
|
|
118
|
+
inT8 type; //image type
|
|
119
|
+
|
|
120
|
+
destroy(); //destroy old image
|
|
121
|
+
//get type
|
|
122
|
+
type = name_to_image_type (name);
|
|
123
|
+
if (type < 0 || imagetypes[type].opener == NULL) {
|
|
124
|
+
CANTREADIMAGETYPE.error ("IMAGE::read_header", TESSLOG, name);
|
|
125
|
+
return -1; //read not supported
|
|
126
|
+
}
|
|
127
|
+
#ifdef __UNIX__
|
|
128
|
+
if ((fd = open (name, O_RDONLY)) < 0)
|
|
129
|
+
#endif
|
|
130
|
+
#if defined (__MSW32__) || defined (__MAC__)
|
|
131
|
+
if ((fd = open (name, O_RDONLY | O_BINARY)) < 0)
|
|
132
|
+
#endif
|
|
133
|
+
{
|
|
134
|
+
CANTOPENFILE.error ("IMAGE::read_header", TESSLOG, name);
|
|
135
|
+
return -1; //failed
|
|
136
|
+
}
|
|
137
|
+
lineskip =
|
|
138
|
+
(*imagetypes[type].opener) (fd, &xsize, &ysize, &bpp, &photo_interp,
|
|
139
|
+
&res);
|
|
140
|
+
if (lineskip == -1) {
|
|
141
|
+
//get header
|
|
142
|
+
bpp = 0; //still empty
|
|
143
|
+
close(fd);
|
|
144
|
+
fd = -1;
|
|
145
|
+
return -1; //failed
|
|
146
|
+
}
|
|
147
|
+
if (res <= 0)
|
|
148
|
+
res = image_default_resolution;
|
|
149
|
+
// fprintf(stderr,"Image size=(%d,%d), bpp=%d\n",
|
|
150
|
+
// xsize,ysize,bpp);
|
|
151
|
+
//bytes per line
|
|
152
|
+
xdim = COMPUTE_IMAGE_XDIM (xsize, bpp);
|
|
153
|
+
bps = bpp == 24 ? 8 : bpp;
|
|
154
|
+
bytespp = (bpp + 7) / 8;
|
|
155
|
+
//funtion to read with
|
|
156
|
+
reader = imagetypes[type].reader;
|
|
157
|
+
return 0; //success
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
/**********************************************************************
|
|
162
|
+
* read
|
|
163
|
+
*
|
|
164
|
+
* Read a previously opened image file into memory.
|
|
165
|
+
* If buflines is 0, the whole image is read in one go.
|
|
166
|
+
* If buflines>0, memory space is reserved for reading just that many
|
|
167
|
+
* lines at once.
|
|
168
|
+
* As soon as a request is made to get a line past the end of the buffer,
|
|
169
|
+
* the buffer is re-read with a 50% overlap.
|
|
170
|
+
* Backward seeks are not allowed.
|
|
171
|
+
* Read returns -1 in case of failure or 0 if successful.
|
|
172
|
+
**********************************************************************/
|
|
173
|
+
|
|
174
|
+
inT8 IMAGE::read( //get rest of image
|
|
175
|
+
inT32 buflines //size of buffer
|
|
176
|
+
) {
|
|
177
|
+
inT32 row; //image row
|
|
178
|
+
BOOL8 failed; //read failed
|
|
179
|
+
|
|
180
|
+
if (fd < 0 || image != NULL)
|
|
181
|
+
IMAGEUNDEFINED.error ("IMAGE::read", ABORT, NULL);
|
|
182
|
+
|
|
183
|
+
if (buflines <= 0 || buflines > ysize || reader == NULL)
|
|
184
|
+
buflines = ysize; //default to all
|
|
185
|
+
bufheight = buflines;
|
|
186
|
+
image =
|
|
187
|
+
(uinT8 *) alloc_big_mem ((size_t) (xdim * bufheight * sizeof (uinT8)));
|
|
188
|
+
if (image == NULL) {
|
|
189
|
+
MEMORY_OUT.error ("IMAGE::read", TESSLOG, NULL);
|
|
190
|
+
destroy();
|
|
191
|
+
return -1;
|
|
192
|
+
}
|
|
193
|
+
captured = FALSE;
|
|
194
|
+
ymax = ysize;
|
|
195
|
+
ymin = ysize - buflines; //amount of image read
|
|
196
|
+
if (reader != NULL && lineskip < 0)
|
|
197
|
+
failed = (*reader) (fd, image, xsize, ysize, bpp, xdim) < 0;
|
|
198
|
+
else {
|
|
199
|
+
if (lineskip == 0)
|
|
200
|
+
failed =::read (fd, (char *) image,
|
|
201
|
+
(size_t) (xdim * bufheight)) != xdim * bufheight;
|
|
202
|
+
else {
|
|
203
|
+
for (failed = FALSE, row = 0; row < bufheight && !failed; row++) {
|
|
204
|
+
failed =::read (fd, (char *) image + row * xdim,
|
|
205
|
+
(size_t) xdim) != xdim;
|
|
206
|
+
failed |= lseek (fd, lineskip, SEEK_CUR) < 0;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (failed) {
|
|
211
|
+
READFAILED.error ("IMAGE::read", TESSLOG, NULL);
|
|
212
|
+
destroy();
|
|
213
|
+
return -1; //read failed
|
|
214
|
+
}
|
|
215
|
+
if (ymin <= 0) {
|
|
216
|
+
close(fd); //finished reading
|
|
217
|
+
fd = -1; //not open now
|
|
218
|
+
}
|
|
219
|
+
return 0; //success
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
/**********************************************************************
|
|
224
|
+
* bufread
|
|
225
|
+
*
|
|
226
|
+
* Read a bit more of an image into the buffer.
|
|
227
|
+
**********************************************************************/
|
|
228
|
+
|
|
229
|
+
inT8 IMAGE::bufread( //read more into buffer
|
|
230
|
+
inT32 y //required coord
|
|
231
|
+
) {
|
|
232
|
+
inT32 readtop; //no of lines copied
|
|
233
|
+
inT32 linestoread; //no of lines to read
|
|
234
|
+
inT32 row; //row to read
|
|
235
|
+
BOOL8 failed; //read failed
|
|
236
|
+
|
|
237
|
+
//copy needed?
|
|
238
|
+
if (y + bufheight / 2 >= ymin) {
|
|
239
|
+
//no of lines to move
|
|
240
|
+
readtop = y + bufheight / 2 - ymin + 1;
|
|
241
|
+
//copy inside it
|
|
242
|
+
copy_sub_image (this, 0, ymin, xsize, readtop, this, 0, ymax - readtop, TRUE);
|
|
243
|
+
}
|
|
244
|
+
else
|
|
245
|
+
readtop = 0;
|
|
246
|
+
ymax = y + bufheight / 2; //new top of image
|
|
247
|
+
ymin = ymax - bufheight; //possible bottom
|
|
248
|
+
if (ymin < 0)
|
|
249
|
+
ymin = 0; //clip to image size
|
|
250
|
+
linestoread = ymax - ymin - readtop;
|
|
251
|
+
if (lineskip == 0)
|
|
252
|
+
failed =::read (fd, (char *) (image + xdim * readtop),
|
|
253
|
+
(size_t) (xdim * linestoread)) != xdim * linestoread;
|
|
254
|
+
else {
|
|
255
|
+
for (failed = FALSE, row = 0; row < linestoread && !failed; row++) {
|
|
256
|
+
failed =::read (fd, (char *) (image + (readtop + row) * xdim),
|
|
257
|
+
(size_t) xdim) != xdim;
|
|
258
|
+
failed |= lseek (fd, lineskip, SEEK_CUR) < 0;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (failed) {
|
|
262
|
+
READFAILED.error ("IMAGE::bufread", TESSLOG, NULL);
|
|
263
|
+
return -1; //read failed
|
|
264
|
+
}
|
|
265
|
+
if (ymin <= 0) {
|
|
266
|
+
close(fd); //finished reading
|
|
267
|
+
fd = -1; //not open now
|
|
268
|
+
}
|
|
269
|
+
return 0; //success
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
/**********************************************************************
|
|
274
|
+
* write
|
|
275
|
+
*
|
|
276
|
+
* Write an image to a file in a format determined by the name.
|
|
277
|
+
**********************************************************************/
|
|
278
|
+
|
|
279
|
+
inT8 IMAGE::write( //write image
|
|
280
|
+
const char *name //name to write
|
|
281
|
+
) {
|
|
282
|
+
inT8 type; //type of image
|
|
283
|
+
|
|
284
|
+
if (bpp == 0 || image == NULL || bufheight != ysize)
|
|
285
|
+
IMAGEUNDEFINED.error ("IMAGE::write", ABORT, NULL);
|
|
286
|
+
if (fd >= 0) {
|
|
287
|
+
close(fd); //close old file
|
|
288
|
+
fd = -1; //no longer open
|
|
289
|
+
}
|
|
290
|
+
//get image type
|
|
291
|
+
type = name_to_image_type (name);
|
|
292
|
+
if (type < 0 || imagetypes[type].writer == NULL) {
|
|
293
|
+
CANTWRITEIMAGETYPE.error ("IMAGE::write", TESSLOG, name);
|
|
294
|
+
return -1; //write not supported
|
|
295
|
+
}
|
|
296
|
+
#ifdef __UNIX__
|
|
297
|
+
if ((fd = creat (name, 0666)) < 0)
|
|
298
|
+
#endif
|
|
299
|
+
#ifdef __MSW32__
|
|
300
|
+
if ((fd = open (name, _O_CREAT | _O_WRONLY | _O_BINARY, _S_IWRITE)) < 0)
|
|
301
|
+
#endif
|
|
302
|
+
#ifdef __MAC__
|
|
303
|
+
if ((fd = creat (name, O_WRONLY | O_BINARY)) < 0)
|
|
304
|
+
#endif
|
|
305
|
+
{
|
|
306
|
+
CANTCREATEFILE.error ("IMAGE::write", TESSLOG, name);
|
|
307
|
+
return -1; //failed
|
|
308
|
+
}
|
|
309
|
+
if (res <= 0)
|
|
310
|
+
res = image_default_resolution;
|
|
311
|
+
if ((*imagetypes[type].writer) (fd, image, xsize, ysize, bpp, photo_interp,
|
|
312
|
+
res) < 0) {
|
|
313
|
+
//get header
|
|
314
|
+
//write failed
|
|
315
|
+
WRITEFAILED.error ("IMAGE::write", TESSLOG, name);
|
|
316
|
+
close(fd);
|
|
317
|
+
fd = -1;
|
|
318
|
+
return -1; //failed
|
|
319
|
+
}
|
|
320
|
+
return 0; //success
|
|
321
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: imgio.h (Formerly imageio.h)
|
|
3
|
+
* Description: Header file for image input/output functions.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Mon Jun 11 12:55:34 BST 1990
|
|
6
|
+
*
|
|
7
|
+
* (C) Copyright 1990, 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 IMGIO_H
|
|
21
|
+
#define IMGIO_H
|
|
22
|
+
#endif
|