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,67 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
* File: quadlsq.h (Formerly qlsq.h)
|
3
|
+
* Description: Code for least squares approximation of quadratics.
|
4
|
+
* Author: Ray Smith
|
5
|
+
* Created: Wed Oct 6 15:14:23 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 QUADLSQ_H
|
21
|
+
#define QUADLSQ_H
|
22
|
+
|
23
|
+
#include "points.h"
|
24
|
+
|
25
|
+
class QLSQ
|
26
|
+
{
|
27
|
+
public:
|
28
|
+
QLSQ() { //constructor
|
29
|
+
clear(); //set to zeros
|
30
|
+
}
|
31
|
+
void clear(); //initialize
|
32
|
+
|
33
|
+
void add( //add element
|
34
|
+
double x, //coords to add
|
35
|
+
double y);
|
36
|
+
void remove( //delete element
|
37
|
+
double x, //coords to delete
|
38
|
+
double y);
|
39
|
+
inT32 count() { //no of elements
|
40
|
+
return n;
|
41
|
+
}
|
42
|
+
|
43
|
+
void fit( //fit the given
|
44
|
+
int degree); //return actual
|
45
|
+
double get_a() { //get x squard
|
46
|
+
return a;
|
47
|
+
}
|
48
|
+
double get_b() { //get x squard
|
49
|
+
return b;
|
50
|
+
}
|
51
|
+
double get_c() { //get x squard
|
52
|
+
return c;
|
53
|
+
}
|
54
|
+
|
55
|
+
private:
|
56
|
+
inT32 n; //no of elements
|
57
|
+
double a, b, c; //result
|
58
|
+
double sigx; //sum of x
|
59
|
+
double sigy; //sum of y
|
60
|
+
double sigxx; //sum x squared
|
61
|
+
double sigxy; //sum of xy
|
62
|
+
double sigyy; //sum y squared
|
63
|
+
long double sigxxx; //sum x cubed
|
64
|
+
long double sigxxy; //sum xsquared y
|
65
|
+
long double sigxxxx; //sum x fourth
|
66
|
+
};
|
67
|
+
#endif
|
@@ -0,0 +1,21 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
* File: quadratc.cpp (Formerly quadrtic.c)
|
3
|
+
* Description: Code for the QUAD_COEFFS class.
|
4
|
+
* Author: Ray Smith
|
5
|
+
* Created: Tue Oct 08 17:24:40 BST 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 "quadratc.h"
|
@@ -0,0 +1,63 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
* File: quadratc.h (Formerly quadrtic.h)
|
3
|
+
* Description: Code for the QUAD_COEFFS class.
|
4
|
+
* Author: Ray Smith
|
5
|
+
* Created: Tue Oct 08 17:24:40 BST 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 QUADRATC_H
|
21
|
+
#define QUADRATC_H
|
22
|
+
|
23
|
+
#include "points.h"
|
24
|
+
|
25
|
+
class QUAD_COEFFS
|
26
|
+
{
|
27
|
+
public:
|
28
|
+
QUAD_COEFFS() {
|
29
|
+
} //empty constructor
|
30
|
+
QUAD_COEFFS( //constructor
|
31
|
+
double xsq, //coefficients
|
32
|
+
float x,
|
33
|
+
float constant) {
|
34
|
+
a = xsq;
|
35
|
+
b = x;
|
36
|
+
c = constant;
|
37
|
+
}
|
38
|
+
|
39
|
+
float y( //evaluate
|
40
|
+
float x) const { //at x
|
41
|
+
return (float) ((a * x + b) * x + c);
|
42
|
+
}
|
43
|
+
|
44
|
+
void move( // reposition word
|
45
|
+
ICOORD vec) { // by vector
|
46
|
+
/************************************************************
|
47
|
+
y - q = a (x - p)^2 + b (x - p) + c
|
48
|
+
y - q = ax^2 - 2apx + ap^2 + bx - bp + c
|
49
|
+
y = ax^2 + (b - 2ap)x + (c - bp + ap^2 + q)
|
50
|
+
************************************************************/
|
51
|
+
inT16 p = vec.x ();
|
52
|
+
inT16 q = vec.y ();
|
53
|
+
|
54
|
+
c = (float) (c - b * p + a * p * p + q);
|
55
|
+
b = (float) (b - 2 * a * p);
|
56
|
+
}
|
57
|
+
|
58
|
+
double a; //x squared
|
59
|
+
float b; //x
|
60
|
+
float c; //constant
|
61
|
+
private:
|
62
|
+
};
|
63
|
+
#endif
|
@@ -0,0 +1,382 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
* File: quspline.cpp (Formerly qspline.c)
|
3
|
+
* Description: Code for the QSPLINE class.
|
4
|
+
* Author: Ray Smith
|
5
|
+
* Created: Tue Oct 08 17:16:12 BST 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 "memry.h"
|
22
|
+
#include "quadlsq.h"
|
23
|
+
#include "quspline.h"
|
24
|
+
|
25
|
+
#define QSPLINE_PRECISION 16 //no of steps to draw
|
26
|
+
|
27
|
+
/**********************************************************************
|
28
|
+
* QSPLINE::QSPLINE
|
29
|
+
*
|
30
|
+
* Constructor to build a QSPLINE given the components used in the old code.
|
31
|
+
**********************************************************************/
|
32
|
+
|
33
|
+
QSPLINE::QSPLINE( //constructor
|
34
|
+
inT32 count, //no of segments
|
35
|
+
inT32 *xstarts, //start coords
|
36
|
+
double *coeffs //coefficients
|
37
|
+
) {
|
38
|
+
inT32 index; //segment index
|
39
|
+
|
40
|
+
//get memory
|
41
|
+
xcoords = (inT32 *) alloc_mem ((count + 1) * sizeof (inT32));
|
42
|
+
quadratics = (QUAD_COEFFS *) alloc_mem (count * sizeof (QUAD_COEFFS));
|
43
|
+
segments = count;
|
44
|
+
for (index = 0; index < segments; index++) {
|
45
|
+
//copy them
|
46
|
+
xcoords[index] = xstarts[index];
|
47
|
+
quadratics[index] = QUAD_COEFFS (coeffs[index * 3],
|
48
|
+
coeffs[index * 3 + 1],
|
49
|
+
coeffs[index * 3 + 2]);
|
50
|
+
}
|
51
|
+
//right edge
|
52
|
+
xcoords[index] = xstarts[index];
|
53
|
+
}
|
54
|
+
|
55
|
+
|
56
|
+
/**********************************************************************
|
57
|
+
* QSPLINE::QSPLINE
|
58
|
+
*
|
59
|
+
* Constructor to build a QSPLINE by appproximation of points.
|
60
|
+
**********************************************************************/
|
61
|
+
|
62
|
+
QSPLINE::QSPLINE ( //constructor
|
63
|
+
int xstarts[], //spline boundaries
|
64
|
+
int segcount, //no of segments
|
65
|
+
int xpts[], //points to fit
|
66
|
+
int ypts[], int pointcount, //no of pts
|
67
|
+
int degree //fit required
|
68
|
+
) {
|
69
|
+
register int pointindex; /*no along text line */
|
70
|
+
register int segment; /*segment no */
|
71
|
+
inT32 *ptcounts; //no in each segment
|
72
|
+
QLSQ qlsq; /*accumulator */
|
73
|
+
|
74
|
+
segments = segcount;
|
75
|
+
xcoords = (inT32 *) alloc_mem ((segcount + 1) * sizeof (inT32));
|
76
|
+
ptcounts = (inT32 *) alloc_mem ((segcount + 1) * sizeof (inT32));
|
77
|
+
quadratics = (QUAD_COEFFS *) alloc_mem (segcount * sizeof (QUAD_COEFFS));
|
78
|
+
memmove (xcoords, xstarts, (segcount + 1) * sizeof (inT32));
|
79
|
+
ptcounts[0] = 0; /*none in any yet */
|
80
|
+
for (segment = 0, pointindex = 0; pointindex < pointcount; pointindex++) {
|
81
|
+
while (segment < segcount && xpts[pointindex] >= xstarts[segment]) {
|
82
|
+
segment++; /*try next segment */
|
83
|
+
/*cumulative counts */
|
84
|
+
ptcounts[segment] = ptcounts[segment - 1];
|
85
|
+
}
|
86
|
+
ptcounts[segment]++; /*no in previous partition */
|
87
|
+
}
|
88
|
+
while (segment < segcount) {
|
89
|
+
segment++;
|
90
|
+
/*zero the rest */
|
91
|
+
ptcounts[segment] = ptcounts[segment - 1];
|
92
|
+
}
|
93
|
+
|
94
|
+
for (segment = 0; segment < segcount; segment++) {
|
95
|
+
qlsq.clear ();
|
96
|
+
/*first blob */
|
97
|
+
pointindex = ptcounts[segment];
|
98
|
+
if (pointindex > 0
|
99
|
+
&& xpts[pointindex] != xpts[pointindex - 1]
|
100
|
+
&& xpts[pointindex] != xstarts[segment])
|
101
|
+
qlsq.add (xstarts[segment],
|
102
|
+
ypts[pointindex - 1]
|
103
|
+
+ (ypts[pointindex] - ypts[pointindex - 1])
|
104
|
+
* (xstarts[segment] - xpts[pointindex - 1])
|
105
|
+
/ (xpts[pointindex] - xpts[pointindex - 1]));
|
106
|
+
for (; pointindex < ptcounts[segment + 1]; pointindex++) {
|
107
|
+
qlsq.add (xpts[pointindex], ypts[pointindex]);
|
108
|
+
}
|
109
|
+
if (pointindex > 0 && pointindex < pointcount
|
110
|
+
&& xpts[pointindex] != xstarts[segment + 1])
|
111
|
+
qlsq.add (xstarts[segment + 1],
|
112
|
+
ypts[pointindex - 1]
|
113
|
+
+ (ypts[pointindex] - ypts[pointindex - 1])
|
114
|
+
* (xstarts[segment + 1] - xpts[pointindex - 1])
|
115
|
+
/ (xpts[pointindex] - xpts[pointindex - 1]));
|
116
|
+
qlsq.fit (degree);
|
117
|
+
quadratics[segment].a = qlsq.get_a ();
|
118
|
+
quadratics[segment].b = qlsq.get_b ();
|
119
|
+
quadratics[segment].c = qlsq.get_c ();
|
120
|
+
}
|
121
|
+
free_mem(ptcounts);
|
122
|
+
}
|
123
|
+
|
124
|
+
|
125
|
+
/**********************************************************************
|
126
|
+
* QSPLINE::QSPLINE
|
127
|
+
*
|
128
|
+
* Constructor to build a QSPLINE from another.
|
129
|
+
**********************************************************************/
|
130
|
+
|
131
|
+
QSPLINE::QSPLINE( //constructor
|
132
|
+
const QSPLINE &src) {
|
133
|
+
segments = 0;
|
134
|
+
xcoords = NULL;
|
135
|
+
quadratics = NULL;
|
136
|
+
*this = src;
|
137
|
+
}
|
138
|
+
|
139
|
+
|
140
|
+
/**********************************************************************
|
141
|
+
* QSPLINE::~QSPLINE
|
142
|
+
*
|
143
|
+
* Destroy a QSPLINE.
|
144
|
+
**********************************************************************/
|
145
|
+
|
146
|
+
QSPLINE::~QSPLINE ( //constructor
|
147
|
+
) {
|
148
|
+
if (xcoords != NULL) {
|
149
|
+
free_mem(xcoords);
|
150
|
+
xcoords = NULL;
|
151
|
+
}
|
152
|
+
if (quadratics != NULL) {
|
153
|
+
free_mem(quadratics);
|
154
|
+
quadratics = NULL;
|
155
|
+
}
|
156
|
+
}
|
157
|
+
|
158
|
+
|
159
|
+
/**********************************************************************
|
160
|
+
* QSPLINE::operator=
|
161
|
+
*
|
162
|
+
* Copy a QSPLINE
|
163
|
+
**********************************************************************/
|
164
|
+
|
165
|
+
QSPLINE & QSPLINE::operator= ( //assignment
|
166
|
+
const QSPLINE & source) {
|
167
|
+
if (xcoords != NULL)
|
168
|
+
free_mem(xcoords);
|
169
|
+
if (quadratics != NULL)
|
170
|
+
free_mem(quadratics);
|
171
|
+
|
172
|
+
segments = source.segments;
|
173
|
+
xcoords = (inT32 *) alloc_mem ((segments + 1) * sizeof (inT32));
|
174
|
+
quadratics = (QUAD_COEFFS *) alloc_mem (segments * sizeof (QUAD_COEFFS));
|
175
|
+
memmove (xcoords, source.xcoords, (segments + 1) * sizeof (inT32));
|
176
|
+
memmove (quadratics, source.quadratics, segments * sizeof (QUAD_COEFFS));
|
177
|
+
return *this;
|
178
|
+
}
|
179
|
+
|
180
|
+
|
181
|
+
/**********************************************************************
|
182
|
+
* QSPLINE::step
|
183
|
+
*
|
184
|
+
* Return the total of the step functions between the given coords.
|
185
|
+
**********************************************************************/
|
186
|
+
|
187
|
+
double QSPLINE::step( //find step functions
|
188
|
+
double x1, //between coords
|
189
|
+
double x2) {
|
190
|
+
int index1, index2; //indices of coords
|
191
|
+
double total; /*total steps */
|
192
|
+
|
193
|
+
index1 = spline_index (x1);
|
194
|
+
index2 = spline_index (x2);
|
195
|
+
total = 0;
|
196
|
+
while (index1 < index2) {
|
197
|
+
total +=
|
198
|
+
(double) quadratics[index1 + 1].y ((float) xcoords[index1 + 1]);
|
199
|
+
total -= (double) quadratics[index1].y ((float) xcoords[index1 + 1]);
|
200
|
+
index1++; /*next segment */
|
201
|
+
}
|
202
|
+
return total; /*total steps */
|
203
|
+
}
|
204
|
+
|
205
|
+
|
206
|
+
/**********************************************************************
|
207
|
+
* QSPLINE::y
|
208
|
+
*
|
209
|
+
* Return the y value at the given x value.
|
210
|
+
**********************************************************************/
|
211
|
+
|
212
|
+
double QSPLINE::y( //evaluate
|
213
|
+
double x //coord to evaluate at
|
214
|
+
) const {
|
215
|
+
inT32 index; //segment index
|
216
|
+
|
217
|
+
index = spline_index (x);
|
218
|
+
return quadratics[index].y (x);//in correct segment
|
219
|
+
}
|
220
|
+
|
221
|
+
|
222
|
+
/**********************************************************************
|
223
|
+
* QSPLINE::spline_index
|
224
|
+
*
|
225
|
+
* Return the index to the largest xcoord not greater than x.
|
226
|
+
**********************************************************************/
|
227
|
+
|
228
|
+
inT32 QSPLINE::spline_index( //evaluate
|
229
|
+
double x //coord to evaluate at
|
230
|
+
) const {
|
231
|
+
inT32 index; //segment index
|
232
|
+
inT32 bottom; //bottom of range
|
233
|
+
inT32 top; //top of range
|
234
|
+
|
235
|
+
bottom = 0;
|
236
|
+
top = segments;
|
237
|
+
while (top - bottom > 1) {
|
238
|
+
index = (top + bottom) / 2; //centre of range
|
239
|
+
if (x >= xcoords[index])
|
240
|
+
bottom = index; //new min
|
241
|
+
else
|
242
|
+
top = index; //new max
|
243
|
+
}
|
244
|
+
return bottom;
|
245
|
+
}
|
246
|
+
|
247
|
+
|
248
|
+
/**********************************************************************
|
249
|
+
* QSPLINE::move
|
250
|
+
*
|
251
|
+
* Reposition spline by vector
|
252
|
+
**********************************************************************/
|
253
|
+
|
254
|
+
void QSPLINE::move( // reposition spline
|
255
|
+
ICOORD vec // by vector
|
256
|
+
) {
|
257
|
+
inT32 segment; //index of segment
|
258
|
+
inT16 x_shift = vec.x ();
|
259
|
+
|
260
|
+
for (segment = 0; segment < segments; segment++) {
|
261
|
+
xcoords[segment] += x_shift;
|
262
|
+
quadratics[segment].move (vec);
|
263
|
+
}
|
264
|
+
xcoords[segment] += x_shift;
|
265
|
+
}
|
266
|
+
|
267
|
+
|
268
|
+
/**********************************************************************
|
269
|
+
* QSPLINE::overlap
|
270
|
+
*
|
271
|
+
* Return TRUE if spline2 overlaps this by no more than fraction less
|
272
|
+
* than the bounds of this.
|
273
|
+
**********************************************************************/
|
274
|
+
|
275
|
+
BOOL8 QSPLINE::overlap( //test overlap
|
276
|
+
QSPLINE *spline2, //2 cannot be smaller
|
277
|
+
double fraction //by more than this
|
278
|
+
) {
|
279
|
+
int leftlimit; /*common left limit */
|
280
|
+
int rightlimit; /*common right limit */
|
281
|
+
|
282
|
+
leftlimit = xcoords[1];
|
283
|
+
rightlimit = xcoords[segments - 1];
|
284
|
+
/*or too non-overlap */
|
285
|
+
if (spline2->segments < 3 || spline2->xcoords[1] > leftlimit + fraction * (rightlimit - leftlimit)
|
286
|
+
|| spline2->xcoords[spline2->segments - 1] < rightlimit
|
287
|
+
- fraction * (rightlimit - leftlimit))
|
288
|
+
return FALSE;
|
289
|
+
else
|
290
|
+
return TRUE;
|
291
|
+
}
|
292
|
+
|
293
|
+
|
294
|
+
/**********************************************************************
|
295
|
+
* extrapolate_spline
|
296
|
+
*
|
297
|
+
* Extrapolates the spline linearly using the same gradient as the
|
298
|
+
* quadratic has at either end.
|
299
|
+
**********************************************************************/
|
300
|
+
|
301
|
+
void QSPLINE::extrapolate( //linear extrapolation
|
302
|
+
double gradient, //gradient to use
|
303
|
+
int xmin, //new left edge
|
304
|
+
int xmax //new right edge
|
305
|
+
) {
|
306
|
+
register int segment; /*current segment of spline */
|
307
|
+
int dest_segment; //dest index
|
308
|
+
int *xstarts; //new boundaries
|
309
|
+
QUAD_COEFFS *quads; //new ones
|
310
|
+
int increment; //in size
|
311
|
+
|
312
|
+
increment = xmin < xcoords[0] ? 1 : 0;
|
313
|
+
if (xmax > xcoords[segments])
|
314
|
+
increment++;
|
315
|
+
if (increment == 0)
|
316
|
+
return;
|
317
|
+
xstarts = (int *) alloc_mem ((segments + 1 + increment) * sizeof (int));
|
318
|
+
quads =
|
319
|
+
(QUAD_COEFFS *) alloc_mem ((segments + increment) * sizeof (QUAD_COEFFS));
|
320
|
+
if (xmin < xcoords[0]) {
|
321
|
+
xstarts[0] = xmin;
|
322
|
+
quads[0].a = 0;
|
323
|
+
quads[0].b = gradient;
|
324
|
+
quads[0].c = y (xcoords[0]) - quads[0].b * xcoords[0];
|
325
|
+
dest_segment = 1;
|
326
|
+
}
|
327
|
+
else
|
328
|
+
dest_segment = 0;
|
329
|
+
for (segment = 0; segment < segments; segment++) {
|
330
|
+
xstarts[dest_segment] = xcoords[segment];
|
331
|
+
quads[dest_segment] = quadratics[segment];
|
332
|
+
dest_segment++;
|
333
|
+
}
|
334
|
+
xstarts[dest_segment] = xcoords[segment];
|
335
|
+
if (xmax > xcoords[segments]) {
|
336
|
+
quads[dest_segment].a = 0;
|
337
|
+
quads[dest_segment].b = gradient;
|
338
|
+
quads[dest_segment].c = y (xcoords[segments])
|
339
|
+
- quads[dest_segment].b * xcoords[segments];
|
340
|
+
dest_segment++;
|
341
|
+
xstarts[dest_segment] = xmax + 1;
|
342
|
+
}
|
343
|
+
segments = dest_segment;
|
344
|
+
free_mem(xcoords);
|
345
|
+
free_mem(quadratics);
|
346
|
+
xcoords = (inT32 *) xstarts;
|
347
|
+
quadratics = quads;
|
348
|
+
}
|
349
|
+
|
350
|
+
|
351
|
+
/**********************************************************************
|
352
|
+
* QSPLINE::plot
|
353
|
+
*
|
354
|
+
* Draw the QSPLINE in the given colour.
|
355
|
+
**********************************************************************/
|
356
|
+
|
357
|
+
#ifndef GRAPHICS_DISABLED
|
358
|
+
void QSPLINE::plot( //draw it
|
359
|
+
ScrollView* window, //window to draw in
|
360
|
+
ScrollView::Color colour //colour to draw in
|
361
|
+
) const {
|
362
|
+
inT32 segment; //index of segment
|
363
|
+
inT16 step; //index of poly piece
|
364
|
+
double increment; //x increment
|
365
|
+
double x; //x coord
|
366
|
+
|
367
|
+
window->Pen(colour);
|
368
|
+
for (segment = 0; segment < segments; segment++) {
|
369
|
+
increment =
|
370
|
+
(double) (xcoords[segment + 1] -
|
371
|
+
xcoords[segment]) / QSPLINE_PRECISION;
|
372
|
+
x = xcoords[segment];
|
373
|
+
for (step = 0; step <= QSPLINE_PRECISION; step++) {
|
374
|
+
if (segment == 0 && step == 0)
|
375
|
+
window->SetCursor(x, quadratics[segment].y (x));
|
376
|
+
else
|
377
|
+
window->DrawTo(x, quadratics[segment].y (x));
|
378
|
+
x += increment;
|
379
|
+
}
|
380
|
+
}
|
381
|
+
}
|
382
|
+
#endif
|
@@ -0,0 +1,113 @@
|
|
1
|
+
/**********************************************************************
|
2
|
+
* File: quspline.h (Formerly qspline.h)
|
3
|
+
* Description: Code for the QSPLINE class.
|
4
|
+
* Author: Ray Smith
|
5
|
+
* Created: Tue Oct 08 17:16:12 BST 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 QUSPLINE_H
|
21
|
+
#define QUSPLINE_H
|
22
|
+
|
23
|
+
#include "quadratc.h"
|
24
|
+
#include "serialis.h"
|
25
|
+
#include "memry.h"
|
26
|
+
#include "rect.h"
|
27
|
+
|
28
|
+
class ROW;
|
29
|
+
|
30
|
+
class QSPLINE
|
31
|
+
{
|
32
|
+
friend void make_first_baseline(TBOX *,
|
33
|
+
int,
|
34
|
+
int *,
|
35
|
+
int *,
|
36
|
+
QSPLINE *,
|
37
|
+
QSPLINE *,
|
38
|
+
float);
|
39
|
+
friend void make_holed_baseline(TBOX *, int, QSPLINE *, QSPLINE *, float);
|
40
|
+
friend void tweak_row_baseline(ROW *);
|
41
|
+
public:
|
42
|
+
QSPLINE() { //empty constructor
|
43
|
+
segments = 0;
|
44
|
+
xcoords = NULL; //everything empty
|
45
|
+
quadratics = NULL;
|
46
|
+
}
|
47
|
+
QSPLINE( //copy constructor
|
48
|
+
const QSPLINE &src);
|
49
|
+
QSPLINE( //constructor
|
50
|
+
inT32 count, //number of segments
|
51
|
+
inT32 *xstarts, //segment starts
|
52
|
+
double *coeffs); //coefficients
|
53
|
+
~QSPLINE (); //destructor
|
54
|
+
QSPLINE ( //least squares fit
|
55
|
+
int xstarts[], //spline boundaries
|
56
|
+
int segcount, //no of segments
|
57
|
+
int xcoords[], //points to fit
|
58
|
+
int ycoords[], int blobcount,//no of coords
|
59
|
+
int degree); //function
|
60
|
+
|
61
|
+
double step( //step change
|
62
|
+
double x1, //between coords
|
63
|
+
double x2);
|
64
|
+
double y( //evaluate
|
65
|
+
double x) const; //at x
|
66
|
+
|
67
|
+
void move( // reposition spline
|
68
|
+
ICOORD vec); // by vector
|
69
|
+
BOOL8 overlap( //test overlap
|
70
|
+
QSPLINE *spline2, //2 cannot be smaller
|
71
|
+
double fraction); //by more than this
|
72
|
+
void extrapolate( //linear extrapolation
|
73
|
+
double gradient, //gradient to use
|
74
|
+
int left, //new left edge
|
75
|
+
int right); //new right edge
|
76
|
+
|
77
|
+
#ifndef GRAPHICS_DISABLED
|
78
|
+
void plot( //draw it
|
79
|
+
ScrollView* window, //in window
|
80
|
+
ScrollView::Color colour) const; //in colour
|
81
|
+
#endif
|
82
|
+
|
83
|
+
void prep_serialise() { //set ptrs to counts
|
84
|
+
} //not required
|
85
|
+
|
86
|
+
void dump( //write external bits
|
87
|
+
FILE *f) {
|
88
|
+
serialise_bytes (f, (void *) xcoords, (segments + 1) * sizeof (inT32));
|
89
|
+
serialise_bytes (f, (void *) quadratics, segments * sizeof (QUAD_COEFFS));
|
90
|
+
}
|
91
|
+
|
92
|
+
void de_dump( //read external bits
|
93
|
+
FILE *f) {
|
94
|
+
xcoords = (inT32 *) de_serialise_bytes (f,
|
95
|
+
(segments + 1) * sizeof (inT32));
|
96
|
+
quadratics = (QUAD_COEFFS *) de_serialise_bytes (f,
|
97
|
+
segments *
|
98
|
+
sizeof (QUAD_COEFFS));
|
99
|
+
}
|
100
|
+
|
101
|
+
//assign copy
|
102
|
+
make_serialise (QSPLINE) QSPLINE & operator= (
|
103
|
+
const QSPLINE & source); //from this
|
104
|
+
|
105
|
+
private:
|
106
|
+
|
107
|
+
inT32 spline_index( //binary search
|
108
|
+
double x) const; //for x
|
109
|
+
inT32 segments; //no of segments
|
110
|
+
inT32 *xcoords; //no of coords
|
111
|
+
QUAD_COEFFS *quadratics; //spline pieces
|
112
|
+
};
|
113
|
+
#endif
|