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.
Files changed (473) hide show
  1. data/README.markdown +9 -0
  2. data/bin/.gitkeep +0 -0
  3. data/ext/extconf.rb +30 -0
  4. data/lib/pdf2json.rb +8 -0
  5. data/pdf2json-0.52-source/AUTHORS +24 -0
  6. data/pdf2json-0.52-source/CHANGES +11 -0
  7. data/pdf2json-0.52-source/Makefile +84 -0
  8. data/pdf2json-0.52-source/Makefile.in +84 -0
  9. data/pdf2json-0.52-source/aclocal.m4 +274 -0
  10. data/pdf2json-0.52-source/aconf-win32.h +86 -0
  11. data/pdf2json-0.52-source/aconf.h +42 -0
  12. data/pdf2json-0.52-source/aconf.h.in +41 -0
  13. data/pdf2json-0.52-source/autom4te.cache/output.0 +6908 -0
  14. data/pdf2json-0.52-source/autom4te.cache/requests +76 -0
  15. data/pdf2json-0.52-source/autom4te.cache/traces.0 +466 -0
  16. data/pdf2json-0.52-source/config.log +1259 -0
  17. data/pdf2json-0.52-source/config.status +1050 -0
  18. data/pdf2json-0.52-source/configure +6908 -0
  19. data/pdf2json-0.52-source/configure.ac +93 -0
  20. data/pdf2json-0.52-source/doc/pdffonts.1 +130 -0
  21. data/pdf2json-0.52-source/doc/pdffonts.cat +107 -0
  22. data/pdf2json-0.52-source/doc/pdffonts.hlp +117 -0
  23. data/pdf2json-0.52-source/doc/pdfimages.1 +102 -0
  24. data/pdf2json-0.52-source/doc/pdfimages.cat +92 -0
  25. data/pdf2json-0.52-source/doc/pdfimages.hlp +101 -0
  26. data/pdf2json-0.52-source/doc/pdfinfo.1 +158 -0
  27. data/pdf2json-0.52-source/doc/pdfinfo.cat +119 -0
  28. data/pdf2json-0.52-source/doc/pdfinfo.hlp +129 -0
  29. data/pdf2json-0.52-source/doc/pdftoppm.1 +115 -0
  30. data/pdf2json-0.52-source/doc/pdftoppm.cat +105 -0
  31. data/pdf2json-0.52-source/doc/pdftoppm.hlp +114 -0
  32. data/pdf2json-0.52-source/doc/pdftops.1 +229 -0
  33. data/pdf2json-0.52-source/doc/pdftops.cat +221 -0
  34. data/pdf2json-0.52-source/doc/pdftops.hlp +231 -0
  35. data/pdf2json-0.52-source/doc/pdftotext.1 +137 -0
  36. data/pdf2json-0.52-source/doc/pdftotext.cat +120 -0
  37. data/pdf2json-0.52-source/doc/pdftotext.hlp +133 -0
  38. data/pdf2json-0.52-source/doc/sample-xpdfrc +91 -0
  39. data/pdf2json-0.52-source/doc/xpdf.1 +513 -0
  40. data/pdf2json-0.52-source/doc/xpdf.cat +476 -0
  41. data/pdf2json-0.52-source/doc/xpdf.hlp +489 -0
  42. data/pdf2json-0.52-source/doc/xpdfrc.5 +480 -0
  43. data/pdf2json-0.52-source/doc/xpdfrc.cat +474 -0
  44. data/pdf2json-0.52-source/doc/xpdfrc.hlp +479 -0
  45. data/pdf2json-0.52-source/fofi/.DS_Store +0 -0
  46. data/pdf2json-0.52-source/fofi/FoFiBase.cc +156 -0
  47. data/pdf2json-0.52-source/fofi/FoFiBase.h +57 -0
  48. data/pdf2json-0.52-source/fofi/FoFiBase.o +0 -0
  49. data/pdf2json-0.52-source/fofi/FoFiEncodings.cc +994 -0
  50. data/pdf2json-0.52-source/fofi/FoFiEncodings.h +36 -0
  51. data/pdf2json-0.52-source/fofi/FoFiEncodings.o +0 -0
  52. data/pdf2json-0.52-source/fofi/FoFiTrueType.cc +2027 -0
  53. data/pdf2json-0.52-source/fofi/FoFiTrueType.h +174 -0
  54. data/pdf2json-0.52-source/fofi/FoFiTrueType.o +0 -0
  55. data/pdf2json-0.52-source/fofi/FoFiType1.cc +252 -0
  56. data/pdf2json-0.52-source/fofi/FoFiType1.h +59 -0
  57. data/pdf2json-0.52-source/fofi/FoFiType1.o +0 -0
  58. data/pdf2json-0.52-source/fofi/FoFiType1C.cc +2603 -0
  59. data/pdf2json-0.52-source/fofi/FoFiType1C.h +233 -0
  60. data/pdf2json-0.52-source/fofi/FoFiType1C.o +0 -0
  61. data/pdf2json-0.52-source/fofi/Makefile +70 -0
  62. data/pdf2json-0.52-source/fofi/Makefile.dep +0 -0
  63. data/pdf2json-0.52-source/fofi/Makefile.in +70 -0
  64. data/pdf2json-0.52-source/fofi/libfofi.a +0 -0
  65. data/pdf2json-0.52-source/fofi/vms_make.com +0 -0
  66. data/pdf2json-0.52-source/freetype.win32/.DS_Store +0 -0
  67. data/pdf2json-0.52-source/freetype.win32/include/.DS_Store +0 -0
  68. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftconfig.h +528 -0
  69. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftheader.h +780 -0
  70. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftmodule.h +32 -0
  71. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftoption.h +733 -0
  72. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftstdlib.h +173 -0
  73. data/pdf2json-0.52-source/freetype.win32/include/freetype/freetype.h +3919 -0
  74. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftadvanc.h +179 -0
  75. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbbox.h +94 -0
  76. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbdf.h +209 -0
  77. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbitmap.h +227 -0
  78. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftcache.h +1128 -0
  79. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftchapters.h +103 -0
  80. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftcid.h +166 -0
  81. data/pdf2json-0.52-source/freetype.win32/include/freetype/fterrdef.h +244 -0
  82. data/pdf2json-0.52-source/freetype.win32/include/freetype/fterrors.h +206 -0
  83. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgasp.h +120 -0
  84. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftglyph.h +613 -0
  85. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgxval.h +358 -0
  86. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgzip.h +102 -0
  87. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftimage.h +1313 -0
  88. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftincrem.h +353 -0
  89. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlcdfil.h +213 -0
  90. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlist.h +277 -0
  91. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlzw.h +99 -0
  92. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmac.h +274 -0
  93. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmm.h +378 -0
  94. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmodapi.h +483 -0
  95. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmoderr.h +155 -0
  96. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftotval.h +203 -0
  97. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftoutln.h +537 -0
  98. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftpfr.h +172 -0
  99. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftrender.h +230 -0
  100. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsizes.h +159 -0
  101. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsnames.h +200 -0
  102. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftstroke.h +716 -0
  103. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsynth.h +80 -0
  104. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsystem.h +347 -0
  105. data/pdf2json-0.52-source/freetype.win32/include/freetype/fttrigon.h +350 -0
  106. data/pdf2json-0.52-source/freetype.win32/include/freetype/fttypes.h +588 -0
  107. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftwinfnt.h +274 -0
  108. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftxf86.h +83 -0
  109. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/autohint.h +231 -0
  110. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftcalc.h +179 -0
  111. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftdebug.h +250 -0
  112. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftdriver.h +422 -0
  113. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftgloadr.h +168 -0
  114. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftmemory.h +380 -0
  115. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftobjs.h +1428 -0
  116. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftpic.h +67 -0
  117. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftrfork.h +196 -0
  118. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftserv.h +620 -0
  119. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftstream.h +539 -0
  120. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/fttrace.h +139 -0
  121. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftvalid.h +150 -0
  122. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/internal.h +51 -0
  123. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/pcftypes.h +56 -0
  124. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/psaux.h +873 -0
  125. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/pshints.h +712 -0
  126. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svbdf.h +77 -0
  127. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svcid.h +83 -0
  128. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svgldict.h +82 -0
  129. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svgxval.h +72 -0
  130. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svkern.h +51 -0
  131. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svmm.h +104 -0
  132. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svotval.h +55 -0
  133. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpfr.h +66 -0
  134. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpostnm.h +79 -0
  135. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpscmap.h +164 -0
  136. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpsinfo.h +92 -0
  137. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svsfnt.h +102 -0
  138. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svttcmap.h +106 -0
  139. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svtteng.h +53 -0
  140. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svttglyf.h +67 -0
  141. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svwinfnt.h +50 -0
  142. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svxf86nm.h +55 -0
  143. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/sfnt.h +897 -0
  144. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/t1types.h +270 -0
  145. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/tttypes.h +1543 -0
  146. data/pdf2json-0.52-source/freetype.win32/include/freetype/t1tables.h +504 -0
  147. data/pdf2json-0.52-source/freetype.win32/include/freetype/ttnameid.h +1247 -0
  148. data/pdf2json-0.52-source/freetype.win32/include/freetype/tttables.h +759 -0
  149. data/pdf2json-0.52-source/freetype.win32/include/freetype/tttags.h +107 -0
  150. data/pdf2json-0.52-source/freetype.win32/include/freetype/ttunpat.h +59 -0
  151. data/pdf2json-0.52-source/freetype.win32/include/ft2build.h +39 -0
  152. data/pdf2json-0.52-source/freetype.win32/lib/freetype_a.lib +0 -0
  153. data/pdf2json-0.52-source/goo/.DS_Store +0 -0
  154. data/pdf2json-0.52-source/goo/FixedPoint.cc +118 -0
  155. data/pdf2json-0.52-source/goo/FixedPoint.h +155 -0
  156. data/pdf2json-0.52-source/goo/FixedPoint.o +0 -0
  157. data/pdf2json-0.52-source/goo/GHash.cc +380 -0
  158. data/pdf2json-0.52-source/goo/GHash.h +78 -0
  159. data/pdf2json-0.52-source/goo/GHash.o +0 -0
  160. data/pdf2json-0.52-source/goo/GList.cc +97 -0
  161. data/pdf2json-0.52-source/goo/GList.h +96 -0
  162. data/pdf2json-0.52-source/goo/GList.o +0 -0
  163. data/pdf2json-0.52-source/goo/GMutex.h +49 -0
  164. data/pdf2json-0.52-source/goo/GString.cc +724 -0
  165. data/pdf2json-0.52-source/goo/GString.cc.fixed +718 -0
  166. data/pdf2json-0.52-source/goo/GString.h +136 -0
  167. data/pdf2json-0.52-source/goo/GString.o +0 -0
  168. data/pdf2json-0.52-source/goo/ImgWriter.o +0 -0
  169. data/pdf2json-0.52-source/goo/JpegWriter.o +0 -0
  170. data/pdf2json-0.52-source/goo/Makefile +72 -0
  171. data/pdf2json-0.52-source/goo/Makefile.dep +0 -0
  172. data/pdf2json-0.52-source/goo/Makefile.in +72 -0
  173. data/pdf2json-0.52-source/goo/PNGWriter.o +0 -0
  174. data/pdf2json-0.52-source/goo/gfile.cc +731 -0
  175. data/pdf2json-0.52-source/goo/gfile.h +138 -0
  176. data/pdf2json-0.52-source/goo/gfile.o +0 -0
  177. data/pdf2json-0.52-source/goo/gmem.cc +264 -0
  178. data/pdf2json-0.52-source/goo/gmem.h +79 -0
  179. data/pdf2json-0.52-source/goo/gmem.o +0 -0
  180. data/pdf2json-0.52-source/goo/gmempp.cc +32 -0
  181. data/pdf2json-0.52-source/goo/gmempp.o +0 -0
  182. data/pdf2json-0.52-source/goo/gtypes.h +29 -0
  183. data/pdf2json-0.52-source/goo/libGoo.a +0 -0
  184. data/pdf2json-0.52-source/goo/parseargs.c +190 -0
  185. data/pdf2json-0.52-source/goo/parseargs.h +71 -0
  186. data/pdf2json-0.52-source/goo/parseargs.o +0 -0
  187. data/pdf2json-0.52-source/goo/vms_directory.c +214 -0
  188. data/pdf2json-0.52-source/goo/vms_dirent.h +67 -0
  189. data/pdf2json-0.52-source/goo/vms_make.com +82 -0
  190. data/pdf2json-0.52-source/goo/vms_sys_dirent.h +54 -0
  191. data/pdf2json-0.52-source/goo/vms_unix_time.h +102 -0
  192. data/pdf2json-0.52-source/goo/vms_unix_times.c +42 -0
  193. data/pdf2json-0.52-source/goo/vms_unlink.c +22 -0
  194. data/pdf2json-0.52-source/ms_make.bat +199 -0
  195. data/pdf2json-0.52-source/splash/.DS_Store +0 -0
  196. data/pdf2json-0.52-source/splash/Makefile +103 -0
  197. data/pdf2json-0.52-source/splash/Makefile.dep +0 -0
  198. data/pdf2json-0.52-source/splash/Makefile.in +103 -0
  199. data/pdf2json-0.52-source/splash/Splash.cc +3310 -0
  200. data/pdf2json-0.52-source/splash/Splash.h +293 -0
  201. data/pdf2json-0.52-source/splash/Splash.o +0 -0
  202. data/pdf2json-0.52-source/splash/SplashBitmap.cc +188 -0
  203. data/pdf2json-0.52-source/splash/SplashBitmap.h +64 -0
  204. data/pdf2json-0.52-source/splash/SplashBitmap.o +0 -0
  205. data/pdf2json-0.52-source/splash/SplashClip.cc +382 -0
  206. data/pdf2json-0.52-source/splash/SplashClip.h +107 -0
  207. data/pdf2json-0.52-source/splash/SplashClip.o +0 -0
  208. data/pdf2json-0.52-source/splash/SplashErrorCodes.h +32 -0
  209. data/pdf2json-0.52-source/splash/SplashFTFont.cc +357 -0
  210. data/pdf2json-0.52-source/splash/SplashFTFont.h +58 -0
  211. data/pdf2json-0.52-source/splash/SplashFTFont.o +0 -0
  212. data/pdf2json-0.52-source/splash/SplashFTFontEngine.cc +179 -0
  213. data/pdf2json-0.52-source/splash/SplashFTFontEngine.h +65 -0
  214. data/pdf2json-0.52-source/splash/SplashFTFontEngine.o +0 -0
  215. data/pdf2json-0.52-source/splash/SplashFTFontFile.cc +114 -0
  216. data/pdf2json-0.52-source/splash/SplashFTFontFile.h +73 -0
  217. data/pdf2json-0.52-source/splash/SplashFTFontFile.o +0 -0
  218. data/pdf2json-0.52-source/splash/SplashFont.cc +176 -0
  219. data/pdf2json-0.52-source/splash/SplashFont.h +104 -0
  220. data/pdf2json-0.52-source/splash/SplashFont.o +0 -0
  221. data/pdf2json-0.52-source/splash/SplashFontEngine.cc +317 -0
  222. data/pdf2json-0.52-source/splash/SplashFontEngine.h +91 -0
  223. data/pdf2json-0.52-source/splash/SplashFontEngine.o +0 -0
  224. data/pdf2json-0.52-source/splash/SplashFontFile.cc +55 -0
  225. data/pdf2json-0.52-source/splash/SplashFontFile.h +60 -0
  226. data/pdf2json-0.52-source/splash/SplashFontFile.o +0 -0
  227. data/pdf2json-0.52-source/splash/SplashFontFileID.cc +23 -0
  228. data/pdf2json-0.52-source/splash/SplashFontFileID.h +30 -0
  229. data/pdf2json-0.52-source/splash/SplashFontFileID.o +0 -0
  230. data/pdf2json-0.52-source/splash/SplashGlyphBitmap.h +26 -0
  231. data/pdf2json-0.52-source/splash/SplashMath.h +89 -0
  232. data/pdf2json-0.52-source/splash/SplashPath.cc +184 -0
  233. data/pdf2json-0.52-source/splash/SplashPath.h +121 -0
  234. data/pdf2json-0.52-source/splash/SplashPath.o +0 -0
  235. data/pdf2json-0.52-source/splash/SplashPattern.cc +40 -0
  236. data/pdf2json-0.52-source/splash/SplashPattern.h +65 -0
  237. data/pdf2json-0.52-source/splash/SplashPattern.o +0 -0
  238. data/pdf2json-0.52-source/splash/SplashScreen.cc +383 -0
  239. data/pdf2json-0.52-source/splash/SplashScreen.h +56 -0
  240. data/pdf2json-0.52-source/splash/SplashScreen.o +0 -0
  241. data/pdf2json-0.52-source/splash/SplashState.cc +165 -0
  242. data/pdf2json-0.52-source/splash/SplashState.h +103 -0
  243. data/pdf2json-0.52-source/splash/SplashState.o +0 -0
  244. data/pdf2json-0.52-source/splash/SplashT1Font.cc +287 -0
  245. data/pdf2json-0.52-source/splash/SplashT1Font.h +57 -0
  246. data/pdf2json-0.52-source/splash/SplashT1Font.o +0 -0
  247. data/pdf2json-0.52-source/splash/SplashT1FontEngine.cc +124 -0
  248. data/pdf2json-0.52-source/splash/SplashT1FontEngine.h +53 -0
  249. data/pdf2json-0.52-source/splash/SplashT1FontEngine.o +0 -0
  250. data/pdf2json-0.52-source/splash/SplashT1FontFile.cc +97 -0
  251. data/pdf2json-0.52-source/splash/SplashT1FontFile.h +58 -0
  252. data/pdf2json-0.52-source/splash/SplashT1FontFile.o +0 -0
  253. data/pdf2json-0.52-source/splash/SplashTypes.h +132 -0
  254. data/pdf2json-0.52-source/splash/SplashXPath.cc +438 -0
  255. data/pdf2json-0.52-source/splash/SplashXPath.h +100 -0
  256. data/pdf2json-0.52-source/splash/SplashXPath.o +0 -0
  257. data/pdf2json-0.52-source/splash/SplashXPathScanner.cc +428 -0
  258. data/pdf2json-0.52-source/splash/SplashXPathScanner.h +87 -0
  259. data/pdf2json-0.52-source/splash/SplashXPathScanner.o +0 -0
  260. data/pdf2json-0.52-source/splash/libsplash.a +0 -0
  261. data/pdf2json-0.52-source/splash/vms_make.com +0 -0
  262. data/pdf2json-0.52-source/src/.DS_Store +0 -0
  263. data/pdf2json-0.52-source/src/GVector.h +101 -0
  264. data/pdf2json-0.52-source/src/ImgOutputDev.cc +1243 -0
  265. data/pdf2json-0.52-source/src/ImgOutputDev.h +307 -0
  266. data/pdf2json-0.52-source/src/ImgOutputDev.o +0 -0
  267. data/pdf2json-0.52-source/src/Makefile +68 -0
  268. data/pdf2json-0.52-source/src/Makefile.in +68 -0
  269. data/pdf2json-0.52-source/src/XmlFonts.cc +367 -0
  270. data/pdf2json-0.52-source/src/XmlFonts.h +91 -0
  271. data/pdf2json-0.52-source/src/XmlFonts.o +0 -0
  272. data/pdf2json-0.52-source/src/XmlLinks.cc +101 -0
  273. data/pdf2json-0.52-source/src/XmlLinks.h +54 -0
  274. data/pdf2json-0.52-source/src/XmlLinks.o +0 -0
  275. data/pdf2json-0.52-source/src/pdf2json +0 -0
  276. data/pdf2json-0.52-source/src/pdf2json.cc +343 -0
  277. data/pdf2json-0.52-source/src/pdf2json.o +0 -0
  278. data/pdf2json-0.52-source/src/pdf2xml.dtd +22 -0
  279. data/pdf2json-0.52-source/src/pdf2xmljson.dtd +9 -0
  280. data/pdf2json-0.52-source/xpdf/.DS_Store +0 -0
  281. data/pdf2json-0.52-source/xpdf/Annot.cc +1556 -0
  282. data/pdf2json-0.52-source/xpdf/Annot.h +142 -0
  283. data/pdf2json-0.52-source/xpdf/Annot.o +0 -0
  284. data/pdf2json-0.52-source/xpdf/Array.cc +73 -0
  285. data/pdf2json-0.52-source/xpdf/Array.h +58 -0
  286. data/pdf2json-0.52-source/xpdf/Array.o +0 -0
  287. data/pdf2json-0.52-source/xpdf/BuiltinFont.cc +65 -0
  288. data/pdf2json-0.52-source/xpdf/BuiltinFont.h +57 -0
  289. data/pdf2json-0.52-source/xpdf/BuiltinFont.o +0 -0
  290. data/pdf2json-0.52-source/xpdf/BuiltinFontTables.cc +4284 -0
  291. data/pdf2json-0.52-source/xpdf/BuiltinFontTables.h +23 -0
  292. data/pdf2json-0.52-source/xpdf/BuiltinFontTables.o +0 -0
  293. data/pdf2json-0.52-source/xpdf/CMap.cc +408 -0
  294. data/pdf2json-0.52-source/xpdf/CMap.h +102 -0
  295. data/pdf2json-0.52-source/xpdf/CMap.o +0 -0
  296. data/pdf2json-0.52-source/xpdf/Catalog.cc +374 -0
  297. data/pdf2json-0.52-source/xpdf/Catalog.h +97 -0
  298. data/pdf2json-0.52-source/xpdf/Catalog.o +0 -0
  299. data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.cc +540 -0
  300. data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.h +117 -0
  301. data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.o +0 -0
  302. data/pdf2json-0.52-source/xpdf/CharTypes.h +24 -0
  303. data/pdf2json-0.52-source/xpdf/CompactFontTables.h +464 -0
  304. data/pdf2json-0.52-source/xpdf/CoreOutputDev.cc +61 -0
  305. data/pdf2json-0.52-source/xpdf/CoreOutputDev.h +61 -0
  306. data/pdf2json-0.52-source/xpdf/Decrypt.cc +776 -0
  307. data/pdf2json-0.52-source/xpdf/Decrypt.h +95 -0
  308. data/pdf2json-0.52-source/xpdf/Decrypt.o +0 -0
  309. data/pdf2json-0.52-source/xpdf/Dict.cc +95 -0
  310. data/pdf2json-0.52-source/xpdf/Dict.h +77 -0
  311. data/pdf2json-0.52-source/xpdf/Dict.o +0 -0
  312. data/pdf2json-0.52-source/xpdf/Error.cc +38 -0
  313. data/pdf2json-0.52-source/xpdf/Error.h +23 -0
  314. data/pdf2json-0.52-source/xpdf/Error.o +0 -0
  315. data/pdf2json-0.52-source/xpdf/ErrorCodes.h +36 -0
  316. data/pdf2json-0.52-source/xpdf/FontEncodingTables.cc +1824 -0
  317. data/pdf2json-0.52-source/xpdf/FontEncodingTables.h +20 -0
  318. data/pdf2json-0.52-source/xpdf/FontEncodingTables.o +0 -0
  319. data/pdf2json-0.52-source/xpdf/Function.cc +1573 -0
  320. data/pdf2json-0.52-source/xpdf/Function.h +229 -0
  321. data/pdf2json-0.52-source/xpdf/Function.o +0 -0
  322. data/pdf2json-0.52-source/xpdf/Gfx.cc +4187 -0
  323. data/pdf2json-0.52-source/xpdf/Gfx.h +312 -0
  324. data/pdf2json-0.52-source/xpdf/Gfx.o +0 -0
  325. data/pdf2json-0.52-source/xpdf/GfxFont.cc +1568 -0
  326. data/pdf2json-0.52-source/xpdf/GfxFont.h +320 -0
  327. data/pdf2json-0.52-source/xpdf/GfxFont.o +0 -0
  328. data/pdf2json-0.52-source/xpdf/GfxState.cc +4137 -0
  329. data/pdf2json-0.52-source/xpdf/GfxState.h +1244 -0
  330. data/pdf2json-0.52-source/xpdf/GfxState.o +0 -0
  331. data/pdf2json-0.52-source/xpdf/GlobalParams.cc +2924 -0
  332. data/pdf2json-0.52-source/xpdf/GlobalParams.cc.old +2908 -0
  333. data/pdf2json-0.52-source/xpdf/GlobalParams.h +466 -0
  334. data/pdf2json-0.52-source/xpdf/GlobalParams.h.old +463 -0
  335. data/pdf2json-0.52-source/xpdf/GlobalParams.o +0 -0
  336. data/pdf2json-0.52-source/xpdf/ImageOutputDev.cc +195 -0
  337. data/pdf2json-0.52-source/xpdf/ImageOutputDev.h +76 -0
  338. data/pdf2json-0.52-source/xpdf/ImageOutputDev.o +0 -0
  339. data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.cc +322 -0
  340. data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.h +109 -0
  341. data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.o +0 -0
  342. data/pdf2json-0.52-source/xpdf/JBIG2Stream.cc +3413 -0
  343. data/pdf2json-0.52-source/xpdf/JBIG2Stream.h +145 -0
  344. data/pdf2json-0.52-source/xpdf/JBIG2Stream.o +0 -0
  345. data/pdf2json-0.52-source/xpdf/JPXStream.cc +3144 -0
  346. data/pdf2json-0.52-source/xpdf/JPXStream.h +351 -0
  347. data/pdf2json-0.52-source/xpdf/JPXStream.o +0 -0
  348. data/pdf2json-0.52-source/xpdf/Lexer.cc +485 -0
  349. data/pdf2json-0.52-source/xpdf/Lexer.h +80 -0
  350. data/pdf2json-0.52-source/xpdf/Lexer.o +0 -0
  351. data/pdf2json-0.52-source/xpdf/Link.cc +806 -0
  352. data/pdf2json-0.52-source/xpdf/Link.cc.old +784 -0
  353. data/pdf2json-0.52-source/xpdf/Link.h +415 -0
  354. data/pdf2json-0.52-source/xpdf/Link.h.old +369 -0
  355. data/pdf2json-0.52-source/xpdf/Link.o +0 -0
  356. data/pdf2json-0.52-source/xpdf/Makefile +232 -0
  357. data/pdf2json-0.52-source/xpdf/Makefile.dep +0 -0
  358. data/pdf2json-0.52-source/xpdf/Makefile.in +232 -0
  359. data/pdf2json-0.52-source/xpdf/NameToCharCode.cc +116 -0
  360. data/pdf2json-0.52-source/xpdf/NameToCharCode.h +42 -0
  361. data/pdf2json-0.52-source/xpdf/NameToCharCode.o +0 -0
  362. data/pdf2json-0.52-source/xpdf/NameToUnicodeTable.h +1097 -0
  363. data/pdf2json-0.52-source/xpdf/Object.cc +231 -0
  364. data/pdf2json-0.52-source/xpdf/Object.h +303 -0
  365. data/pdf2json-0.52-source/xpdf/Object.o +0 -0
  366. data/pdf2json-0.52-source/xpdf/Outline.cc +151 -0
  367. data/pdf2json-0.52-source/xpdf/Outline.h +76 -0
  368. data/pdf2json-0.52-source/xpdf/Outline.o +0 -0
  369. data/pdf2json-0.52-source/xpdf/OutputDev.cc +131 -0
  370. data/pdf2json-0.52-source/xpdf/OutputDev.h +253 -0
  371. data/pdf2json-0.52-source/xpdf/OutputDev.o +0 -0
  372. data/pdf2json-0.52-source/xpdf/PDFCore.cc +2044 -0
  373. data/pdf2json-0.52-source/xpdf/PDFCore.h +321 -0
  374. data/pdf2json-0.52-source/xpdf/PDFDoc.cc +404 -0
  375. data/pdf2json-0.52-source/xpdf/PDFDoc.h +183 -0
  376. data/pdf2json-0.52-source/xpdf/PDFDoc.o +0 -0
  377. data/pdf2json-0.52-source/xpdf/PDFDocEncoding.cc +44 -0
  378. data/pdf2json-0.52-source/xpdf/PDFDocEncoding.h +16 -0
  379. data/pdf2json-0.52-source/xpdf/PDFDocEncoding.o +0 -0
  380. data/pdf2json-0.52-source/xpdf/PSOutputDev.cc +6224 -0
  381. data/pdf2json-0.52-source/xpdf/PSOutputDev.h +395 -0
  382. data/pdf2json-0.52-source/xpdf/PSOutputDev.o +0 -0
  383. data/pdf2json-0.52-source/xpdf/PSTokenizer.cc +135 -0
  384. data/pdf2json-0.52-source/xpdf/PSTokenizer.h +41 -0
  385. data/pdf2json-0.52-source/xpdf/PSTokenizer.o +0 -0
  386. data/pdf2json-0.52-source/xpdf/Page.cc +454 -0
  387. data/pdf2json-0.52-source/xpdf/Page.h +187 -0
  388. data/pdf2json-0.52-source/xpdf/Page.o +0 -0
  389. data/pdf2json-0.52-source/xpdf/Parser.cc +227 -0
  390. data/pdf2json-0.52-source/xpdf/Parser.h +59 -0
  391. data/pdf2json-0.52-source/xpdf/Parser.o +0 -0
  392. data/pdf2json-0.52-source/xpdf/PreScanOutputDev.cc +257 -0
  393. data/pdf2json-0.52-source/xpdf/PreScanOutputDev.h +130 -0
  394. data/pdf2json-0.52-source/xpdf/PreScanOutputDev.o +0 -0
  395. data/pdf2json-0.52-source/xpdf/SecurityHandler.cc +390 -0
  396. data/pdf2json-0.52-source/xpdf/SecurityHandler.h +160 -0
  397. data/pdf2json-0.52-source/xpdf/SecurityHandler.o +0 -0
  398. data/pdf2json-0.52-source/xpdf/SplashOutputDev.cc +2845 -0
  399. data/pdf2json-0.52-source/xpdf/SplashOutputDev.h +247 -0
  400. data/pdf2json-0.52-source/xpdf/SplashOutputDev.o +0 -0
  401. data/pdf2json-0.52-source/xpdf/Stream-CCITT.h +459 -0
  402. data/pdf2json-0.52-source/xpdf/Stream.cc +4627 -0
  403. data/pdf2json-0.52-source/xpdf/Stream.h +858 -0
  404. data/pdf2json-0.52-source/xpdf/Stream.o +0 -0
  405. data/pdf2json-0.52-source/xpdf/TextOutputDev.cc +4090 -0
  406. data/pdf2json-0.52-source/xpdf/TextOutputDev.h +661 -0
  407. data/pdf2json-0.52-source/xpdf/TextOutputDev.o +0 -0
  408. data/pdf2json-0.52-source/xpdf/UTF8.h +56 -0
  409. data/pdf2json-0.52-source/xpdf/UnicodeMap.cc +302 -0
  410. data/pdf2json-0.52-source/xpdf/UnicodeMap.cc.old +293 -0
  411. data/pdf2json-0.52-source/xpdf/UnicodeMap.h +135 -0
  412. data/pdf2json-0.52-source/xpdf/UnicodeMap.h.old +123 -0
  413. data/pdf2json-0.52-source/xpdf/UnicodeMap.o +0 -0
  414. data/pdf2json-0.52-source/xpdf/UnicodeMapTables.h +361 -0
  415. data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.cc +949 -0
  416. data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.h +20 -0
  417. data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.o +0 -0
  418. data/pdf2json-0.52-source/xpdf/XPDFApp.cc +447 -0
  419. data/pdf2json-0.52-source/xpdf/XPDFApp.h +114 -0
  420. data/pdf2json-0.52-source/xpdf/XPDFCore.cc +1655 -0
  421. data/pdf2json-0.52-source/xpdf/XPDFCore.h +251 -0
  422. data/pdf2json-0.52-source/xpdf/XPDFTree.cc +931 -0
  423. data/pdf2json-0.52-source/xpdf/XPDFTree.h +45 -0
  424. data/pdf2json-0.52-source/xpdf/XPDFTreeP.h +87 -0
  425. data/pdf2json-0.52-source/xpdf/XPDFViewer.cc +3488 -0
  426. data/pdf2json-0.52-source/xpdf/XPDFViewer.h +352 -0
  427. data/pdf2json-0.52-source/xpdf/XRef.cc +896 -0
  428. data/pdf2json-0.52-source/xpdf/XRef.h +133 -0
  429. data/pdf2json-0.52-source/xpdf/XRef.o +0 -0
  430. data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.cc +262 -0
  431. data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.h +341 -0
  432. data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.o +0 -0
  433. data/pdf2json-0.52-source/xpdf/about-text.h +48 -0
  434. data/pdf2json-0.52-source/xpdf/about.xbm +6 -0
  435. data/pdf2json-0.52-source/xpdf/backArrow.xbm +6 -0
  436. data/pdf2json-0.52-source/xpdf/backArrowDis.xbm +6 -0
  437. data/pdf2json-0.52-source/xpdf/config.h +112 -0
  438. data/pdf2json-0.52-source/xpdf/dblLeftArrow.xbm +6 -0
  439. data/pdf2json-0.52-source/xpdf/dblLeftArrowDis.xbm +6 -0
  440. data/pdf2json-0.52-source/xpdf/dblRightArrow.xbm +6 -0
  441. data/pdf2json-0.52-source/xpdf/dblRightArrowDis.xbm +6 -0
  442. data/pdf2json-0.52-source/xpdf/find.xbm +6 -0
  443. data/pdf2json-0.52-source/xpdf/findDis.xbm +6 -0
  444. data/pdf2json-0.52-source/xpdf/forwardArrow.xbm +6 -0
  445. data/pdf2json-0.52-source/xpdf/forwardArrowDis.xbm +6 -0
  446. data/pdf2json-0.52-source/xpdf/leftArrow.xbm +5 -0
  447. data/pdf2json-0.52-source/xpdf/leftArrowDis.xbm +5 -0
  448. data/pdf2json-0.52-source/xpdf/libXpdf.a +0 -0
  449. data/pdf2json-0.52-source/xpdf/pdffonts +0 -0
  450. data/pdf2json-0.52-source/xpdf/pdffonts.cc +298 -0
  451. data/pdf2json-0.52-source/xpdf/pdffonts.o +0 -0
  452. data/pdf2json-0.52-source/xpdf/pdfimages +0 -0
  453. data/pdf2json-0.52-source/xpdf/pdfimages.cc +155 -0
  454. data/pdf2json-0.52-source/xpdf/pdfimages.o +0 -0
  455. data/pdf2json-0.52-source/xpdf/pdfinfo +0 -0
  456. data/pdf2json-0.52-source/xpdf/pdfinfo.cc +387 -0
  457. data/pdf2json-0.52-source/xpdf/pdfinfo.o +0 -0
  458. data/pdf2json-0.52-source/xpdf/pdftoppm.cc +203 -0
  459. data/pdf2json-0.52-source/xpdf/pdftops +0 -0
  460. data/pdf2json-0.52-source/xpdf/pdftops.cc +344 -0
  461. data/pdf2json-0.52-source/xpdf/pdftops.o +0 -0
  462. data/pdf2json-0.52-source/xpdf/pdftotext +0 -0
  463. data/pdf2json-0.52-source/xpdf/pdftotext.cc +333 -0
  464. data/pdf2json-0.52-source/xpdf/pdftotext.o +0 -0
  465. data/pdf2json-0.52-source/xpdf/print.xbm +6 -0
  466. data/pdf2json-0.52-source/xpdf/printDis.xbm +6 -0
  467. data/pdf2json-0.52-source/xpdf/rightArrow.xbm +5 -0
  468. data/pdf2json-0.52-source/xpdf/rightArrowDis.xbm +5 -0
  469. data/pdf2json-0.52-source/xpdf/vms_make.com +129 -0
  470. data/pdf2json-0.52-source/xpdf/xpdf.cc +344 -0
  471. data/pdf2json-0.52-source/xpdf/xpdfIcon.xpm +62 -0
  472. data/pdf2json.gemspec +29 -0
  473. metadata +518 -0
@@ -0,0 +1,1244 @@
1
+ //========================================================================
2
+ //
3
+ // GfxState.h
4
+ //
5
+ // Copyright 1996-2003 Glyph & Cog, LLC
6
+ //
7
+ //========================================================================
8
+
9
+ #ifndef GFXSTATE_H
10
+ #define GFXSTATE_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 "Function.h"
21
+
22
+ class Array;
23
+ class GfxFont;
24
+ class PDFRectangle;
25
+ class GfxShading;
26
+
27
+ //------------------------------------------------------------------------
28
+ // GfxBlendMode
29
+ //------------------------------------------------------------------------
30
+
31
+ enum GfxBlendMode {
32
+ gfxBlendNormal,
33
+ gfxBlendMultiply,
34
+ gfxBlendScreen,
35
+ gfxBlendOverlay,
36
+ gfxBlendDarken,
37
+ gfxBlendLighten,
38
+ gfxBlendColorDodge,
39
+ gfxBlendColorBurn,
40
+ gfxBlendHardLight,
41
+ gfxBlendSoftLight,
42
+ gfxBlendDifference,
43
+ gfxBlendExclusion,
44
+ gfxBlendHue,
45
+ gfxBlendSaturation,
46
+ gfxBlendColor,
47
+ gfxBlendLuminosity
48
+ };
49
+
50
+ //------------------------------------------------------------------------
51
+ // GfxColorComp
52
+ //------------------------------------------------------------------------
53
+
54
+ // 16.16 fixed point color component
55
+ typedef int GfxColorComp;
56
+
57
+ #define gfxColorComp1 0x10000
58
+
59
+ static inline GfxColorComp dblToCol(double x) {
60
+ return (GfxColorComp)(x * gfxColorComp1);
61
+ }
62
+
63
+ static inline double colToDbl(GfxColorComp x) {
64
+ return (double)x / (double)gfxColorComp1;
65
+ }
66
+
67
+ static inline GfxColorComp byteToCol(Guchar x) {
68
+ // (x / 255) << 16 = (0.0000000100000001... * x) << 16
69
+ // = ((x << 8) + (x) + (x >> 8) + ...) << 16
70
+ // = (x << 8) + (x) + (x >> 7)
71
+ // [for rounding]
72
+ return (GfxColorComp)((x << 8) + x + (x >> 7));
73
+ }
74
+
75
+ static inline Guchar colToByte(GfxColorComp x) {
76
+ // 255 * x + 0.5 = 256 * x - x + 0x8000
77
+ return (Guchar)(((x << 8) - x + 0x8000) >> 16);
78
+ }
79
+
80
+ //------------------------------------------------------------------------
81
+ // GfxColor
82
+ //------------------------------------------------------------------------
83
+
84
+ #define gfxColorMaxComps funcMaxOutputs
85
+
86
+ struct GfxColor {
87
+ GfxColorComp c[gfxColorMaxComps];
88
+ };
89
+
90
+ //------------------------------------------------------------------------
91
+ // GfxGray
92
+ //------------------------------------------------------------------------
93
+
94
+ typedef GfxColorComp GfxGray;
95
+
96
+ //------------------------------------------------------------------------
97
+ // GfxRGB
98
+ //------------------------------------------------------------------------
99
+
100
+ struct GfxRGB {
101
+ GfxColorComp r, g, b;
102
+ };
103
+
104
+ //------------------------------------------------------------------------
105
+ // GfxCMYK
106
+ //------------------------------------------------------------------------
107
+
108
+ struct GfxCMYK {
109
+ GfxColorComp c, m, y, k;
110
+ };
111
+
112
+ //------------------------------------------------------------------------
113
+ // GfxColorSpace
114
+ //------------------------------------------------------------------------
115
+
116
+ // NB: The nGfxColorSpaceModes constant and the gfxColorSpaceModeNames
117
+ // array defined in GfxState.cc must match this enum.
118
+ enum GfxColorSpaceMode {
119
+ csDeviceGray,
120
+ csCalGray,
121
+ csDeviceRGB,
122
+ csCalRGB,
123
+ csDeviceCMYK,
124
+ csLab,
125
+ csICCBased,
126
+ csIndexed,
127
+ csSeparation,
128
+ csDeviceN,
129
+ csPattern
130
+ };
131
+
132
+ class GfxColorSpace {
133
+ public:
134
+
135
+ GfxColorSpace();
136
+ virtual ~GfxColorSpace();
137
+ virtual GfxColorSpace *copy() = 0;
138
+ virtual GfxColorSpaceMode getMode() = 0;
139
+
140
+ // Construct a color space. Returns NULL if unsuccessful.
141
+ static GfxColorSpace *parse(Object *csObj);
142
+
143
+ // Convert to gray, RGB, or CMYK.
144
+ virtual void getGray(GfxColor *color, GfxGray *gray) = 0;
145
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb) = 0;
146
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk) = 0;
147
+
148
+ // Return the number of color components.
149
+ virtual int getNComps() = 0;
150
+
151
+ // Get this color space's default color.
152
+ virtual void getDefaultColor(GfxColor *color) = 0;
153
+
154
+ // Return the default ranges for each component, assuming an image
155
+ // with a max pixel value of <maxImgPixel>.
156
+ virtual void getDefaultRanges(double *decodeLow, double *decodeRange,
157
+ int maxImgPixel);
158
+
159
+ // Returns true if painting operations in this color space never
160
+ // mark the page (e.g., the "None" colorant).
161
+ virtual GBool isNonMarking() { return gFalse; }
162
+
163
+ // Return the number of color space modes
164
+ static int getNumColorSpaceModes();
165
+
166
+ // Return the name of the <idx>th color space mode.
167
+ static char *getColorSpaceModeName(int idx);
168
+
169
+ private:
170
+ };
171
+
172
+ //------------------------------------------------------------------------
173
+ // GfxDeviceGrayColorSpace
174
+ //------------------------------------------------------------------------
175
+
176
+ class GfxDeviceGrayColorSpace: public GfxColorSpace {
177
+ public:
178
+
179
+ GfxDeviceGrayColorSpace();
180
+ virtual ~GfxDeviceGrayColorSpace();
181
+ virtual GfxColorSpace *copy();
182
+ virtual GfxColorSpaceMode getMode() { return csDeviceGray; }
183
+
184
+ virtual void getGray(GfxColor *color, GfxGray *gray);
185
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
186
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
187
+
188
+ virtual int getNComps() { return 1; }
189
+ virtual void getDefaultColor(GfxColor *color);
190
+
191
+ private:
192
+ };
193
+
194
+ //------------------------------------------------------------------------
195
+ // GfxCalGrayColorSpace
196
+ //------------------------------------------------------------------------
197
+
198
+ class GfxCalGrayColorSpace: public GfxColorSpace {
199
+ public:
200
+
201
+ GfxCalGrayColorSpace();
202
+ virtual ~GfxCalGrayColorSpace();
203
+ virtual GfxColorSpace *copy();
204
+ virtual GfxColorSpaceMode getMode() { return csCalGray; }
205
+
206
+ // Construct a CalGray color space. Returns NULL if unsuccessful.
207
+ static GfxColorSpace *parse(Array *arr);
208
+
209
+ virtual void getGray(GfxColor *color, GfxGray *gray);
210
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
211
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
212
+
213
+ virtual int getNComps() { return 1; }
214
+ virtual void getDefaultColor(GfxColor *color);
215
+
216
+ // CalGray-specific access.
217
+ double getWhiteX() { return whiteX; }
218
+ double getWhiteY() { return whiteY; }
219
+ double getWhiteZ() { return whiteZ; }
220
+ double getBlackX() { return blackX; }
221
+ double getBlackY() { return blackY; }
222
+ double getBlackZ() { return blackZ; }
223
+ double getGamma() { return gamma; }
224
+
225
+ private:
226
+
227
+ double whiteX, whiteY, whiteZ; // white point
228
+ double blackX, blackY, blackZ; // black point
229
+ double gamma; // gamma value
230
+ };
231
+
232
+ //------------------------------------------------------------------------
233
+ // GfxDeviceRGBColorSpace
234
+ //------------------------------------------------------------------------
235
+
236
+ class GfxDeviceRGBColorSpace: public GfxColorSpace {
237
+ public:
238
+
239
+ GfxDeviceRGBColorSpace();
240
+ virtual ~GfxDeviceRGBColorSpace();
241
+ virtual GfxColorSpace *copy();
242
+ virtual GfxColorSpaceMode getMode() { return csDeviceRGB; }
243
+
244
+ virtual void getGray(GfxColor *color, GfxGray *gray);
245
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
246
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
247
+
248
+ virtual int getNComps() { return 3; }
249
+ virtual void getDefaultColor(GfxColor *color);
250
+
251
+ private:
252
+ };
253
+
254
+ //------------------------------------------------------------------------
255
+ // GfxCalRGBColorSpace
256
+ //------------------------------------------------------------------------
257
+
258
+ class GfxCalRGBColorSpace: public GfxColorSpace {
259
+ public:
260
+
261
+ GfxCalRGBColorSpace();
262
+ virtual ~GfxCalRGBColorSpace();
263
+ virtual GfxColorSpace *copy();
264
+ virtual GfxColorSpaceMode getMode() { return csCalRGB; }
265
+
266
+ // Construct a CalRGB color space. Returns NULL if unsuccessful.
267
+ static GfxColorSpace *parse(Array *arr);
268
+
269
+ virtual void getGray(GfxColor *color, GfxGray *gray);
270
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
271
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
272
+
273
+ virtual int getNComps() { return 3; }
274
+ virtual void getDefaultColor(GfxColor *color);
275
+
276
+ // CalRGB-specific access.
277
+ double getWhiteX() { return whiteX; }
278
+ double getWhiteY() { return whiteY; }
279
+ double getWhiteZ() { return whiteZ; }
280
+ double getBlackX() { return blackX; }
281
+ double getBlackY() { return blackY; }
282
+ double getBlackZ() { return blackZ; }
283
+ double getGammaR() { return gammaR; }
284
+ double getGammaG() { return gammaG; }
285
+ double getGammaB() { return gammaB; }
286
+ double *getMatrix() { return mat; }
287
+
288
+ private:
289
+
290
+ double whiteX, whiteY, whiteZ; // white point
291
+ double blackX, blackY, blackZ; // black point
292
+ double gammaR, gammaG, gammaB; // gamma values
293
+ double mat[9]; // ABC -> XYZ transform matrix
294
+ };
295
+
296
+ //------------------------------------------------------------------------
297
+ // GfxDeviceCMYKColorSpace
298
+ //------------------------------------------------------------------------
299
+
300
+ class GfxDeviceCMYKColorSpace: public GfxColorSpace {
301
+ public:
302
+
303
+ GfxDeviceCMYKColorSpace();
304
+ virtual ~GfxDeviceCMYKColorSpace();
305
+ virtual GfxColorSpace *copy();
306
+ virtual GfxColorSpaceMode getMode() { return csDeviceCMYK; }
307
+
308
+ virtual void getGray(GfxColor *color, GfxGray *gray);
309
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
310
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
311
+
312
+ virtual int getNComps() { return 4; }
313
+ virtual void getDefaultColor(GfxColor *color);
314
+
315
+ private:
316
+ };
317
+
318
+ //------------------------------------------------------------------------
319
+ // GfxLabColorSpace
320
+ //------------------------------------------------------------------------
321
+
322
+ class GfxLabColorSpace: public GfxColorSpace {
323
+ public:
324
+
325
+ GfxLabColorSpace();
326
+ virtual ~GfxLabColorSpace();
327
+ virtual GfxColorSpace *copy();
328
+ virtual GfxColorSpaceMode getMode() { return csLab; }
329
+
330
+ // Construct a Lab color space. Returns NULL if unsuccessful.
331
+ static GfxColorSpace *parse(Array *arr);
332
+
333
+ virtual void getGray(GfxColor *color, GfxGray *gray);
334
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
335
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
336
+
337
+ virtual int getNComps() { return 3; }
338
+ virtual void getDefaultColor(GfxColor *color);
339
+
340
+ virtual void getDefaultRanges(double *decodeLow, double *decodeRange,
341
+ int maxImgPixel);
342
+
343
+ // Lab-specific access.
344
+ double getWhiteX() { return whiteX; }
345
+ double getWhiteY() { return whiteY; }
346
+ double getWhiteZ() { return whiteZ; }
347
+ double getBlackX() { return blackX; }
348
+ double getBlackY() { return blackY; }
349
+ double getBlackZ() { return blackZ; }
350
+ double getAMin() { return aMin; }
351
+ double getAMax() { return aMax; }
352
+ double getBMin() { return bMin; }
353
+ double getBMax() { return bMax; }
354
+
355
+ private:
356
+
357
+ double whiteX, whiteY, whiteZ; // white point
358
+ double blackX, blackY, blackZ; // black point
359
+ double aMin, aMax, bMin, bMax; // range for the a and b components
360
+ double kr, kg, kb; // gamut mapping mulitpliers
361
+ };
362
+
363
+ //------------------------------------------------------------------------
364
+ // GfxICCBasedColorSpace
365
+ //------------------------------------------------------------------------
366
+
367
+ class GfxICCBasedColorSpace: public GfxColorSpace {
368
+ public:
369
+
370
+ GfxICCBasedColorSpace(int nCompsA, GfxColorSpace *altA,
371
+ Ref *iccProfileStreamA);
372
+ virtual ~GfxICCBasedColorSpace();
373
+ virtual GfxColorSpace *copy();
374
+ virtual GfxColorSpaceMode getMode() { return csICCBased; }
375
+
376
+ // Construct an ICCBased color space. Returns NULL if unsuccessful.
377
+ static GfxColorSpace *parse(Array *arr);
378
+
379
+ virtual void getGray(GfxColor *color, GfxGray *gray);
380
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
381
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
382
+
383
+ virtual int getNComps() { return nComps; }
384
+ virtual void getDefaultColor(GfxColor *color);
385
+
386
+ virtual void getDefaultRanges(double *decodeLow, double *decodeRange,
387
+ int maxImgPixel);
388
+
389
+ // ICCBased-specific access.
390
+ GfxColorSpace *getAlt() { return alt; }
391
+
392
+ private:
393
+
394
+ int nComps; // number of color components (1, 3, or 4)
395
+ GfxColorSpace *alt; // alternate color space
396
+ double rangeMin[4]; // min values for each component
397
+ double rangeMax[4]; // max values for each component
398
+ Ref iccProfileStream; // the ICC profile
399
+ };
400
+
401
+ //------------------------------------------------------------------------
402
+ // GfxIndexedColorSpace
403
+ //------------------------------------------------------------------------
404
+
405
+ class GfxIndexedColorSpace: public GfxColorSpace {
406
+ public:
407
+
408
+ GfxIndexedColorSpace(GfxColorSpace *baseA, int indexHighA);
409
+ virtual ~GfxIndexedColorSpace();
410
+ virtual GfxColorSpace *copy();
411
+ virtual GfxColorSpaceMode getMode() { return csIndexed; }
412
+
413
+ // Construct a Lab color space. Returns NULL if unsuccessful.
414
+ static GfxColorSpace *parse(Array *arr);
415
+
416
+ virtual void getGray(GfxColor *color, GfxGray *gray);
417
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
418
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
419
+
420
+ virtual int getNComps() { return 1; }
421
+ virtual void getDefaultColor(GfxColor *color);
422
+
423
+ virtual void getDefaultRanges(double *decodeLow, double *decodeRange,
424
+ int maxImgPixel);
425
+
426
+ // Indexed-specific access.
427
+ GfxColorSpace *getBase() { return base; }
428
+ int getIndexHigh() { return indexHigh; }
429
+ Guchar *getLookup() { return lookup; }
430
+ GfxColor *mapColorToBase(GfxColor *color, GfxColor *baseColor);
431
+
432
+ private:
433
+
434
+ GfxColorSpace *base; // base color space
435
+ int indexHigh; // max pixel value
436
+ Guchar *lookup; // lookup table
437
+ };
438
+
439
+ //------------------------------------------------------------------------
440
+ // GfxSeparationColorSpace
441
+ //------------------------------------------------------------------------
442
+
443
+ class GfxSeparationColorSpace: public GfxColorSpace {
444
+ public:
445
+
446
+ GfxSeparationColorSpace(GString *nameA, GfxColorSpace *altA,
447
+ Function *funcA);
448
+ virtual ~GfxSeparationColorSpace();
449
+ virtual GfxColorSpace *copy();
450
+ virtual GfxColorSpaceMode getMode() { return csSeparation; }
451
+
452
+ // Construct a Separation color space. Returns NULL if unsuccessful.
453
+ static GfxColorSpace *parse(Array *arr);
454
+
455
+ virtual void getGray(GfxColor *color, GfxGray *gray);
456
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
457
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
458
+
459
+ virtual int getNComps() { return 1; }
460
+ virtual void getDefaultColor(GfxColor *color);
461
+
462
+ virtual GBool isNonMarking() { return nonMarking; }
463
+
464
+ // Separation-specific access.
465
+ GString *getName() { return name; }
466
+ GfxColorSpace *getAlt() { return alt; }
467
+ Function *getFunc() { return func; }
468
+
469
+ private:
470
+
471
+ GString *name; // colorant name
472
+ GfxColorSpace *alt; // alternate color space
473
+ Function *func; // tint transform (into alternate color space)
474
+ GBool nonMarking;
475
+ };
476
+
477
+ //------------------------------------------------------------------------
478
+ // GfxDeviceNColorSpace
479
+ //------------------------------------------------------------------------
480
+
481
+ class GfxDeviceNColorSpace: public GfxColorSpace {
482
+ public:
483
+
484
+ GfxDeviceNColorSpace(int nCompsA, GfxColorSpace *alt, Function *func);
485
+ virtual ~GfxDeviceNColorSpace();
486
+ virtual GfxColorSpace *copy();
487
+ virtual GfxColorSpaceMode getMode() { return csDeviceN; }
488
+
489
+ // Construct a DeviceN color space. Returns NULL if unsuccessful.
490
+ static GfxColorSpace *parse(Array *arr);
491
+
492
+ virtual void getGray(GfxColor *color, GfxGray *gray);
493
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
494
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
495
+
496
+ virtual int getNComps() { return nComps; }
497
+ virtual void getDefaultColor(GfxColor *color);
498
+
499
+ virtual GBool isNonMarking() { return nonMarking; }
500
+
501
+ // DeviceN-specific access.
502
+ GString *getColorantName(int i) { return names[i]; }
503
+ GfxColorSpace *getAlt() { return alt; }
504
+ Function *getTintTransformFunc() { return func; }
505
+
506
+ private:
507
+
508
+ int nComps; // number of components
509
+ GString // colorant names
510
+ *names[gfxColorMaxComps];
511
+ GfxColorSpace *alt; // alternate color space
512
+ Function *func; // tint transform (into alternate color space)
513
+ GBool nonMarking;
514
+ };
515
+
516
+ //------------------------------------------------------------------------
517
+ // GfxPatternColorSpace
518
+ //------------------------------------------------------------------------
519
+
520
+ class GfxPatternColorSpace: public GfxColorSpace {
521
+ public:
522
+
523
+ GfxPatternColorSpace(GfxColorSpace *underA);
524
+ virtual ~GfxPatternColorSpace();
525
+ virtual GfxColorSpace *copy();
526
+ virtual GfxColorSpaceMode getMode() { return csPattern; }
527
+
528
+ // Construct a Pattern color space. Returns NULL if unsuccessful.
529
+ static GfxColorSpace *parse(Array *arr);
530
+
531
+ virtual void getGray(GfxColor *color, GfxGray *gray);
532
+ virtual void getRGB(GfxColor *color, GfxRGB *rgb);
533
+ virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk);
534
+
535
+ virtual int getNComps() { return 0; }
536
+ virtual void getDefaultColor(GfxColor *color);
537
+
538
+ // Pattern-specific access.
539
+ GfxColorSpace *getUnder() { return under; }
540
+
541
+ private:
542
+
543
+ GfxColorSpace *under; // underlying color space (for uncolored
544
+ // patterns)
545
+ };
546
+
547
+ //------------------------------------------------------------------------
548
+ // GfxPattern
549
+ //------------------------------------------------------------------------
550
+
551
+ class GfxPattern {
552
+ public:
553
+
554
+ GfxPattern(int typeA);
555
+ virtual ~GfxPattern();
556
+
557
+ static GfxPattern *parse(Object *obj);
558
+
559
+ virtual GfxPattern *copy() = 0;
560
+
561
+ int getType() { return type; }
562
+
563
+ private:
564
+
565
+ int type;
566
+ };
567
+
568
+ //------------------------------------------------------------------------
569
+ // GfxTilingPattern
570
+ //------------------------------------------------------------------------
571
+
572
+ class GfxTilingPattern: public GfxPattern {
573
+ public:
574
+
575
+ static GfxTilingPattern *parse(Object *patObj);
576
+ virtual ~GfxTilingPattern();
577
+
578
+ virtual GfxPattern *copy();
579
+
580
+ int getPaintType() { return paintType; }
581
+ int getTilingType() { return tilingType; }
582
+ double *getBBox() { return bbox; }
583
+ double getXStep() { return xStep; }
584
+ double getYStep() { return yStep; }
585
+ Dict *getResDict()
586
+ { return resDict.isDict() ? resDict.getDict() : (Dict *)NULL; }
587
+ double *getMatrix() { return matrix; }
588
+ Object *getContentStream() { return &contentStream; }
589
+
590
+ private:
591
+
592
+ GfxTilingPattern(int paintTypeA, int tilingTypeA,
593
+ double *bboxA, double xStepA, double yStepA,
594
+ Object *resDictA, double *matrixA,
595
+ Object *contentStreamA);
596
+
597
+ int paintType;
598
+ int tilingType;
599
+ double bbox[4];
600
+ double xStep, yStep;
601
+ Object resDict;
602
+ double matrix[6];
603
+ Object contentStream;
604
+ };
605
+
606
+ //------------------------------------------------------------------------
607
+ // GfxShadingPattern
608
+ //------------------------------------------------------------------------
609
+
610
+ class GfxShadingPattern: public GfxPattern {
611
+ public:
612
+
613
+ static GfxShadingPattern *parse(Object *patObj);
614
+ virtual ~GfxShadingPattern();
615
+
616
+ virtual GfxPattern *copy();
617
+
618
+ GfxShading *getShading() { return shading; }
619
+ double *getMatrix() { return matrix; }
620
+
621
+ private:
622
+
623
+ GfxShadingPattern(GfxShading *shadingA, double *matrixA);
624
+
625
+ GfxShading *shading;
626
+ double matrix[6];
627
+ };
628
+
629
+ //------------------------------------------------------------------------
630
+ // GfxShading
631
+ //------------------------------------------------------------------------
632
+
633
+ class GfxShading {
634
+ public:
635
+
636
+ GfxShading(int typeA);
637
+ GfxShading(GfxShading *shading);
638
+ virtual ~GfxShading();
639
+
640
+ static GfxShading *parse(Object *obj);
641
+
642
+ virtual GfxShading *copy() = 0;
643
+
644
+ int getType() { return type; }
645
+ GfxColorSpace *getColorSpace() { return colorSpace; }
646
+ GfxColor *getBackground() { return &background; }
647
+ GBool getHasBackground() { return hasBackground; }
648
+ void getBBox(double *xMinA, double *yMinA, double *xMaxA, double *yMaxA)
649
+ { *xMinA = xMin; *yMinA = yMin; *xMaxA = xMax; *yMaxA = yMax; }
650
+ GBool getHasBBox() { return hasBBox; }
651
+
652
+ protected:
653
+
654
+ GBool init(Dict *dict);
655
+
656
+ int type;
657
+ GfxColorSpace *colorSpace;
658
+ GfxColor background;
659
+ GBool hasBackground;
660
+ double xMin, yMin, xMax, yMax;
661
+ GBool hasBBox;
662
+ };
663
+
664
+ //------------------------------------------------------------------------
665
+ // GfxFunctionShading
666
+ //------------------------------------------------------------------------
667
+
668
+ class GfxFunctionShading: public GfxShading {
669
+ public:
670
+
671
+ GfxFunctionShading(double x0A, double y0A,
672
+ double x1A, double y1A,
673
+ double *matrixA,
674
+ Function **funcsA, int nFuncsA);
675
+ GfxFunctionShading(GfxFunctionShading *shading);
676
+ virtual ~GfxFunctionShading();
677
+
678
+ static GfxFunctionShading *parse(Dict *dict);
679
+
680
+ virtual GfxShading *copy();
681
+
682
+ void getDomain(double *x0A, double *y0A, double *x1A, double *y1A)
683
+ { *x0A = x0; *y0A = y0; *x1A = x1; *y1A = y1; }
684
+ double *getMatrix() { return matrix; }
685
+ int getNFuncs() { return nFuncs; }
686
+ Function *getFunc(int i) { return funcs[i]; }
687
+ void getColor(double x, double y, GfxColor *color);
688
+
689
+ private:
690
+
691
+ double x0, y0, x1, y1;
692
+ double matrix[6];
693
+ Function *funcs[gfxColorMaxComps];
694
+ int nFuncs;
695
+ };
696
+
697
+ //------------------------------------------------------------------------
698
+ // GfxAxialShading
699
+ //------------------------------------------------------------------------
700
+
701
+ class GfxAxialShading: public GfxShading {
702
+ public:
703
+
704
+ GfxAxialShading(double x0A, double y0A,
705
+ double x1A, double y1A,
706
+ double t0A, double t1A,
707
+ Function **funcsA, int nFuncsA,
708
+ GBool extend0A, GBool extend1A);
709
+ GfxAxialShading(GfxAxialShading *shading);
710
+ virtual ~GfxAxialShading();
711
+
712
+ static GfxAxialShading *parse(Dict *dict);
713
+
714
+ virtual GfxShading *copy();
715
+
716
+ void getCoords(double *x0A, double *y0A, double *x1A, double *y1A)
717
+ { *x0A = x0; *y0A = y0; *x1A = x1; *y1A = y1; }
718
+ double getDomain0() { return t0; }
719
+ double getDomain1() { return t1; }
720
+ GBool getExtend0() { return extend0; }
721
+ GBool getExtend1() { return extend1; }
722
+ int getNFuncs() { return nFuncs; }
723
+ Function *getFunc(int i) { return funcs[i]; }
724
+ void getColor(double t, GfxColor *color);
725
+
726
+ private:
727
+
728
+ double x0, y0, x1, y1;
729
+ double t0, t1;
730
+ Function *funcs[gfxColorMaxComps];
731
+ int nFuncs;
732
+ GBool extend0, extend1;
733
+ };
734
+
735
+ //------------------------------------------------------------------------
736
+ // GfxRadialShading
737
+ //------------------------------------------------------------------------
738
+
739
+ class GfxRadialShading: public GfxShading {
740
+ public:
741
+
742
+ GfxRadialShading(double x0A, double y0A, double r0A,
743
+ double x1A, double y1A, double r1A,
744
+ double t0A, double t1A,
745
+ Function **funcsA, int nFuncsA,
746
+ GBool extend0A, GBool extend1A);
747
+ GfxRadialShading(GfxRadialShading *shading);
748
+ virtual ~GfxRadialShading();
749
+
750
+ static GfxRadialShading *parse(Dict *dict);
751
+
752
+ virtual GfxShading *copy();
753
+
754
+ void getCoords(double *x0A, double *y0A, double *r0A,
755
+ double *x1A, double *y1A, double *r1A)
756
+ { *x0A = x0; *y0A = y0; *r0A = r0; *x1A = x1; *y1A = y1; *r1A = r1; }
757
+ double getDomain0() { return t0; }
758
+ double getDomain1() { return t1; }
759
+ GBool getExtend0() { return extend0; }
760
+ GBool getExtend1() { return extend1; }
761
+ int getNFuncs() { return nFuncs; }
762
+ Function *getFunc(int i) { return funcs[i]; }
763
+ void getColor(double t, GfxColor *color);
764
+
765
+ private:
766
+
767
+ double x0, y0, r0, x1, y1, r1;
768
+ double t0, t1;
769
+ Function *funcs[gfxColorMaxComps];
770
+ int nFuncs;
771
+ GBool extend0, extend1;
772
+ };
773
+
774
+ //------------------------------------------------------------------------
775
+ // GfxGouraudTriangleShading
776
+ //------------------------------------------------------------------------
777
+
778
+ struct GfxGouraudVertex {
779
+ double x, y;
780
+ GfxColor color;
781
+ };
782
+
783
+ class GfxGouraudTriangleShading: public GfxShading {
784
+ public:
785
+
786
+ GfxGouraudTriangleShading(int typeA,
787
+ GfxGouraudVertex *verticesA, int nVerticesA,
788
+ int (*trianglesA)[3], int nTrianglesA,
789
+ Function **funcsA, int nFuncsA);
790
+ GfxGouraudTriangleShading(GfxGouraudTriangleShading *shading);
791
+ virtual ~GfxGouraudTriangleShading();
792
+
793
+ static GfxGouraudTriangleShading *parse(int typeA, Dict *dict, Stream *str);
794
+
795
+ virtual GfxShading *copy();
796
+
797
+ int getNTriangles() { return nTriangles; }
798
+ void getTriangle(int i, double *x0, double *y0, GfxColor *color0,
799
+ double *x1, double *y1, GfxColor *color1,
800
+ double *x2, double *y2, GfxColor *color2);
801
+
802
+ private:
803
+
804
+ GfxGouraudVertex *vertices;
805
+ int nVertices;
806
+ int (*triangles)[3];
807
+ int nTriangles;
808
+ Function *funcs[gfxColorMaxComps];
809
+ int nFuncs;
810
+ };
811
+
812
+ //------------------------------------------------------------------------
813
+ // GfxPatchMeshShading
814
+ //------------------------------------------------------------------------
815
+
816
+ struct GfxPatch {
817
+ double x[4][4];
818
+ double y[4][4];
819
+ GfxColor color[2][2];
820
+ };
821
+
822
+ class GfxPatchMeshShading: public GfxShading {
823
+ public:
824
+
825
+ GfxPatchMeshShading(int typeA, GfxPatch *patchesA, int nPatchesA,
826
+ Function **funcsA, int nFuncsA);
827
+ GfxPatchMeshShading(GfxPatchMeshShading *shading);
828
+ virtual ~GfxPatchMeshShading();
829
+
830
+ static GfxPatchMeshShading *parse(int typeA, Dict *dict, Stream *str);
831
+
832
+ virtual GfxShading *copy();
833
+
834
+ int getNPatches() { return nPatches; }
835
+ GfxPatch *getPatch(int i) { return &patches[i]; }
836
+
837
+ private:
838
+
839
+ GfxPatch *patches;
840
+ int nPatches;
841
+ Function *funcs[gfxColorMaxComps];
842
+ int nFuncs;
843
+ };
844
+
845
+ //------------------------------------------------------------------------
846
+ // GfxImageColorMap
847
+ //------------------------------------------------------------------------
848
+
849
+ class GfxImageColorMap {
850
+ public:
851
+
852
+ // Constructor.
853
+ GfxImageColorMap(int bitsA, Object *decode, GfxColorSpace *colorSpaceA);
854
+
855
+ // Destructor.
856
+ ~GfxImageColorMap();
857
+
858
+ // Return a copy of this color map.
859
+ GfxImageColorMap *copy() { return new GfxImageColorMap(this); }
860
+
861
+ // Is color map valid?
862
+ GBool isOk() { return ok; }
863
+
864
+ // Get the color space.
865
+ GfxColorSpace *getColorSpace() { return colorSpace; }
866
+
867
+ // Get stream decoding info.
868
+ int getNumPixelComps() { return nComps; }
869
+ int getBits() { return bits; }
870
+
871
+ // Get decode table.
872
+ double getDecodeLow(int i) { return decodeLow[i]; }
873
+ double getDecodeHigh(int i) { return decodeLow[i] + decodeRange[i]; }
874
+
875
+ // Convert an image pixel to a color.
876
+ void getGray(Guchar *x, GfxGray *gray);
877
+ void getRGB(Guchar *x, GfxRGB *rgb);
878
+ void getCMYK(Guchar *x, GfxCMYK *cmyk);
879
+ void getColor(Guchar *x, GfxColor *color);
880
+
881
+ private:
882
+
883
+ GfxImageColorMap(GfxImageColorMap *colorMap);
884
+
885
+ GfxColorSpace *colorSpace; // the image color space
886
+ int bits; // bits per component
887
+ int nComps; // number of components in a pixel
888
+ GfxColorSpace *colorSpace2; // secondary color space
889
+ int nComps2; // number of components in colorSpace2
890
+ GfxColorComp * // lookup table
891
+ lookup[gfxColorMaxComps];
892
+ double // minimum values for each component
893
+ decodeLow[gfxColorMaxComps];
894
+ double // max - min value for each component
895
+ decodeRange[gfxColorMaxComps];
896
+ GBool ok;
897
+ };
898
+
899
+ //------------------------------------------------------------------------
900
+ // GfxSubpath and GfxPath
901
+ //------------------------------------------------------------------------
902
+
903
+ class GfxSubpath {
904
+ public:
905
+
906
+ // Constructor.
907
+ GfxSubpath(double x1, double y1);
908
+
909
+ // Destructor.
910
+ ~GfxSubpath();
911
+
912
+ // Copy.
913
+ GfxSubpath *copy() { return new GfxSubpath(this); }
914
+
915
+ // Get points.
916
+ int getNumPoints() { return n; }
917
+ double getX(int i) { return x[i]; }
918
+ double getY(int i) { return y[i]; }
919
+ GBool getCurve(int i) { return curve[i]; }
920
+
921
+ // Get last point.
922
+ double getLastX() { return x[n-1]; }
923
+ double getLastY() { return y[n-1]; }
924
+
925
+ // Add a line segment.
926
+ void lineTo(double x1, double y1);
927
+
928
+ // Add a Bezier curve.
929
+ void curveTo(double x1, double y1, double x2, double y2,
930
+ double x3, double y3);
931
+
932
+ // Close the subpath.
933
+ void close();
934
+ GBool isClosed() { return closed; }
935
+
936
+ // Add (<dx>, <dy>) to each point in the subpath.
937
+ void offset(double dx, double dy);
938
+
939
+ private:
940
+
941
+ double *x, *y; // points
942
+ GBool *curve; // curve[i] => point i is a control point
943
+ // for a Bezier curve
944
+ int n; // number of points
945
+ int size; // size of x/y arrays
946
+ GBool closed; // set if path is closed
947
+
948
+ GfxSubpath(GfxSubpath *subpath);
949
+ };
950
+
951
+ class GfxPath {
952
+ public:
953
+
954
+ // Constructor.
955
+ GfxPath();
956
+
957
+ // Destructor.
958
+ ~GfxPath();
959
+
960
+ // Copy.
961
+ GfxPath *copy()
962
+ { return new GfxPath(justMoved, firstX, firstY, subpaths, n, size); }
963
+
964
+ // Is there a current point?
965
+ GBool isCurPt() { return n > 0 || justMoved; }
966
+
967
+ // Is the path non-empty, i.e., is there at least one segment?
968
+ GBool isPath() { return n > 0; }
969
+
970
+ // Get subpaths.
971
+ int getNumSubpaths() { return n; }
972
+ GfxSubpath *getSubpath(int i) { return subpaths[i]; }
973
+
974
+ // Get last point on last subpath.
975
+ double getLastX() { return subpaths[n-1]->getLastX(); }
976
+ double getLastY() { return subpaths[n-1]->getLastY(); }
977
+
978
+ // Move the current point.
979
+ void moveTo(double x, double y);
980
+
981
+ // Add a segment to the last subpath.
982
+ void lineTo(double x, double y);
983
+
984
+ // Add a Bezier curve to the last subpath
985
+ void curveTo(double x1, double y1, double x2, double y2,
986
+ double x3, double y3);
987
+
988
+ // Close the last subpath.
989
+ void close();
990
+
991
+ // Append <path> to <this>.
992
+ void append(GfxPath *path);
993
+
994
+ // Add (<dx>, <dy>) to each point in the path.
995
+ void offset(double dx, double dy);
996
+
997
+ private:
998
+
999
+ GBool justMoved; // set if a new subpath was just started
1000
+ double firstX, firstY; // first point in new subpath
1001
+ GfxSubpath **subpaths; // subpaths
1002
+ int n; // number of subpaths
1003
+ int size; // size of subpaths array
1004
+
1005
+ GfxPath(GBool justMoved1, double firstX1, double firstY1,
1006
+ GfxSubpath **subpaths1, int n1, int size1);
1007
+ };
1008
+
1009
+ //------------------------------------------------------------------------
1010
+ // GfxState
1011
+ //------------------------------------------------------------------------
1012
+
1013
+ class GfxState {
1014
+ public:
1015
+
1016
+ // Construct a default GfxState, for a device with resolution <hDPI>
1017
+ // x <vDPI>, page box <pageBox>, page rotation <rotateA>, and
1018
+ // coordinate system specified by <upsideDown>.
1019
+ GfxState(double hDPIA, double vDPIA, PDFRectangle *pageBox,
1020
+ int rotateA, GBool upsideDown);
1021
+
1022
+ // Destructor.
1023
+ ~GfxState();
1024
+
1025
+ // Copy.
1026
+ GfxState *copy() { return new GfxState(this); }
1027
+
1028
+ // Accessors.
1029
+ double getHDPI() { return hDPI; }
1030
+ double getVDPI() { return vDPI; }
1031
+ double *getCTM() { return ctm; }
1032
+ double getX1() { return px1; }
1033
+ double getY1() { return py1; }
1034
+ double getX2() { return px2; }
1035
+ double getY2() { return py2; }
1036
+ double getPageWidth() { return pageWidth; }
1037
+ double getPageHeight() { return pageHeight; }
1038
+ int getRotate() { return rotate; }
1039
+ GfxColor *getFillColor() { return &fillColor; }
1040
+ GfxColor *getStrokeColor() { return &strokeColor; }
1041
+ void getFillGray(GfxGray *gray)
1042
+ { fillColorSpace->getGray(&fillColor, gray); }
1043
+ void getStrokeGray(GfxGray *gray)
1044
+ { strokeColorSpace->getGray(&strokeColor, gray); }
1045
+ void getFillRGB(GfxRGB *rgb)
1046
+ { fillColorSpace->getRGB(&fillColor, rgb); }
1047
+ void getStrokeRGB(GfxRGB *rgb)
1048
+ { strokeColorSpace->getRGB(&strokeColor, rgb); }
1049
+ void getFillCMYK(GfxCMYK *cmyk)
1050
+ { fillColorSpace->getCMYK(&fillColor, cmyk); }
1051
+ void getStrokeCMYK(GfxCMYK *cmyk)
1052
+ { strokeColorSpace->getCMYK(&strokeColor, cmyk); }
1053
+ GfxColorSpace *getFillColorSpace() { return fillColorSpace; }
1054
+ GfxColorSpace *getStrokeColorSpace() { return strokeColorSpace; }
1055
+ GfxPattern *getFillPattern() { return fillPattern; }
1056
+ GfxPattern *getStrokePattern() { return strokePattern; }
1057
+ GfxBlendMode getBlendMode() { return blendMode; }
1058
+ double getFillOpacity() { return fillOpacity; }
1059
+ double getStrokeOpacity() { return strokeOpacity; }
1060
+ GBool getFillOverprint() { return fillOverprint; }
1061
+ GBool getStrokeOverprint() { return strokeOverprint; }
1062
+ Function **getTransfer() { return transfer; }
1063
+ double getLineWidth() { return lineWidth; }
1064
+ void getLineDash(double **dash, int *length, double *start)
1065
+ { *dash = lineDash; *length = lineDashLength; *start = lineDashStart; }
1066
+ int getFlatness() { return flatness; }
1067
+ int getLineJoin() { return lineJoin; }
1068
+ int getLineCap() { return lineCap; }
1069
+ double getMiterLimit() { return miterLimit; }
1070
+ GBool getStrokeAdjust() { return strokeAdjust; }
1071
+ GfxFont *getFont() { return font; }
1072
+ double getFontSize() { return fontSize; }
1073
+ double *getTextMat() { return textMat; }
1074
+ double getCharSpace() { return charSpace; }
1075
+ double getWordSpace() { return wordSpace; }
1076
+ double getHorizScaling() { return horizScaling; }
1077
+ double getLeading() { return leading; }
1078
+ double getRise() { return rise; }
1079
+ int getRender() { return render; }
1080
+ GfxPath *getPath() { return path; }
1081
+ void setPath(GfxPath *pathA);
1082
+ double getCurX() { return curX; }
1083
+ double getCurY() { return curY; }
1084
+ void getClipBBox(double *xMin, double *yMin, double *xMax, double *yMax)
1085
+ { *xMin = clipXMin; *yMin = clipYMin; *xMax = clipXMax; *yMax = clipYMax; }
1086
+ void getUserClipBBox(double *xMin, double *yMin, double *xMax, double *yMax);
1087
+ double getLineX() { return lineX; }
1088
+ double getLineY() { return lineY; }
1089
+
1090
+ // Is there a current point/path?
1091
+ GBool isCurPt() { return path->isCurPt(); }
1092
+ GBool isPath() { return path->isPath(); }
1093
+
1094
+ // Transforms.
1095
+ void transform(double x1, double y1, double *x2, double *y2)
1096
+ { *x2 = ctm[0] * x1 + ctm[2] * y1 + ctm[4];
1097
+ *y2 = ctm[1] * x1 + ctm[3] * y1 + ctm[5]; }
1098
+ void transformDelta(double x1, double y1, double *x2, double *y2)
1099
+ { *x2 = ctm[0] * x1 + ctm[2] * y1;
1100
+ *y2 = ctm[1] * x1 + ctm[3] * y1; }
1101
+ void textTransform(double x1, double y1, double *x2, double *y2)
1102
+ { *x2 = textMat[0] * x1 + textMat[2] * y1 + textMat[4];
1103
+ *y2 = textMat[1] * x1 + textMat[3] * y1 + textMat[5]; }
1104
+ void textTransformDelta(double x1, double y1, double *x2, double *y2)
1105
+ { *x2 = textMat[0] * x1 + textMat[2] * y1;
1106
+ *y2 = textMat[1] * x1 + textMat[3] * y1; }
1107
+ double transformWidth(double w);
1108
+ double getTransformedLineWidth()
1109
+ { return transformWidth(lineWidth); }
1110
+ double getTransformedFontSize();
1111
+ void getFontTransMat(double *m11, double *m12, double *m21, double *m22);
1112
+
1113
+ // Change state parameters.
1114
+ void setCTM(double a, double b, double c,
1115
+ double d, double e, double f);
1116
+ void concatCTM(double a, double b, double c,
1117
+ double d, double e, double f);
1118
+ void shiftCTM(double tx, double ty);
1119
+ void setFillColorSpace(GfxColorSpace *colorSpace);
1120
+ void setStrokeColorSpace(GfxColorSpace *colorSpace);
1121
+ void setFillColor(GfxColor *color) { fillColor = *color; }
1122
+ void setStrokeColor(GfxColor *color) { strokeColor = *color; }
1123
+ void setFillPattern(GfxPattern *pattern);
1124
+ void setStrokePattern(GfxPattern *pattern);
1125
+ void setBlendMode(GfxBlendMode mode) { blendMode = mode; }
1126
+ void setFillOpacity(double opac) { fillOpacity = opac; }
1127
+ void setStrokeOpacity(double opac) { strokeOpacity = opac; }
1128
+ void setFillOverprint(GBool op) { fillOverprint = op; }
1129
+ void setStrokeOverprint(GBool op) { strokeOverprint = op; }
1130
+ void setTransfer(Function **funcs);
1131
+ void setLineWidth(double width) { lineWidth = width; }
1132
+ void setLineDash(double *dash, int length, double start);
1133
+ void setFlatness(int flatness1) { flatness = flatness1; }
1134
+ void setLineJoin(int lineJoin1) { lineJoin = lineJoin1; }
1135
+ void setLineCap(int lineCap1) { lineCap = lineCap1; }
1136
+ void setMiterLimit(double limit) { miterLimit = limit; }
1137
+ void setStrokeAdjust(GBool sa) { strokeAdjust = sa; }
1138
+ void setFont(GfxFont *fontA, double fontSizeA)
1139
+ { font = fontA; fontSize = fontSizeA; }
1140
+ void setTextMat(double a, double b, double c,
1141
+ double d, double e, double f)
1142
+ { textMat[0] = a; textMat[1] = b; textMat[2] = c;
1143
+ textMat[3] = d; textMat[4] = e; textMat[5] = f; }
1144
+ void setCharSpace(double space)
1145
+ { charSpace = space; }
1146
+ void setWordSpace(double space)
1147
+ { wordSpace = space; }
1148
+ void setHorizScaling(double scale)
1149
+ { horizScaling = 0.01 * scale; }
1150
+ void setLeading(double leadingA)
1151
+ { leading = leadingA; }
1152
+ void setRise(double riseA)
1153
+ { rise = riseA; }
1154
+ void setRender(int renderA)
1155
+ { render = renderA; }
1156
+
1157
+ // Add to path.
1158
+ void moveTo(double x, double y)
1159
+ { path->moveTo(curX = x, curY = y); }
1160
+ void lineTo(double x, double y)
1161
+ { path->lineTo(curX = x, curY = y); }
1162
+ void curveTo(double x1, double y1, double x2, double y2,
1163
+ double x3, double y3)
1164
+ { path->curveTo(x1, y1, x2, y2, curX = x3, curY = y3); }
1165
+ void closePath()
1166
+ { path->close(); curX = path->getLastX(); curY = path->getLastY(); }
1167
+ void clearPath();
1168
+
1169
+ // Update clip region.
1170
+ void clip();
1171
+ void clipToStrokePath();
1172
+
1173
+ // Text position.
1174
+ void textSetPos(double tx, double ty) { lineX = tx; lineY = ty; }
1175
+ void textMoveTo(double tx, double ty)
1176
+ { lineX = tx; lineY = ty; textTransform(tx, ty, &curX, &curY); }
1177
+ void textShift(double tx, double ty);
1178
+ void shift(double dx, double dy);
1179
+
1180
+ // Push/pop GfxState on/off stack.
1181
+ GfxState *save();
1182
+ GfxState *restore();
1183
+ GBool hasSaves() { return saved != NULL; }
1184
+
1185
+ // Misc
1186
+ GBool parseBlendMode(Object *obj, GfxBlendMode *mode);
1187
+
1188
+ private:
1189
+
1190
+ double hDPI, vDPI; // resolution
1191
+ double ctm[6]; // coord transform matrix
1192
+ double px1, py1, px2, py2; // page corners (user coords)
1193
+ double pageWidth, pageHeight; // page size (pixels)
1194
+ int rotate; // page rotation angle
1195
+
1196
+ GfxColorSpace *fillColorSpace; // fill color space
1197
+ GfxColorSpace *strokeColorSpace; // stroke color space
1198
+ GfxColor fillColor; // fill color
1199
+ GfxColor strokeColor; // stroke color
1200
+ GfxPattern *fillPattern; // fill pattern
1201
+ GfxPattern *strokePattern; // stroke pattern
1202
+ GfxBlendMode blendMode; // transparency blend mode
1203
+ double fillOpacity; // fill opacity
1204
+ double strokeOpacity; // stroke opacity
1205
+ GBool fillOverprint; // fill overprint
1206
+ GBool strokeOverprint; // stroke overprint
1207
+ Function *transfer[4]; // transfer function (entries may be: all
1208
+ // NULL = identity; last three NULL =
1209
+ // single function; all four non-NULL =
1210
+ // R,G,B,gray functions)
1211
+
1212
+ double lineWidth; // line width
1213
+ double *lineDash; // line dash
1214
+ int lineDashLength;
1215
+ double lineDashStart;
1216
+ int flatness; // curve flatness
1217
+ int lineJoin; // line join style
1218
+ int lineCap; // line cap style
1219
+ double miterLimit; // line miter limit
1220
+ GBool strokeAdjust; // stroke adjustment
1221
+
1222
+ GfxFont *font; // font
1223
+ double fontSize; // font size
1224
+ double textMat[6]; // text matrix
1225
+ double charSpace; // character spacing
1226
+ double wordSpace; // word spacing
1227
+ double horizScaling; // horizontal scaling
1228
+ double leading; // text leading
1229
+ double rise; // text rise
1230
+ int render; // text rendering mode
1231
+
1232
+ GfxPath *path; // array of path elements
1233
+ double curX, curY; // current point (user coords)
1234
+ double lineX, lineY; // start of current text line (text coords)
1235
+
1236
+ double clipXMin, clipYMin, // bounding box for clip region
1237
+ clipXMax, clipYMax;
1238
+
1239
+ GfxState *saved; // next GfxState on stack
1240
+
1241
+ GfxState(GfxState *state);
1242
+ };
1243
+
1244
+ #endif