pdf2json 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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