pdf2json 0.1.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/README.markdown +9 -0
- data/bin/.gitkeep +0 -0
- data/ext/extconf.rb +30 -0
- data/lib/pdf2json.rb +8 -0
- data/pdf2json-0.52-source/AUTHORS +24 -0
- data/pdf2json-0.52-source/CHANGES +11 -0
- data/pdf2json-0.52-source/Makefile +84 -0
- data/pdf2json-0.52-source/Makefile.in +84 -0
- data/pdf2json-0.52-source/aclocal.m4 +274 -0
- data/pdf2json-0.52-source/aconf-win32.h +86 -0
- data/pdf2json-0.52-source/aconf.h +42 -0
- data/pdf2json-0.52-source/aconf.h.in +41 -0
- data/pdf2json-0.52-source/autom4te.cache/output.0 +6908 -0
- data/pdf2json-0.52-source/autom4te.cache/requests +76 -0
- data/pdf2json-0.52-source/autom4te.cache/traces.0 +466 -0
- data/pdf2json-0.52-source/config.log +1259 -0
- data/pdf2json-0.52-source/config.status +1050 -0
- data/pdf2json-0.52-source/configure +6908 -0
- data/pdf2json-0.52-source/configure.ac +93 -0
- data/pdf2json-0.52-source/doc/pdffonts.1 +130 -0
- data/pdf2json-0.52-source/doc/pdffonts.cat +107 -0
- data/pdf2json-0.52-source/doc/pdffonts.hlp +117 -0
- data/pdf2json-0.52-source/doc/pdfimages.1 +102 -0
- data/pdf2json-0.52-source/doc/pdfimages.cat +92 -0
- data/pdf2json-0.52-source/doc/pdfimages.hlp +101 -0
- data/pdf2json-0.52-source/doc/pdfinfo.1 +158 -0
- data/pdf2json-0.52-source/doc/pdfinfo.cat +119 -0
- data/pdf2json-0.52-source/doc/pdfinfo.hlp +129 -0
- data/pdf2json-0.52-source/doc/pdftoppm.1 +115 -0
- data/pdf2json-0.52-source/doc/pdftoppm.cat +105 -0
- data/pdf2json-0.52-source/doc/pdftoppm.hlp +114 -0
- data/pdf2json-0.52-source/doc/pdftops.1 +229 -0
- data/pdf2json-0.52-source/doc/pdftops.cat +221 -0
- data/pdf2json-0.52-source/doc/pdftops.hlp +231 -0
- data/pdf2json-0.52-source/doc/pdftotext.1 +137 -0
- data/pdf2json-0.52-source/doc/pdftotext.cat +120 -0
- data/pdf2json-0.52-source/doc/pdftotext.hlp +133 -0
- data/pdf2json-0.52-source/doc/sample-xpdfrc +91 -0
- data/pdf2json-0.52-source/doc/xpdf.1 +513 -0
- data/pdf2json-0.52-source/doc/xpdf.cat +476 -0
- data/pdf2json-0.52-source/doc/xpdf.hlp +489 -0
- data/pdf2json-0.52-source/doc/xpdfrc.5 +480 -0
- data/pdf2json-0.52-source/doc/xpdfrc.cat +474 -0
- data/pdf2json-0.52-source/doc/xpdfrc.hlp +479 -0
- data/pdf2json-0.52-source/fofi/.DS_Store +0 -0
- data/pdf2json-0.52-source/fofi/FoFiBase.cc +156 -0
- data/pdf2json-0.52-source/fofi/FoFiBase.h +57 -0
- data/pdf2json-0.52-source/fofi/FoFiBase.o +0 -0
- data/pdf2json-0.52-source/fofi/FoFiEncodings.cc +994 -0
- data/pdf2json-0.52-source/fofi/FoFiEncodings.h +36 -0
- data/pdf2json-0.52-source/fofi/FoFiEncodings.o +0 -0
- data/pdf2json-0.52-source/fofi/FoFiTrueType.cc +2027 -0
- data/pdf2json-0.52-source/fofi/FoFiTrueType.h +174 -0
- data/pdf2json-0.52-source/fofi/FoFiTrueType.o +0 -0
- data/pdf2json-0.52-source/fofi/FoFiType1.cc +252 -0
- data/pdf2json-0.52-source/fofi/FoFiType1.h +59 -0
- data/pdf2json-0.52-source/fofi/FoFiType1.o +0 -0
- data/pdf2json-0.52-source/fofi/FoFiType1C.cc +2603 -0
- data/pdf2json-0.52-source/fofi/FoFiType1C.h +233 -0
- data/pdf2json-0.52-source/fofi/FoFiType1C.o +0 -0
- data/pdf2json-0.52-source/fofi/Makefile +70 -0
- data/pdf2json-0.52-source/fofi/Makefile.dep +0 -0
- data/pdf2json-0.52-source/fofi/Makefile.in +70 -0
- data/pdf2json-0.52-source/fofi/libfofi.a +0 -0
- data/pdf2json-0.52-source/fofi/vms_make.com +0 -0
- data/pdf2json-0.52-source/freetype.win32/.DS_Store +0 -0
- data/pdf2json-0.52-source/freetype.win32/include/.DS_Store +0 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftconfig.h +528 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftheader.h +780 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftmodule.h +32 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftoption.h +733 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftstdlib.h +173 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/freetype.h +3919 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftadvanc.h +179 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbbox.h +94 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbdf.h +209 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbitmap.h +227 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftcache.h +1128 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftchapters.h +103 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftcid.h +166 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/fterrdef.h +244 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/fterrors.h +206 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgasp.h +120 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftglyph.h +613 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgxval.h +358 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgzip.h +102 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftimage.h +1313 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftincrem.h +353 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlcdfil.h +213 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlist.h +277 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlzw.h +99 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmac.h +274 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmm.h +378 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmodapi.h +483 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmoderr.h +155 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftotval.h +203 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftoutln.h +537 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftpfr.h +172 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftrender.h +230 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsizes.h +159 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsnames.h +200 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftstroke.h +716 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsynth.h +80 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsystem.h +347 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/fttrigon.h +350 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/fttypes.h +588 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftwinfnt.h +274 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ftxf86.h +83 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/autohint.h +231 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftcalc.h +179 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftdebug.h +250 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftdriver.h +422 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftgloadr.h +168 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftmemory.h +380 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftobjs.h +1428 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftpic.h +67 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftrfork.h +196 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftserv.h +620 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftstream.h +539 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/fttrace.h +139 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftvalid.h +150 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/internal.h +51 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/pcftypes.h +56 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/psaux.h +873 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/pshints.h +712 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svbdf.h +77 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svcid.h +83 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svgldict.h +82 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svgxval.h +72 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svkern.h +51 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svmm.h +104 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svotval.h +55 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpfr.h +66 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpostnm.h +79 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpscmap.h +164 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpsinfo.h +92 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svsfnt.h +102 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svttcmap.h +106 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svtteng.h +53 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svttglyf.h +67 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svwinfnt.h +50 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svxf86nm.h +55 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/sfnt.h +897 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/t1types.h +270 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/tttypes.h +1543 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/t1tables.h +504 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ttnameid.h +1247 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/tttables.h +759 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/tttags.h +107 -0
- data/pdf2json-0.52-source/freetype.win32/include/freetype/ttunpat.h +59 -0
- data/pdf2json-0.52-source/freetype.win32/include/ft2build.h +39 -0
- data/pdf2json-0.52-source/freetype.win32/lib/freetype_a.lib +0 -0
- data/pdf2json-0.52-source/goo/.DS_Store +0 -0
- data/pdf2json-0.52-source/goo/FixedPoint.cc +118 -0
- data/pdf2json-0.52-source/goo/FixedPoint.h +155 -0
- data/pdf2json-0.52-source/goo/FixedPoint.o +0 -0
- data/pdf2json-0.52-source/goo/GHash.cc +380 -0
- data/pdf2json-0.52-source/goo/GHash.h +78 -0
- data/pdf2json-0.52-source/goo/GHash.o +0 -0
- data/pdf2json-0.52-source/goo/GList.cc +97 -0
- data/pdf2json-0.52-source/goo/GList.h +96 -0
- data/pdf2json-0.52-source/goo/GList.o +0 -0
- data/pdf2json-0.52-source/goo/GMutex.h +49 -0
- data/pdf2json-0.52-source/goo/GString.cc +724 -0
- data/pdf2json-0.52-source/goo/GString.cc.fixed +718 -0
- data/pdf2json-0.52-source/goo/GString.h +136 -0
- data/pdf2json-0.52-source/goo/GString.o +0 -0
- data/pdf2json-0.52-source/goo/ImgWriter.o +0 -0
- data/pdf2json-0.52-source/goo/JpegWriter.o +0 -0
- data/pdf2json-0.52-source/goo/Makefile +72 -0
- data/pdf2json-0.52-source/goo/Makefile.dep +0 -0
- data/pdf2json-0.52-source/goo/Makefile.in +72 -0
- data/pdf2json-0.52-source/goo/PNGWriter.o +0 -0
- data/pdf2json-0.52-source/goo/gfile.cc +731 -0
- data/pdf2json-0.52-source/goo/gfile.h +138 -0
- data/pdf2json-0.52-source/goo/gfile.o +0 -0
- data/pdf2json-0.52-source/goo/gmem.cc +264 -0
- data/pdf2json-0.52-source/goo/gmem.h +79 -0
- data/pdf2json-0.52-source/goo/gmem.o +0 -0
- data/pdf2json-0.52-source/goo/gmempp.cc +32 -0
- data/pdf2json-0.52-source/goo/gmempp.o +0 -0
- data/pdf2json-0.52-source/goo/gtypes.h +29 -0
- data/pdf2json-0.52-source/goo/libGoo.a +0 -0
- data/pdf2json-0.52-source/goo/parseargs.c +190 -0
- data/pdf2json-0.52-source/goo/parseargs.h +71 -0
- data/pdf2json-0.52-source/goo/parseargs.o +0 -0
- data/pdf2json-0.52-source/goo/vms_directory.c +214 -0
- data/pdf2json-0.52-source/goo/vms_dirent.h +67 -0
- data/pdf2json-0.52-source/goo/vms_make.com +82 -0
- data/pdf2json-0.52-source/goo/vms_sys_dirent.h +54 -0
- data/pdf2json-0.52-source/goo/vms_unix_time.h +102 -0
- data/pdf2json-0.52-source/goo/vms_unix_times.c +42 -0
- data/pdf2json-0.52-source/goo/vms_unlink.c +22 -0
- data/pdf2json-0.52-source/ms_make.bat +199 -0
- data/pdf2json-0.52-source/splash/.DS_Store +0 -0
- data/pdf2json-0.52-source/splash/Makefile +103 -0
- data/pdf2json-0.52-source/splash/Makefile.dep +0 -0
- data/pdf2json-0.52-source/splash/Makefile.in +103 -0
- data/pdf2json-0.52-source/splash/Splash.cc +3310 -0
- data/pdf2json-0.52-source/splash/Splash.h +293 -0
- data/pdf2json-0.52-source/splash/Splash.o +0 -0
- data/pdf2json-0.52-source/splash/SplashBitmap.cc +188 -0
- data/pdf2json-0.52-source/splash/SplashBitmap.h +64 -0
- data/pdf2json-0.52-source/splash/SplashBitmap.o +0 -0
- data/pdf2json-0.52-source/splash/SplashClip.cc +382 -0
- data/pdf2json-0.52-source/splash/SplashClip.h +107 -0
- data/pdf2json-0.52-source/splash/SplashClip.o +0 -0
- data/pdf2json-0.52-source/splash/SplashErrorCodes.h +32 -0
- data/pdf2json-0.52-source/splash/SplashFTFont.cc +357 -0
- data/pdf2json-0.52-source/splash/SplashFTFont.h +58 -0
- data/pdf2json-0.52-source/splash/SplashFTFont.o +0 -0
- data/pdf2json-0.52-source/splash/SplashFTFontEngine.cc +179 -0
- data/pdf2json-0.52-source/splash/SplashFTFontEngine.h +65 -0
- data/pdf2json-0.52-source/splash/SplashFTFontEngine.o +0 -0
- data/pdf2json-0.52-source/splash/SplashFTFontFile.cc +114 -0
- data/pdf2json-0.52-source/splash/SplashFTFontFile.h +73 -0
- data/pdf2json-0.52-source/splash/SplashFTFontFile.o +0 -0
- data/pdf2json-0.52-source/splash/SplashFont.cc +176 -0
- data/pdf2json-0.52-source/splash/SplashFont.h +104 -0
- data/pdf2json-0.52-source/splash/SplashFont.o +0 -0
- data/pdf2json-0.52-source/splash/SplashFontEngine.cc +317 -0
- data/pdf2json-0.52-source/splash/SplashFontEngine.h +91 -0
- data/pdf2json-0.52-source/splash/SplashFontEngine.o +0 -0
- data/pdf2json-0.52-source/splash/SplashFontFile.cc +55 -0
- data/pdf2json-0.52-source/splash/SplashFontFile.h +60 -0
- data/pdf2json-0.52-source/splash/SplashFontFile.o +0 -0
- data/pdf2json-0.52-source/splash/SplashFontFileID.cc +23 -0
- data/pdf2json-0.52-source/splash/SplashFontFileID.h +30 -0
- data/pdf2json-0.52-source/splash/SplashFontFileID.o +0 -0
- data/pdf2json-0.52-source/splash/SplashGlyphBitmap.h +26 -0
- data/pdf2json-0.52-source/splash/SplashMath.h +89 -0
- data/pdf2json-0.52-source/splash/SplashPath.cc +184 -0
- data/pdf2json-0.52-source/splash/SplashPath.h +121 -0
- data/pdf2json-0.52-source/splash/SplashPath.o +0 -0
- data/pdf2json-0.52-source/splash/SplashPattern.cc +40 -0
- data/pdf2json-0.52-source/splash/SplashPattern.h +65 -0
- data/pdf2json-0.52-source/splash/SplashPattern.o +0 -0
- data/pdf2json-0.52-source/splash/SplashScreen.cc +383 -0
- data/pdf2json-0.52-source/splash/SplashScreen.h +56 -0
- data/pdf2json-0.52-source/splash/SplashScreen.o +0 -0
- data/pdf2json-0.52-source/splash/SplashState.cc +165 -0
- data/pdf2json-0.52-source/splash/SplashState.h +103 -0
- data/pdf2json-0.52-source/splash/SplashState.o +0 -0
- data/pdf2json-0.52-source/splash/SplashT1Font.cc +287 -0
- data/pdf2json-0.52-source/splash/SplashT1Font.h +57 -0
- data/pdf2json-0.52-source/splash/SplashT1Font.o +0 -0
- data/pdf2json-0.52-source/splash/SplashT1FontEngine.cc +124 -0
- data/pdf2json-0.52-source/splash/SplashT1FontEngine.h +53 -0
- data/pdf2json-0.52-source/splash/SplashT1FontEngine.o +0 -0
- data/pdf2json-0.52-source/splash/SplashT1FontFile.cc +97 -0
- data/pdf2json-0.52-source/splash/SplashT1FontFile.h +58 -0
- data/pdf2json-0.52-source/splash/SplashT1FontFile.o +0 -0
- data/pdf2json-0.52-source/splash/SplashTypes.h +132 -0
- data/pdf2json-0.52-source/splash/SplashXPath.cc +438 -0
- data/pdf2json-0.52-source/splash/SplashXPath.h +100 -0
- data/pdf2json-0.52-source/splash/SplashXPath.o +0 -0
- data/pdf2json-0.52-source/splash/SplashXPathScanner.cc +428 -0
- data/pdf2json-0.52-source/splash/SplashXPathScanner.h +87 -0
- data/pdf2json-0.52-source/splash/SplashXPathScanner.o +0 -0
- data/pdf2json-0.52-source/splash/libsplash.a +0 -0
- data/pdf2json-0.52-source/splash/vms_make.com +0 -0
- data/pdf2json-0.52-source/src/.DS_Store +0 -0
- data/pdf2json-0.52-source/src/GVector.h +101 -0
- data/pdf2json-0.52-source/src/ImgOutputDev.cc +1243 -0
- data/pdf2json-0.52-source/src/ImgOutputDev.h +307 -0
- data/pdf2json-0.52-source/src/ImgOutputDev.o +0 -0
- data/pdf2json-0.52-source/src/Makefile +68 -0
- data/pdf2json-0.52-source/src/Makefile.in +68 -0
- data/pdf2json-0.52-source/src/XmlFonts.cc +367 -0
- data/pdf2json-0.52-source/src/XmlFonts.h +91 -0
- data/pdf2json-0.52-source/src/XmlFonts.o +0 -0
- data/pdf2json-0.52-source/src/XmlLinks.cc +101 -0
- data/pdf2json-0.52-source/src/XmlLinks.h +54 -0
- data/pdf2json-0.52-source/src/XmlLinks.o +0 -0
- data/pdf2json-0.52-source/src/pdf2json +0 -0
- data/pdf2json-0.52-source/src/pdf2json.cc +343 -0
- data/pdf2json-0.52-source/src/pdf2json.o +0 -0
- data/pdf2json-0.52-source/src/pdf2xml.dtd +22 -0
- data/pdf2json-0.52-source/src/pdf2xmljson.dtd +9 -0
- data/pdf2json-0.52-source/xpdf/.DS_Store +0 -0
- data/pdf2json-0.52-source/xpdf/Annot.cc +1556 -0
- data/pdf2json-0.52-source/xpdf/Annot.h +142 -0
- data/pdf2json-0.52-source/xpdf/Annot.o +0 -0
- data/pdf2json-0.52-source/xpdf/Array.cc +73 -0
- data/pdf2json-0.52-source/xpdf/Array.h +58 -0
- data/pdf2json-0.52-source/xpdf/Array.o +0 -0
- data/pdf2json-0.52-source/xpdf/BuiltinFont.cc +65 -0
- data/pdf2json-0.52-source/xpdf/BuiltinFont.h +57 -0
- data/pdf2json-0.52-source/xpdf/BuiltinFont.o +0 -0
- data/pdf2json-0.52-source/xpdf/BuiltinFontTables.cc +4284 -0
- data/pdf2json-0.52-source/xpdf/BuiltinFontTables.h +23 -0
- data/pdf2json-0.52-source/xpdf/BuiltinFontTables.o +0 -0
- data/pdf2json-0.52-source/xpdf/CMap.cc +408 -0
- data/pdf2json-0.52-source/xpdf/CMap.h +102 -0
- data/pdf2json-0.52-source/xpdf/CMap.o +0 -0
- data/pdf2json-0.52-source/xpdf/Catalog.cc +374 -0
- data/pdf2json-0.52-source/xpdf/Catalog.h +97 -0
- data/pdf2json-0.52-source/xpdf/Catalog.o +0 -0
- data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.cc +540 -0
- data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.h +117 -0
- data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.o +0 -0
- data/pdf2json-0.52-source/xpdf/CharTypes.h +24 -0
- data/pdf2json-0.52-source/xpdf/CompactFontTables.h +464 -0
- data/pdf2json-0.52-source/xpdf/CoreOutputDev.cc +61 -0
- data/pdf2json-0.52-source/xpdf/CoreOutputDev.h +61 -0
- data/pdf2json-0.52-source/xpdf/Decrypt.cc +776 -0
- data/pdf2json-0.52-source/xpdf/Decrypt.h +95 -0
- data/pdf2json-0.52-source/xpdf/Decrypt.o +0 -0
- data/pdf2json-0.52-source/xpdf/Dict.cc +95 -0
- data/pdf2json-0.52-source/xpdf/Dict.h +77 -0
- data/pdf2json-0.52-source/xpdf/Dict.o +0 -0
- data/pdf2json-0.52-source/xpdf/Error.cc +38 -0
- data/pdf2json-0.52-source/xpdf/Error.h +23 -0
- data/pdf2json-0.52-source/xpdf/Error.o +0 -0
- data/pdf2json-0.52-source/xpdf/ErrorCodes.h +36 -0
- data/pdf2json-0.52-source/xpdf/FontEncodingTables.cc +1824 -0
- data/pdf2json-0.52-source/xpdf/FontEncodingTables.h +20 -0
- data/pdf2json-0.52-source/xpdf/FontEncodingTables.o +0 -0
- data/pdf2json-0.52-source/xpdf/Function.cc +1573 -0
- data/pdf2json-0.52-source/xpdf/Function.h +229 -0
- data/pdf2json-0.52-source/xpdf/Function.o +0 -0
- data/pdf2json-0.52-source/xpdf/Gfx.cc +4187 -0
- data/pdf2json-0.52-source/xpdf/Gfx.h +312 -0
- data/pdf2json-0.52-source/xpdf/Gfx.o +0 -0
- data/pdf2json-0.52-source/xpdf/GfxFont.cc +1568 -0
- data/pdf2json-0.52-source/xpdf/GfxFont.h +320 -0
- data/pdf2json-0.52-source/xpdf/GfxFont.o +0 -0
- data/pdf2json-0.52-source/xpdf/GfxState.cc +4137 -0
- data/pdf2json-0.52-source/xpdf/GfxState.h +1244 -0
- data/pdf2json-0.52-source/xpdf/GfxState.o +0 -0
- data/pdf2json-0.52-source/xpdf/GlobalParams.cc +2924 -0
- data/pdf2json-0.52-source/xpdf/GlobalParams.cc.old +2908 -0
- data/pdf2json-0.52-source/xpdf/GlobalParams.h +466 -0
- data/pdf2json-0.52-source/xpdf/GlobalParams.h.old +463 -0
- data/pdf2json-0.52-source/xpdf/GlobalParams.o +0 -0
- data/pdf2json-0.52-source/xpdf/ImageOutputDev.cc +195 -0
- data/pdf2json-0.52-source/xpdf/ImageOutputDev.h +76 -0
- data/pdf2json-0.52-source/xpdf/ImageOutputDev.o +0 -0
- data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.cc +322 -0
- data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.h +109 -0
- data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.o +0 -0
- data/pdf2json-0.52-source/xpdf/JBIG2Stream.cc +3413 -0
- data/pdf2json-0.52-source/xpdf/JBIG2Stream.h +145 -0
- data/pdf2json-0.52-source/xpdf/JBIG2Stream.o +0 -0
- data/pdf2json-0.52-source/xpdf/JPXStream.cc +3144 -0
- data/pdf2json-0.52-source/xpdf/JPXStream.h +351 -0
- data/pdf2json-0.52-source/xpdf/JPXStream.o +0 -0
- data/pdf2json-0.52-source/xpdf/Lexer.cc +485 -0
- data/pdf2json-0.52-source/xpdf/Lexer.h +80 -0
- data/pdf2json-0.52-source/xpdf/Lexer.o +0 -0
- data/pdf2json-0.52-source/xpdf/Link.cc +806 -0
- data/pdf2json-0.52-source/xpdf/Link.cc.old +784 -0
- data/pdf2json-0.52-source/xpdf/Link.h +415 -0
- data/pdf2json-0.52-source/xpdf/Link.h.old +369 -0
- data/pdf2json-0.52-source/xpdf/Link.o +0 -0
- data/pdf2json-0.52-source/xpdf/Makefile +232 -0
- data/pdf2json-0.52-source/xpdf/Makefile.dep +0 -0
- data/pdf2json-0.52-source/xpdf/Makefile.in +232 -0
- data/pdf2json-0.52-source/xpdf/NameToCharCode.cc +116 -0
- data/pdf2json-0.52-source/xpdf/NameToCharCode.h +42 -0
- data/pdf2json-0.52-source/xpdf/NameToCharCode.o +0 -0
- data/pdf2json-0.52-source/xpdf/NameToUnicodeTable.h +1097 -0
- data/pdf2json-0.52-source/xpdf/Object.cc +231 -0
- data/pdf2json-0.52-source/xpdf/Object.h +303 -0
- data/pdf2json-0.52-source/xpdf/Object.o +0 -0
- data/pdf2json-0.52-source/xpdf/Outline.cc +151 -0
- data/pdf2json-0.52-source/xpdf/Outline.h +76 -0
- data/pdf2json-0.52-source/xpdf/Outline.o +0 -0
- data/pdf2json-0.52-source/xpdf/OutputDev.cc +131 -0
- data/pdf2json-0.52-source/xpdf/OutputDev.h +253 -0
- data/pdf2json-0.52-source/xpdf/OutputDev.o +0 -0
- data/pdf2json-0.52-source/xpdf/PDFCore.cc +2044 -0
- data/pdf2json-0.52-source/xpdf/PDFCore.h +321 -0
- data/pdf2json-0.52-source/xpdf/PDFDoc.cc +404 -0
- data/pdf2json-0.52-source/xpdf/PDFDoc.h +183 -0
- data/pdf2json-0.52-source/xpdf/PDFDoc.o +0 -0
- data/pdf2json-0.52-source/xpdf/PDFDocEncoding.cc +44 -0
- data/pdf2json-0.52-source/xpdf/PDFDocEncoding.h +16 -0
- data/pdf2json-0.52-source/xpdf/PDFDocEncoding.o +0 -0
- data/pdf2json-0.52-source/xpdf/PSOutputDev.cc +6224 -0
- data/pdf2json-0.52-source/xpdf/PSOutputDev.h +395 -0
- data/pdf2json-0.52-source/xpdf/PSOutputDev.o +0 -0
- data/pdf2json-0.52-source/xpdf/PSTokenizer.cc +135 -0
- data/pdf2json-0.52-source/xpdf/PSTokenizer.h +41 -0
- data/pdf2json-0.52-source/xpdf/PSTokenizer.o +0 -0
- data/pdf2json-0.52-source/xpdf/Page.cc +454 -0
- data/pdf2json-0.52-source/xpdf/Page.h +187 -0
- data/pdf2json-0.52-source/xpdf/Page.o +0 -0
- data/pdf2json-0.52-source/xpdf/Parser.cc +227 -0
- data/pdf2json-0.52-source/xpdf/Parser.h +59 -0
- data/pdf2json-0.52-source/xpdf/Parser.o +0 -0
- data/pdf2json-0.52-source/xpdf/PreScanOutputDev.cc +257 -0
- data/pdf2json-0.52-source/xpdf/PreScanOutputDev.h +130 -0
- data/pdf2json-0.52-source/xpdf/PreScanOutputDev.o +0 -0
- data/pdf2json-0.52-source/xpdf/SecurityHandler.cc +390 -0
- data/pdf2json-0.52-source/xpdf/SecurityHandler.h +160 -0
- data/pdf2json-0.52-source/xpdf/SecurityHandler.o +0 -0
- data/pdf2json-0.52-source/xpdf/SplashOutputDev.cc +2845 -0
- data/pdf2json-0.52-source/xpdf/SplashOutputDev.h +247 -0
- data/pdf2json-0.52-source/xpdf/SplashOutputDev.o +0 -0
- data/pdf2json-0.52-source/xpdf/Stream-CCITT.h +459 -0
- data/pdf2json-0.52-source/xpdf/Stream.cc +4627 -0
- data/pdf2json-0.52-source/xpdf/Stream.h +858 -0
- data/pdf2json-0.52-source/xpdf/Stream.o +0 -0
- data/pdf2json-0.52-source/xpdf/TextOutputDev.cc +4090 -0
- data/pdf2json-0.52-source/xpdf/TextOutputDev.h +661 -0
- data/pdf2json-0.52-source/xpdf/TextOutputDev.o +0 -0
- data/pdf2json-0.52-source/xpdf/UTF8.h +56 -0
- data/pdf2json-0.52-source/xpdf/UnicodeMap.cc +302 -0
- data/pdf2json-0.52-source/xpdf/UnicodeMap.cc.old +293 -0
- data/pdf2json-0.52-source/xpdf/UnicodeMap.h +135 -0
- data/pdf2json-0.52-source/xpdf/UnicodeMap.h.old +123 -0
- data/pdf2json-0.52-source/xpdf/UnicodeMap.o +0 -0
- data/pdf2json-0.52-source/xpdf/UnicodeMapTables.h +361 -0
- data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.cc +949 -0
- data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.h +20 -0
- data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.o +0 -0
- data/pdf2json-0.52-source/xpdf/XPDFApp.cc +447 -0
- data/pdf2json-0.52-source/xpdf/XPDFApp.h +114 -0
- data/pdf2json-0.52-source/xpdf/XPDFCore.cc +1655 -0
- data/pdf2json-0.52-source/xpdf/XPDFCore.h +251 -0
- data/pdf2json-0.52-source/xpdf/XPDFTree.cc +931 -0
- data/pdf2json-0.52-source/xpdf/XPDFTree.h +45 -0
- data/pdf2json-0.52-source/xpdf/XPDFTreeP.h +87 -0
- data/pdf2json-0.52-source/xpdf/XPDFViewer.cc +3488 -0
- data/pdf2json-0.52-source/xpdf/XPDFViewer.h +352 -0
- data/pdf2json-0.52-source/xpdf/XRef.cc +896 -0
- data/pdf2json-0.52-source/xpdf/XRef.h +133 -0
- data/pdf2json-0.52-source/xpdf/XRef.o +0 -0
- data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.cc +262 -0
- data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.h +341 -0
- data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.o +0 -0
- data/pdf2json-0.52-source/xpdf/about-text.h +48 -0
- data/pdf2json-0.52-source/xpdf/about.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/backArrow.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/backArrowDis.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/config.h +112 -0
- data/pdf2json-0.52-source/xpdf/dblLeftArrow.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/dblLeftArrowDis.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/dblRightArrow.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/dblRightArrowDis.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/find.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/findDis.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/forwardArrow.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/forwardArrowDis.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/leftArrow.xbm +5 -0
- data/pdf2json-0.52-source/xpdf/leftArrowDis.xbm +5 -0
- data/pdf2json-0.52-source/xpdf/libXpdf.a +0 -0
- data/pdf2json-0.52-source/xpdf/pdffonts +0 -0
- data/pdf2json-0.52-source/xpdf/pdffonts.cc +298 -0
- data/pdf2json-0.52-source/xpdf/pdffonts.o +0 -0
- data/pdf2json-0.52-source/xpdf/pdfimages +0 -0
- data/pdf2json-0.52-source/xpdf/pdfimages.cc +155 -0
- data/pdf2json-0.52-source/xpdf/pdfimages.o +0 -0
- data/pdf2json-0.52-source/xpdf/pdfinfo +0 -0
- data/pdf2json-0.52-source/xpdf/pdfinfo.cc +387 -0
- data/pdf2json-0.52-source/xpdf/pdfinfo.o +0 -0
- data/pdf2json-0.52-source/xpdf/pdftoppm.cc +203 -0
- data/pdf2json-0.52-source/xpdf/pdftops +0 -0
- data/pdf2json-0.52-source/xpdf/pdftops.cc +344 -0
- data/pdf2json-0.52-source/xpdf/pdftops.o +0 -0
- data/pdf2json-0.52-source/xpdf/pdftotext +0 -0
- data/pdf2json-0.52-source/xpdf/pdftotext.cc +333 -0
- data/pdf2json-0.52-source/xpdf/pdftotext.o +0 -0
- data/pdf2json-0.52-source/xpdf/print.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/printDis.xbm +6 -0
- data/pdf2json-0.52-source/xpdf/rightArrow.xbm +5 -0
- data/pdf2json-0.52-source/xpdf/rightArrowDis.xbm +5 -0
- data/pdf2json-0.52-source/xpdf/vms_make.com +129 -0
- data/pdf2json-0.52-source/xpdf/xpdf.cc +344 -0
- data/pdf2json-0.52-source/xpdf/xpdfIcon.xpm +62 -0
- data/pdf2json.gemspec +29 -0
- metadata +518 -0
@@ -0,0 +1,351 @@
|
|
1
|
+
//========================================================================
|
2
|
+
//
|
3
|
+
// JPXStream.h
|
4
|
+
//
|
5
|
+
// Copyright 2002-2003 Glyph & Cog, LLC
|
6
|
+
//
|
7
|
+
//========================================================================
|
8
|
+
|
9
|
+
#ifndef JPXSTREAM_H
|
10
|
+
#define JPXSTREAM_H
|
11
|
+
|
12
|
+
#include <aconf.h>
|
13
|
+
|
14
|
+
#ifdef USE_GCC_PRAGMAS
|
15
|
+
#pragma interface
|
16
|
+
#endif
|
17
|
+
|
18
|
+
#include "gtypes.h"
|
19
|
+
#include "Object.h"
|
20
|
+
#include "Stream.h"
|
21
|
+
|
22
|
+
class JArithmeticDecoder;
|
23
|
+
class JArithmeticDecoderStats;
|
24
|
+
|
25
|
+
//------------------------------------------------------------------------
|
26
|
+
|
27
|
+
enum JPXColorSpaceType {
|
28
|
+
jpxCSBiLevel = 0,
|
29
|
+
jpxCSYCbCr1 = 1,
|
30
|
+
jpxCSYCbCr2 = 3,
|
31
|
+
jpxCSYCBCr3 = 4,
|
32
|
+
jpxCSPhotoYCC = 9,
|
33
|
+
jpxCSCMY = 11,
|
34
|
+
jpxCSCMYK = 12,
|
35
|
+
jpxCSYCCK = 13,
|
36
|
+
jpxCSCIELab = 14,
|
37
|
+
jpxCSsRGB = 16,
|
38
|
+
jpxCSGrayscale = 17,
|
39
|
+
jpxCSBiLevel2 = 18,
|
40
|
+
jpxCSCIEJab = 19,
|
41
|
+
jpxCSCISesRGB = 20,
|
42
|
+
jpxCSROMMRGB = 21,
|
43
|
+
jpxCSsRGBYCbCr = 22,
|
44
|
+
jpxCSYPbPr1125 = 23,
|
45
|
+
jpxCSYPbPr1250 = 24
|
46
|
+
};
|
47
|
+
|
48
|
+
struct JPXColorSpecCIELab {
|
49
|
+
Guint rl, ol, ra, oa, rb, ob, il;
|
50
|
+
};
|
51
|
+
|
52
|
+
struct JPXColorSpecEnumerated {
|
53
|
+
JPXColorSpaceType type; // color space type
|
54
|
+
union {
|
55
|
+
JPXColorSpecCIELab cieLab;
|
56
|
+
};
|
57
|
+
};
|
58
|
+
|
59
|
+
struct JPXColorSpec {
|
60
|
+
Guint meth; // method
|
61
|
+
int prec; // precedence
|
62
|
+
union {
|
63
|
+
JPXColorSpecEnumerated enumerated;
|
64
|
+
};
|
65
|
+
};
|
66
|
+
|
67
|
+
//------------------------------------------------------------------------
|
68
|
+
|
69
|
+
struct JPXPalette {
|
70
|
+
Guint nEntries; // number of entries in the palette
|
71
|
+
Guint nComps; // number of components in each entry
|
72
|
+
Guint *bpc; // bits per component, for each component
|
73
|
+
int *c; // color data:
|
74
|
+
// c[i*nComps+j] = entry i, component j
|
75
|
+
};
|
76
|
+
|
77
|
+
//------------------------------------------------------------------------
|
78
|
+
|
79
|
+
struct JPXCompMap {
|
80
|
+
Guint nChannels; // number of channels
|
81
|
+
Guint *comp; // codestream components mapped to each channel
|
82
|
+
Guint *type; // 0 for direct use, 1 for palette mapping
|
83
|
+
Guint *pComp; // palette components to use
|
84
|
+
};
|
85
|
+
|
86
|
+
//------------------------------------------------------------------------
|
87
|
+
|
88
|
+
struct JPXChannelDefn {
|
89
|
+
Guint nChannels; // number of channels
|
90
|
+
Guint *idx; // channel indexes
|
91
|
+
Guint *type; // channel types
|
92
|
+
Guint *assoc; // channel associations
|
93
|
+
};
|
94
|
+
|
95
|
+
//------------------------------------------------------------------------
|
96
|
+
|
97
|
+
struct JPXTagTreeNode {
|
98
|
+
GBool finished; // true if this node is finished
|
99
|
+
Guint val; // current value
|
100
|
+
};
|
101
|
+
|
102
|
+
//------------------------------------------------------------------------
|
103
|
+
|
104
|
+
struct JPXCoeff {
|
105
|
+
Gushort flags; // flag bits
|
106
|
+
Gushort len; // number of significant bits in mag
|
107
|
+
Guint mag; // magnitude value
|
108
|
+
};
|
109
|
+
|
110
|
+
// coefficient flags
|
111
|
+
#define jpxCoeffSignificantB 0
|
112
|
+
#define jpxCoeffTouchedB 1
|
113
|
+
#define jpxCoeffFirstMagRefB 2
|
114
|
+
#define jpxCoeffSignB 7
|
115
|
+
#define jpxCoeffSignificant (1 << jpxCoeffSignificantB)
|
116
|
+
#define jpxCoeffTouched (1 << jpxCoeffTouchedB)
|
117
|
+
#define jpxCoeffFirstMagRef (1 << jpxCoeffFirstMagRefB)
|
118
|
+
#define jpxCoeffSign (1 << jpxCoeffSignB)
|
119
|
+
|
120
|
+
//------------------------------------------------------------------------
|
121
|
+
|
122
|
+
struct JPXCodeBlock {
|
123
|
+
//----- size
|
124
|
+
Guint x0, y0, x1, y1; // bounds
|
125
|
+
|
126
|
+
//----- persistent state
|
127
|
+
GBool seen; // true if this code-block has already
|
128
|
+
// been seen
|
129
|
+
Guint lBlock; // base number of bits used for pkt data length
|
130
|
+
Guint nextPass; // next coding pass
|
131
|
+
|
132
|
+
//---- info from first packet
|
133
|
+
Guint nZeroBitPlanes; // number of zero bit planes
|
134
|
+
|
135
|
+
//----- info for the current packet
|
136
|
+
Guint included; // code-block inclusion in this packet:
|
137
|
+
// 0=not included, 1=included
|
138
|
+
Guint nCodingPasses; // number of coding passes in this pkt
|
139
|
+
Guint dataLen; // pkt data length
|
140
|
+
|
141
|
+
//----- coefficient data
|
142
|
+
JPXCoeff *coeffs; // the coefficients
|
143
|
+
JArithmeticDecoder // arithmetic decoder
|
144
|
+
*arithDecoder;
|
145
|
+
JArithmeticDecoderStats // arithmetic decoder stats
|
146
|
+
*stats;
|
147
|
+
};
|
148
|
+
|
149
|
+
//------------------------------------------------------------------------
|
150
|
+
|
151
|
+
struct JPXSubband {
|
152
|
+
//----- computed
|
153
|
+
Guint x0, y0, x1, y1; // bounds
|
154
|
+
Guint nXCBs, nYCBs; // number of code-blocks in the x and y
|
155
|
+
// directions
|
156
|
+
|
157
|
+
//----- tag trees
|
158
|
+
Guint maxTTLevel; // max tag tree level
|
159
|
+
JPXTagTreeNode *inclusion; // inclusion tag tree for each subband
|
160
|
+
JPXTagTreeNode *zeroBitPlane; // zero-bit plane tag tree for each
|
161
|
+
// subband
|
162
|
+
|
163
|
+
//----- children
|
164
|
+
JPXCodeBlock *cbs; // the code-blocks (len = nXCBs * nYCBs)
|
165
|
+
};
|
166
|
+
|
167
|
+
//------------------------------------------------------------------------
|
168
|
+
|
169
|
+
struct JPXPrecinct {
|
170
|
+
//----- computed
|
171
|
+
Guint x0, y0, x1, y1; // bounds of the precinct
|
172
|
+
|
173
|
+
//----- children
|
174
|
+
JPXSubband *subbands; // the subbands
|
175
|
+
};
|
176
|
+
|
177
|
+
//------------------------------------------------------------------------
|
178
|
+
|
179
|
+
struct JPXResLevel {
|
180
|
+
//----- from the COD and COC segments (main and tile)
|
181
|
+
Guint precinctWidth; // log2(precinct width)
|
182
|
+
Guint precinctHeight; // log2(precinct height)
|
183
|
+
|
184
|
+
//----- computed
|
185
|
+
Guint x0, y0, x1, y1; // bounds of the tile-comp (for this res level)
|
186
|
+
Guint bx0[3], by0[3], // subband bounds
|
187
|
+
bx1[3], by1[3];
|
188
|
+
|
189
|
+
//---- children
|
190
|
+
JPXPrecinct *precincts; // the precincts
|
191
|
+
};
|
192
|
+
|
193
|
+
//------------------------------------------------------------------------
|
194
|
+
|
195
|
+
struct JPXTileComp {
|
196
|
+
//----- from the SIZ segment
|
197
|
+
GBool sgned; // 1 for signed, 0 for unsigned
|
198
|
+
Guint prec; // precision, in bits
|
199
|
+
Guint hSep; // horizontal separation of samples
|
200
|
+
Guint vSep; // vertical separation of samples
|
201
|
+
|
202
|
+
//----- from the COD and COC segments (main and tile)
|
203
|
+
Guint style; // coding style parameter (Scod / Scoc)
|
204
|
+
Guint nDecompLevels; // number of decomposition levels
|
205
|
+
Guint codeBlockW; // log2(code-block width)
|
206
|
+
Guint codeBlockH; // log2(code-block height)
|
207
|
+
Guint codeBlockStyle; // code-block style
|
208
|
+
Guint transform; // wavelet transformation
|
209
|
+
|
210
|
+
//----- from the QCD and QCC segments (main and tile)
|
211
|
+
Guint quantStyle; // quantization style
|
212
|
+
Guint *quantSteps; // quantization step size for each subband
|
213
|
+
Guint nQuantSteps; // number of entries in quantSteps
|
214
|
+
|
215
|
+
//----- computed
|
216
|
+
Guint x0, y0, x1, y1; // bounds of the tile-comp, in ref coords
|
217
|
+
Guint cbW; // code-block width
|
218
|
+
Guint cbH; // code-block height
|
219
|
+
|
220
|
+
//----- image data
|
221
|
+
int *data; // the decoded image data
|
222
|
+
int *buf; // intermediate buffer for the inverse
|
223
|
+
// transform
|
224
|
+
|
225
|
+
//----- children
|
226
|
+
JPXResLevel *resLevels; // the resolution levels
|
227
|
+
// (len = nDecompLevels + 1)
|
228
|
+
};
|
229
|
+
|
230
|
+
//------------------------------------------------------------------------
|
231
|
+
|
232
|
+
struct JPXTile {
|
233
|
+
//----- from the COD segments (main and tile)
|
234
|
+
Guint progOrder; // progression order
|
235
|
+
Guint nLayers; // number of layers
|
236
|
+
Guint multiComp; // multiple component transformation
|
237
|
+
|
238
|
+
//----- computed
|
239
|
+
Guint x0, y0, x1, y1; // bounds of the tile, in ref coords
|
240
|
+
Guint maxNDecompLevels; // max number of decomposition levels used
|
241
|
+
// in any component in this tile
|
242
|
+
|
243
|
+
//----- progression order loop counters
|
244
|
+
Guint comp; // component
|
245
|
+
Guint res; // resolution level
|
246
|
+
Guint precinct; // precinct
|
247
|
+
Guint layer; // layer
|
248
|
+
|
249
|
+
//----- children
|
250
|
+
JPXTileComp *tileComps; // the tile-components (len = JPXImage.nComps)
|
251
|
+
};
|
252
|
+
|
253
|
+
//------------------------------------------------------------------------
|
254
|
+
|
255
|
+
struct JPXImage {
|
256
|
+
//----- from the SIZ segment
|
257
|
+
Guint xSize, ySize; // size of reference grid
|
258
|
+
Guint xOffset, yOffset; // image offset
|
259
|
+
Guint xTileSize, yTileSize; // size of tiles
|
260
|
+
Guint xTileOffset, // offset of first tile
|
261
|
+
yTileOffset;
|
262
|
+
Guint nComps; // number of components
|
263
|
+
|
264
|
+
//----- computed
|
265
|
+
Guint nXTiles; // number of tiles in x direction
|
266
|
+
Guint nYTiles; // number of tiles in y direction
|
267
|
+
|
268
|
+
//----- children
|
269
|
+
JPXTile *tiles; // the tiles (len = nXTiles * nYTiles)
|
270
|
+
};
|
271
|
+
|
272
|
+
//------------------------------------------------------------------------
|
273
|
+
|
274
|
+
class JPXStream: public FilterStream {
|
275
|
+
public:
|
276
|
+
|
277
|
+
JPXStream(Stream *strA);
|
278
|
+
virtual ~JPXStream();
|
279
|
+
virtual StreamKind getKind() { return strJPX; }
|
280
|
+
virtual void reset();
|
281
|
+
virtual void close();
|
282
|
+
virtual int getChar();
|
283
|
+
virtual int lookChar();
|
284
|
+
virtual GString *getPSFilter(int psLevel, char *indent);
|
285
|
+
virtual GBool isBinary(GBool last = gTrue);
|
286
|
+
virtual void getImageParams(int *bitsPerComponent,
|
287
|
+
StreamColorSpaceMode *csMode);
|
288
|
+
|
289
|
+
private:
|
290
|
+
|
291
|
+
void fillReadBuf();
|
292
|
+
void getImageParams2(int *bitsPerComponent, StreamColorSpaceMode *csMode);
|
293
|
+
GBool readBoxes();
|
294
|
+
GBool readColorSpecBox(Guint dataLen);
|
295
|
+
GBool readCodestream(Guint len);
|
296
|
+
GBool readTilePart();
|
297
|
+
GBool readTilePartData(Guint tileIdx,
|
298
|
+
Guint tilePartLen, GBool tilePartToEOC);
|
299
|
+
GBool readCodeBlockData(JPXTileComp *tileComp,
|
300
|
+
JPXResLevel *resLevel,
|
301
|
+
JPXPrecinct *precinct,
|
302
|
+
JPXSubband *subband,
|
303
|
+
Guint res, Guint sb,
|
304
|
+
JPXCodeBlock *cb);
|
305
|
+
void inverseTransform(JPXTileComp *tileComp);
|
306
|
+
void inverseTransformLevel(JPXTileComp *tileComp,
|
307
|
+
Guint r, JPXResLevel *resLevel,
|
308
|
+
Guint nx0, Guint ny0,
|
309
|
+
Guint nx1, Guint ny1);
|
310
|
+
void inverseTransform1D(JPXTileComp *tileComp,
|
311
|
+
int *data, Guint stride,
|
312
|
+
Guint i0, Guint i1);
|
313
|
+
GBool inverseMultiCompAndDC(JPXTile *tile);
|
314
|
+
GBool readBoxHdr(Guint *boxType, Guint *boxLen, Guint *dataLen);
|
315
|
+
int readMarkerHdr(int *segType, Guint *segLen);
|
316
|
+
GBool readUByte(Guint *x);
|
317
|
+
GBool readByte(int *x);
|
318
|
+
GBool readUWord(Guint *x);
|
319
|
+
GBool readULong(Guint *x);
|
320
|
+
GBool readNBytes(int nBytes, GBool signd, int *x);
|
321
|
+
GBool readBits(int nBits, Guint *x);
|
322
|
+
void startBitBuf(Guint byteCountA);
|
323
|
+
Guint finishBitBuf();
|
324
|
+
|
325
|
+
Guint nComps; // number of components
|
326
|
+
Guint *bpc; // bits per component, for each component
|
327
|
+
Guint width, height; // image size
|
328
|
+
GBool haveImgHdr; // set if a JP2/JPX image header has been
|
329
|
+
// found
|
330
|
+
JPXColorSpec cs; // color specification
|
331
|
+
GBool haveCS; // set if a color spec has been found
|
332
|
+
JPXPalette palette; // the palette
|
333
|
+
GBool havePalette; // set if a palette has been found
|
334
|
+
JPXCompMap compMap; // the component mapping
|
335
|
+
GBool haveCompMap; // set if a component mapping has been found
|
336
|
+
JPXChannelDefn channelDefn; // channel definition
|
337
|
+
GBool haveChannelDefn; // set if a channel defn has been found
|
338
|
+
|
339
|
+
JPXImage img; // JPEG2000 decoder data
|
340
|
+
Guint bitBuf; // buffer for bit reads
|
341
|
+
int bitBufLen; // number of bits in bitBuf
|
342
|
+
GBool bitBufSkip; // true if next bit should be skipped
|
343
|
+
// (for bit stuffing)
|
344
|
+
Guint byteCount; // number of available bytes left
|
345
|
+
|
346
|
+
Guint curX, curY, curComp; // current position for lookChar/getChar
|
347
|
+
Guint readBuf; // read buffer
|
348
|
+
Guint readBufLen; // number of valid bits in readBuf
|
349
|
+
};
|
350
|
+
|
351
|
+
#endif
|
Binary file
|
@@ -0,0 +1,485 @@
|
|
1
|
+
//========================================================================
|
2
|
+
//
|
3
|
+
// Lexer.cc
|
4
|
+
//
|
5
|
+
// Copyright 1996-2003 Glyph & Cog, LLC
|
6
|
+
//
|
7
|
+
//========================================================================
|
8
|
+
|
9
|
+
#include <aconf.h>
|
10
|
+
|
11
|
+
#ifdef USE_GCC_PRAGMAS
|
12
|
+
#pragma implementation
|
13
|
+
#endif
|
14
|
+
|
15
|
+
#include <stdlib.h>
|
16
|
+
#include <stddef.h>
|
17
|
+
#include <string.h>
|
18
|
+
#include <ctype.h>
|
19
|
+
#include "Lexer.h"
|
20
|
+
#include "Error.h"
|
21
|
+
|
22
|
+
//------------------------------------------------------------------------
|
23
|
+
|
24
|
+
// A '1' in this array means the character is white space. A '1' or
|
25
|
+
// '2' means the character ends a name or command.
|
26
|
+
static char specialChars[256] = {
|
27
|
+
1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x
|
28
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x
|
29
|
+
1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x
|
30
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x
|
31
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x
|
32
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x
|
33
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x
|
34
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x
|
35
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x
|
36
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x
|
37
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax
|
38
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx
|
39
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx
|
40
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx
|
41
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex
|
42
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx
|
43
|
+
};
|
44
|
+
|
45
|
+
//------------------------------------------------------------------------
|
46
|
+
// Lexer
|
47
|
+
//------------------------------------------------------------------------
|
48
|
+
|
49
|
+
Lexer::Lexer(XRef *xref, Stream *str) {
|
50
|
+
Object obj;
|
51
|
+
|
52
|
+
curStr.initStream(str);
|
53
|
+
streams = new Array(xref);
|
54
|
+
streams->add(curStr.copy(&obj));
|
55
|
+
strPtr = 0;
|
56
|
+
freeArray = gTrue;
|
57
|
+
curStr.streamReset();
|
58
|
+
}
|
59
|
+
|
60
|
+
Lexer::Lexer(XRef *xref, Object *obj) {
|
61
|
+
Object obj2;
|
62
|
+
|
63
|
+
if (obj->isStream()) {
|
64
|
+
streams = new Array(xref);
|
65
|
+
freeArray = gTrue;
|
66
|
+
streams->add(obj->copy(&obj2));
|
67
|
+
} else {
|
68
|
+
streams = obj->getArray();
|
69
|
+
freeArray = gFalse;
|
70
|
+
}
|
71
|
+
strPtr = 0;
|
72
|
+
if (streams->getLength() > 0) {
|
73
|
+
streams->get(strPtr, &curStr);
|
74
|
+
curStr.streamReset();
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
Lexer::~Lexer() {
|
79
|
+
if (!curStr.isNone()) {
|
80
|
+
curStr.streamClose();
|
81
|
+
curStr.free();
|
82
|
+
}
|
83
|
+
if (freeArray) {
|
84
|
+
delete streams;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
int Lexer::getChar() {
|
89
|
+
int c;
|
90
|
+
|
91
|
+
c = EOF;
|
92
|
+
while (!curStr.isNone() && (c = curStr.streamGetChar()) == EOF) {
|
93
|
+
curStr.streamClose();
|
94
|
+
curStr.free();
|
95
|
+
++strPtr;
|
96
|
+
if (strPtr < streams->getLength()) {
|
97
|
+
streams->get(strPtr, &curStr);
|
98
|
+
curStr.streamReset();
|
99
|
+
}
|
100
|
+
}
|
101
|
+
return c;
|
102
|
+
}
|
103
|
+
|
104
|
+
int Lexer::lookChar() {
|
105
|
+
if (curStr.isNone()) {
|
106
|
+
return EOF;
|
107
|
+
}
|
108
|
+
return curStr.streamLookChar();
|
109
|
+
}
|
110
|
+
|
111
|
+
Object *Lexer::getObj(Object *obj) {
|
112
|
+
char *p;
|
113
|
+
int c, c2;
|
114
|
+
GBool comment, neg, done;
|
115
|
+
int numParen;
|
116
|
+
int xi;
|
117
|
+
double xf, scale;
|
118
|
+
GString *s;
|
119
|
+
int n, m;
|
120
|
+
|
121
|
+
// skip whitespace and comments
|
122
|
+
comment = gFalse;
|
123
|
+
while (1) {
|
124
|
+
if ((c = getChar()) == EOF) {
|
125
|
+
return obj->initEOF();
|
126
|
+
}
|
127
|
+
if (comment) {
|
128
|
+
if (c == '\r' || c == '\n')
|
129
|
+
comment = gFalse;
|
130
|
+
} else if (c == '%') {
|
131
|
+
comment = gTrue;
|
132
|
+
} else if (specialChars[c] != 1) {
|
133
|
+
break;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
|
137
|
+
// start reading token
|
138
|
+
switch (c) {
|
139
|
+
|
140
|
+
// number
|
141
|
+
case '0': case '1': case '2': case '3': case '4':
|
142
|
+
case '5': case '6': case '7': case '8': case '9':
|
143
|
+
case '-': case '.':
|
144
|
+
neg = gFalse;
|
145
|
+
xi = 0;
|
146
|
+
if (c == '-') {
|
147
|
+
neg = gTrue;
|
148
|
+
} else if (c == '.') {
|
149
|
+
goto doReal;
|
150
|
+
} else {
|
151
|
+
xi = c - '0';
|
152
|
+
}
|
153
|
+
while (1) {
|
154
|
+
c = lookChar();
|
155
|
+
if (isdigit(c)) {
|
156
|
+
getChar();
|
157
|
+
xi = xi * 10 + (c - '0');
|
158
|
+
} else if (c == '.') {
|
159
|
+
getChar();
|
160
|
+
goto doReal;
|
161
|
+
} else {
|
162
|
+
break;
|
163
|
+
}
|
164
|
+
}
|
165
|
+
if (neg)
|
166
|
+
xi = -xi;
|
167
|
+
obj->initInt(xi);
|
168
|
+
break;
|
169
|
+
doReal:
|
170
|
+
xf = xi;
|
171
|
+
scale = 0.1;
|
172
|
+
while (1) {
|
173
|
+
c = lookChar();
|
174
|
+
if (c == '-') {
|
175
|
+
// ignore minus signs in the middle of numbers to match
|
176
|
+
// Adobe's behavior
|
177
|
+
error(getPos(), "Badly formatted number");
|
178
|
+
getChar();
|
179
|
+
continue;
|
180
|
+
}
|
181
|
+
if (!isdigit(c)) {
|
182
|
+
break;
|
183
|
+
}
|
184
|
+
getChar();
|
185
|
+
xf = xf + scale * (c - '0');
|
186
|
+
scale *= 0.1;
|
187
|
+
}
|
188
|
+
if (neg)
|
189
|
+
xf = -xf;
|
190
|
+
obj->initReal(xf);
|
191
|
+
break;
|
192
|
+
|
193
|
+
// string
|
194
|
+
case '(':
|
195
|
+
p = tokBuf;
|
196
|
+
n = 0;
|
197
|
+
numParen = 1;
|
198
|
+
done = gFalse;
|
199
|
+
s = NULL;
|
200
|
+
do {
|
201
|
+
c2 = EOF;
|
202
|
+
switch (c = getChar()) {
|
203
|
+
|
204
|
+
case EOF:
|
205
|
+
#if 0
|
206
|
+
// This breaks some PDF files, e.g., ones from Photoshop.
|
207
|
+
case '\r':
|
208
|
+
case '\n':
|
209
|
+
#endif
|
210
|
+
error(getPos(), "Unterminated string");
|
211
|
+
done = gTrue;
|
212
|
+
break;
|
213
|
+
|
214
|
+
case '(':
|
215
|
+
++numParen;
|
216
|
+
c2 = c;
|
217
|
+
break;
|
218
|
+
|
219
|
+
case ')':
|
220
|
+
if (--numParen == 0) {
|
221
|
+
done = gTrue;
|
222
|
+
} else {
|
223
|
+
c2 = c;
|
224
|
+
}
|
225
|
+
break;
|
226
|
+
|
227
|
+
case '\\':
|
228
|
+
switch (c = getChar()) {
|
229
|
+
case 'n':
|
230
|
+
c2 = '\n';
|
231
|
+
break;
|
232
|
+
case 'r':
|
233
|
+
c2 = '\r';
|
234
|
+
break;
|
235
|
+
case 't':
|
236
|
+
c2 = '\t';
|
237
|
+
break;
|
238
|
+
case 'b':
|
239
|
+
c2 = '\b';
|
240
|
+
break;
|
241
|
+
case 'f':
|
242
|
+
c2 = '\f';
|
243
|
+
break;
|
244
|
+
case '\\':
|
245
|
+
case '(':
|
246
|
+
case ')':
|
247
|
+
c2 = c;
|
248
|
+
break;
|
249
|
+
case '0': case '1': case '2': case '3':
|
250
|
+
case '4': case '5': case '6': case '7':
|
251
|
+
c2 = c - '0';
|
252
|
+
c = lookChar();
|
253
|
+
if (c >= '0' && c <= '7') {
|
254
|
+
getChar();
|
255
|
+
c2 = (c2 << 3) + (c - '0');
|
256
|
+
c = lookChar();
|
257
|
+
if (c >= '0' && c <= '7') {
|
258
|
+
getChar();
|
259
|
+
c2 = (c2 << 3) + (c - '0');
|
260
|
+
}
|
261
|
+
}
|
262
|
+
break;
|
263
|
+
case '\r':
|
264
|
+
c = lookChar();
|
265
|
+
if (c == '\n') {
|
266
|
+
getChar();
|
267
|
+
}
|
268
|
+
break;
|
269
|
+
case '\n':
|
270
|
+
break;
|
271
|
+
case EOF:
|
272
|
+
error(getPos(), "Unterminated string");
|
273
|
+
done = gTrue;
|
274
|
+
break;
|
275
|
+
default:
|
276
|
+
c2 = c;
|
277
|
+
break;
|
278
|
+
}
|
279
|
+
break;
|
280
|
+
|
281
|
+
default:
|
282
|
+
c2 = c;
|
283
|
+
break;
|
284
|
+
}
|
285
|
+
|
286
|
+
if (c2 != EOF) {
|
287
|
+
if (n == tokBufSize) {
|
288
|
+
if (!s)
|
289
|
+
s = new GString(tokBuf, tokBufSize);
|
290
|
+
else
|
291
|
+
s->append(tokBuf, tokBufSize);
|
292
|
+
p = tokBuf;
|
293
|
+
n = 0;
|
294
|
+
}
|
295
|
+
*p++ = (char)c2;
|
296
|
+
++n;
|
297
|
+
}
|
298
|
+
} while (!done);
|
299
|
+
if (!s)
|
300
|
+
s = new GString(tokBuf, n);
|
301
|
+
else
|
302
|
+
s->append(tokBuf, n);
|
303
|
+
obj->initString(s);
|
304
|
+
break;
|
305
|
+
|
306
|
+
// name
|
307
|
+
case '/':
|
308
|
+
p = tokBuf;
|
309
|
+
n = 0;
|
310
|
+
while ((c = lookChar()) != EOF && !specialChars[c]) {
|
311
|
+
getChar();
|
312
|
+
if (c == '#') {
|
313
|
+
c2 = lookChar();
|
314
|
+
if (c2 >= '0' && c2 <= '9') {
|
315
|
+
c = c2 - '0';
|
316
|
+
} else if (c2 >= 'A' && c2 <= 'F') {
|
317
|
+
c = c2 - 'A' + 10;
|
318
|
+
} else if (c2 >= 'a' && c2 <= 'f') {
|
319
|
+
c = c2 - 'a' + 10;
|
320
|
+
} else {
|
321
|
+
goto notEscChar;
|
322
|
+
}
|
323
|
+
getChar();
|
324
|
+
c <<= 4;
|
325
|
+
c2 = getChar();
|
326
|
+
if (c2 >= '0' && c2 <= '9') {
|
327
|
+
c += c2 - '0';
|
328
|
+
} else if (c2 >= 'A' && c2 <= 'F') {
|
329
|
+
c += c2 - 'A' + 10;
|
330
|
+
} else if (c2 >= 'a' && c2 <= 'f') {
|
331
|
+
c += c2 - 'a' + 10;
|
332
|
+
} else {
|
333
|
+
error(getPos(), "Illegal digit in hex char in name");
|
334
|
+
}
|
335
|
+
}
|
336
|
+
notEscChar:
|
337
|
+
if (++n == tokBufSize) {
|
338
|
+
error(getPos(), "Name token too long");
|
339
|
+
break;
|
340
|
+
}
|
341
|
+
*p++ = c;
|
342
|
+
}
|
343
|
+
*p = '\0';
|
344
|
+
obj->initName(tokBuf);
|
345
|
+
break;
|
346
|
+
|
347
|
+
// array punctuation
|
348
|
+
case '[':
|
349
|
+
case ']':
|
350
|
+
tokBuf[0] = c;
|
351
|
+
tokBuf[1] = '\0';
|
352
|
+
obj->initCmd(tokBuf);
|
353
|
+
break;
|
354
|
+
|
355
|
+
// hex string or dict punctuation
|
356
|
+
case '<':
|
357
|
+
c = lookChar();
|
358
|
+
|
359
|
+
// dict punctuation
|
360
|
+
if (c == '<') {
|
361
|
+
getChar();
|
362
|
+
tokBuf[0] = tokBuf[1] = '<';
|
363
|
+
tokBuf[2] = '\0';
|
364
|
+
obj->initCmd(tokBuf);
|
365
|
+
|
366
|
+
// hex string
|
367
|
+
} else {
|
368
|
+
p = tokBuf;
|
369
|
+
m = n = 0;
|
370
|
+
c2 = 0;
|
371
|
+
s = NULL;
|
372
|
+
while (1) {
|
373
|
+
c = getChar();
|
374
|
+
if (c == '>') {
|
375
|
+
break;
|
376
|
+
} else if (c == EOF) {
|
377
|
+
error(getPos(), "Unterminated hex string");
|
378
|
+
break;
|
379
|
+
} else if (specialChars[c] != 1) {
|
380
|
+
c2 = c2 << 4;
|
381
|
+
if (c >= '0' && c <= '9')
|
382
|
+
c2 += c - '0';
|
383
|
+
else if (c >= 'A' && c <= 'F')
|
384
|
+
c2 += c - 'A' + 10;
|
385
|
+
else if (c >= 'a' && c <= 'f')
|
386
|
+
c2 += c - 'a' + 10;
|
387
|
+
else
|
388
|
+
error(getPos(), "Illegal character <%02x> in hex string", c);
|
389
|
+
if (++m == 2) {
|
390
|
+
if (n == tokBufSize) {
|
391
|
+
if (!s)
|
392
|
+
s = new GString(tokBuf, tokBufSize);
|
393
|
+
else
|
394
|
+
s->append(tokBuf, tokBufSize);
|
395
|
+
p = tokBuf;
|
396
|
+
n = 0;
|
397
|
+
}
|
398
|
+
*p++ = (char)c2;
|
399
|
+
++n;
|
400
|
+
c2 = 0;
|
401
|
+
m = 0;
|
402
|
+
}
|
403
|
+
}
|
404
|
+
}
|
405
|
+
if (!s)
|
406
|
+
s = new GString(tokBuf, n);
|
407
|
+
else
|
408
|
+
s->append(tokBuf, n);
|
409
|
+
if (m == 1)
|
410
|
+
s->append((char)(c2 << 4));
|
411
|
+
obj->initString(s);
|
412
|
+
}
|
413
|
+
break;
|
414
|
+
|
415
|
+
// dict punctuation
|
416
|
+
case '>':
|
417
|
+
c = lookChar();
|
418
|
+
if (c == '>') {
|
419
|
+
getChar();
|
420
|
+
tokBuf[0] = tokBuf[1] = '>';
|
421
|
+
tokBuf[2] = '\0';
|
422
|
+
obj->initCmd(tokBuf);
|
423
|
+
} else {
|
424
|
+
error(getPos(), "Illegal character '>'");
|
425
|
+
obj->initError();
|
426
|
+
}
|
427
|
+
break;
|
428
|
+
|
429
|
+
// error
|
430
|
+
case ')':
|
431
|
+
case '{':
|
432
|
+
case '}':
|
433
|
+
error(getPos(), "Illegal character '%c'", c);
|
434
|
+
obj->initError();
|
435
|
+
break;
|
436
|
+
|
437
|
+
// command
|
438
|
+
default:
|
439
|
+
p = tokBuf;
|
440
|
+
*p++ = c;
|
441
|
+
n = 1;
|
442
|
+
while ((c = lookChar()) != EOF && !specialChars[c]) {
|
443
|
+
getChar();
|
444
|
+
if (++n == tokBufSize) {
|
445
|
+
error(getPos(), "Command token too long");
|
446
|
+
break;
|
447
|
+
}
|
448
|
+
*p++ = c;
|
449
|
+
}
|
450
|
+
*p = '\0';
|
451
|
+
if (tokBuf[0] == 't' && !strcmp(tokBuf, "true")) {
|
452
|
+
obj->initBool(gTrue);
|
453
|
+
} else if (tokBuf[0] == 'f' && !strcmp(tokBuf, "false")) {
|
454
|
+
obj->initBool(gFalse);
|
455
|
+
} else if (tokBuf[0] == 'n' && !strcmp(tokBuf, "null")) {
|
456
|
+
obj->initNull();
|
457
|
+
} else {
|
458
|
+
obj->initCmd(tokBuf);
|
459
|
+
}
|
460
|
+
break;
|
461
|
+
}
|
462
|
+
|
463
|
+
return obj;
|
464
|
+
}
|
465
|
+
|
466
|
+
void Lexer::skipToNextLine() {
|
467
|
+
int c;
|
468
|
+
|
469
|
+
while (1) {
|
470
|
+
c = getChar();
|
471
|
+
if (c == EOF || c == '\n') {
|
472
|
+
return;
|
473
|
+
}
|
474
|
+
if (c == '\r') {
|
475
|
+
if ((c = lookChar()) == '\n') {
|
476
|
+
getChar();
|
477
|
+
}
|
478
|
+
return;
|
479
|
+
}
|
480
|
+
}
|
481
|
+
}
|
482
|
+
|
483
|
+
GBool Lexer::isSpace(int c) {
|
484
|
+
return c >= 0 && c <= 0xff && specialChars[c] == 1;
|
485
|
+
}
|