muhammara 5.0.0 → 5.0.2

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 (1149) hide show
  1. package/CHANGELOG.md +22 -3
  2. package/README.md +5 -0
  3. package/binding.gyp +3 -0
  4. package/lib/recipe/htmlToTextObjects.js +7 -4
  5. package/lib/recipe/text.js +2 -1
  6. package/muhammara.d.ts +1 -0
  7. package/package.json +1 -1
  8. package/src/deps/FreeType/CMakeLists.txt +88 -498
  9. package/src/deps/FreeType/binding.gyp +45 -41
  10. package/src/deps/FreeType/include/dlg/dlg.h +270 -0
  11. package/src/deps/FreeType/include/dlg/output.h +172 -0
  12. package/src/deps/FreeType/include/freetype/config/ftconfig.h +4 -528
  13. package/src/deps/FreeType/include/freetype/config/ftheader.h +49 -27
  14. package/src/deps/FreeType/include/freetype/config/ftmodule.h +5 -4
  15. package/src/deps/FreeType/include/freetype/config/ftoption.h +102 -37
  16. package/src/deps/FreeType/include/freetype/config/ftstdlib.h +12 -2
  17. package/src/deps/FreeType/include/freetype/config/integer-types.h +250 -0
  18. package/src/deps/FreeType/include/freetype/config/mac-support.h +49 -0
  19. package/src/deps/FreeType/include/freetype/config/public-macros.h +138 -0
  20. package/src/deps/FreeType/include/freetype/freetype.h +548 -370
  21. package/src/deps/FreeType/include/freetype/ftadvanc.h +3 -3
  22. package/src/deps/FreeType/include/freetype/ftbbox.h +2 -3
  23. package/src/deps/FreeType/include/freetype/ftbdf.h +2 -3
  24. package/src/deps/FreeType/include/freetype/ftbitmap.h +3 -4
  25. package/src/deps/FreeType/include/freetype/ftbzip2.h +12 -12
  26. package/src/deps/FreeType/include/freetype/ftcache.h +5 -6
  27. package/src/deps/FreeType/include/freetype/ftchapters.h +4 -0
  28. package/src/deps/FreeType/include/freetype/ftcid.h +2 -3
  29. package/src/deps/FreeType/include/freetype/ftcolor.h +1365 -9
  30. package/src/deps/FreeType/include/freetype/ftdriver.h +86 -69
  31. package/src/deps/FreeType/include/freetype/fterrdef.h +5 -1
  32. package/src/deps/FreeType/include/freetype/fterrors.h +21 -10
  33. package/src/deps/FreeType/include/freetype/ftfntfmt.h +2 -3
  34. package/src/deps/FreeType/include/freetype/ftgasp.h +2 -3
  35. package/src/deps/FreeType/include/freetype/ftglyph.h +108 -23
  36. package/src/deps/FreeType/include/freetype/ftgxval.h +2 -3
  37. package/src/deps/FreeType/include/freetype/ftgzip.h +12 -12
  38. package/src/deps/FreeType/include/freetype/ftimage.h +106 -68
  39. package/src/deps/FreeType/include/freetype/ftincrem.h +13 -9
  40. package/src/deps/FreeType/include/freetype/ftlcdfil.h +27 -32
  41. package/src/deps/FreeType/include/freetype/ftlist.h +2 -3
  42. package/src/deps/FreeType/include/freetype/ftlogging.h +184 -0
  43. package/src/deps/FreeType/include/freetype/ftlzw.h +12 -12
  44. package/src/deps/FreeType/include/freetype/ftmac.h +1 -2
  45. package/src/deps/FreeType/include/freetype/ftmm.h +18 -7
  46. package/src/deps/FreeType/include/freetype/ftmodapi.h +32 -10
  47. package/src/deps/FreeType/include/freetype/ftmoderr.h +3 -2
  48. package/src/deps/FreeType/include/freetype/ftotval.h +2 -3
  49. package/src/deps/FreeType/include/freetype/ftoutln.h +14 -19
  50. package/src/deps/FreeType/include/freetype/ftparams.h +17 -3
  51. package/src/deps/FreeType/include/freetype/ftpfr.h +3 -4
  52. package/src/deps/FreeType/include/freetype/ftrender.h +3 -4
  53. package/src/deps/FreeType/include/freetype/ftsizes.h +2 -3
  54. package/src/deps/FreeType/include/freetype/ftsnames.h +3 -4
  55. package/src/deps/FreeType/include/freetype/ftstroke.h +22 -21
  56. package/src/deps/FreeType/include/freetype/ftsynth.h +12 -4
  57. package/src/deps/FreeType/include/freetype/ftsystem.h +10 -5
  58. package/src/deps/FreeType/include/freetype/fttrigon.h +2 -2
  59. package/src/deps/FreeType/include/freetype/fttypes.h +15 -13
  60. package/src/deps/FreeType/include/freetype/ftwinfnt.h +4 -5
  61. package/src/deps/FreeType/include/freetype/internal/autohint.h +5 -3
  62. package/src/deps/FreeType/include/freetype/internal/cffotypes.h +6 -7
  63. package/src/deps/FreeType/include/freetype/internal/cfftypes.h +8 -9
  64. package/src/deps/FreeType/include/freetype/internal/compiler-macros.h +340 -0
  65. package/src/deps/FreeType/include/freetype/internal/ftcalc.h +86 -15
  66. package/src/deps/FreeType/include/freetype/internal/ftdebug.h +168 -9
  67. package/src/deps/FreeType/include/freetype/internal/ftdrv.h +3 -3
  68. package/src/deps/FreeType/include/freetype/internal/ftgloadr.h +3 -5
  69. package/src/deps/FreeType/include/freetype/internal/fthash.h +1 -2
  70. package/src/deps/FreeType/include/freetype/internal/ftmemory.h +26 -20
  71. package/src/deps/FreeType/include/freetype/internal/ftmmtypes.h +85 -0
  72. package/src/deps/FreeType/include/freetype/internal/ftobjs.h +23 -21
  73. package/src/deps/FreeType/include/freetype/internal/ftpsprop.h +2 -3
  74. package/src/deps/FreeType/include/freetype/internal/ftrfork.h +2 -3
  75. package/src/deps/FreeType/include/freetype/internal/ftserv.h +2 -28
  76. package/src/deps/FreeType/include/freetype/internal/ftstream.h +81 -72
  77. package/src/deps/FreeType/include/freetype/internal/fttrace.h +22 -6
  78. package/src/deps/FreeType/include/freetype/internal/ftvalid.h +3 -2
  79. package/src/deps/FreeType/include/freetype/internal/psaux.h +12 -17
  80. package/src/deps/FreeType/include/freetype/internal/pshints.h +5 -6
  81. package/src/deps/FreeType/include/freetype/internal/services/svbdf.h +3 -3
  82. package/src/deps/FreeType/include/freetype/internal/services/svcfftl.h +3 -3
  83. package/src/deps/FreeType/include/freetype/internal/services/svcid.h +2 -2
  84. package/src/deps/FreeType/include/freetype/internal/services/svfntfmt.h +2 -2
  85. package/src/deps/FreeType/include/freetype/internal/services/svgldict.h +4 -4
  86. package/src/deps/FreeType/include/freetype/internal/services/svgxval.h +3 -3
  87. package/src/deps/FreeType/include/freetype/internal/services/svkern.h +3 -3
  88. package/src/deps/FreeType/include/freetype/internal/services/svmetric.h +2 -2
  89. package/src/deps/FreeType/include/freetype/internal/services/svmm.h +85 -42
  90. package/src/deps/FreeType/include/freetype/internal/services/svotval.h +3 -3
  91. package/src/deps/FreeType/include/freetype/internal/services/svpfr.h +3 -4
  92. package/src/deps/FreeType/include/freetype/internal/services/svpostnm.h +2 -2
  93. package/src/deps/FreeType/include/freetype/internal/services/svprop.h +1 -1
  94. package/src/deps/FreeType/include/freetype/internal/services/svpscmap.h +2 -2
  95. package/src/deps/FreeType/include/freetype/internal/services/svpsinfo.h +3 -3
  96. package/src/deps/FreeType/include/freetype/internal/services/svsfnt.h +3 -3
  97. package/src/deps/FreeType/include/freetype/internal/services/svttcmap.h +3 -3
  98. package/src/deps/FreeType/include/freetype/internal/services/svtteng.h +3 -3
  99. package/src/deps/FreeType/include/freetype/internal/services/svttglyf.h +3 -3
  100. package/src/deps/FreeType/include/freetype/internal/services/svwinfnt.h +3 -3
  101. package/src/deps/FreeType/include/freetype/internal/sfnt.h +261 -44
  102. package/src/deps/FreeType/include/freetype/internal/svginterface.h +46 -0
  103. package/src/deps/FreeType/include/freetype/internal/t1types.h +10 -11
  104. package/src/deps/FreeType/include/freetype/internal/tttypes.h +22 -90
  105. package/src/deps/FreeType/include/freetype/internal/wofftypes.h +312 -0
  106. package/src/deps/FreeType/include/freetype/otsvg.h +336 -0
  107. package/src/deps/FreeType/include/freetype/t1tables.h +99 -80
  108. package/src/deps/FreeType/include/freetype/ttnameid.h +2 -3
  109. package/src/deps/FreeType/include/freetype/tttables.h +4 -5
  110. package/src/deps/FreeType/include/freetype/tttags.h +4 -3
  111. package/src/deps/FreeType/include/ft2build.h +4 -6
  112. package/src/deps/FreeType/src/autofit/afblue.c +56 -16
  113. package/src/deps/FreeType/src/autofit/afblue.cin +1 -1
  114. package/src/deps/FreeType/src/autofit/afblue.dat +69 -20
  115. package/src/deps/FreeType/src/autofit/afblue.h +88 -73
  116. package/src/deps/FreeType/src/autofit/afblue.hin +1 -1
  117. package/src/deps/FreeType/src/autofit/afcjk.c +49 -79
  118. package/src/deps/FreeType/src/autofit/afcjk.h +1 -1
  119. package/src/deps/FreeType/src/autofit/afcover.h +1 -1
  120. package/src/deps/FreeType/src/autofit/afdummy.c +1 -1
  121. package/src/deps/FreeType/src/autofit/afdummy.h +1 -1
  122. package/src/deps/FreeType/src/autofit/aferrors.h +3 -3
  123. package/src/deps/FreeType/src/autofit/afglobal.c +49 -37
  124. package/src/deps/FreeType/src/autofit/afglobal.h +3 -3
  125. package/src/deps/FreeType/src/autofit/afhints.c +133 -67
  126. package/src/deps/FreeType/src/autofit/afhints.h +8 -28
  127. package/src/deps/FreeType/src/autofit/afindic.c +2 -8
  128. package/src/deps/FreeType/src/autofit/afindic.h +1 -1
  129. package/src/deps/FreeType/src/autofit/aflatin.c +178 -147
  130. package/src/deps/FreeType/src/autofit/aflatin.h +1 -1
  131. package/src/deps/FreeType/src/autofit/afloader.c +16 -28
  132. package/src/deps/FreeType/src/autofit/afloader.h +2 -2
  133. package/src/deps/FreeType/src/autofit/afmodule.c +30 -78
  134. package/src/deps/FreeType/src/autofit/afmodule.h +5 -8
  135. package/src/deps/FreeType/src/autofit/afranges.c +40 -1
  136. package/src/deps/FreeType/src/autofit/afranges.h +1 -1
  137. package/src/deps/FreeType/src/autofit/afscript.h +19 -1
  138. package/src/deps/FreeType/src/autofit/afshaper.c +38 -24
  139. package/src/deps/FreeType/src/autofit/afshaper.h +3 -4
  140. package/src/deps/FreeType/src/autofit/afstyles.h +22 -10
  141. package/src/deps/FreeType/src/autofit/aftypes.h +17 -79
  142. package/src/deps/FreeType/src/autofit/afws-decl.h +33 -0
  143. package/src/deps/FreeType/src/autofit/afws-iter.h +31 -0
  144. package/src/deps/FreeType/src/autofit/autofit.c +2 -5
  145. package/src/deps/FreeType/src/autofit/ft-hb.c +115 -0
  146. package/src/deps/FreeType/src/autofit/ft-hb.h +48 -0
  147. package/src/deps/FreeType/src/autofit/module.mk +1 -1
  148. package/src/deps/FreeType/src/autofit/rules.mk +11 -11
  149. package/src/deps/FreeType/src/base/ftadvanc.c +7 -8
  150. package/src/deps/FreeType/src/base/ftbase.c +1 -2
  151. package/src/deps/FreeType/src/base/ftbase.h +7 -3
  152. package/src/deps/FreeType/src/base/ftbbox.c +17 -18
  153. package/src/deps/FreeType/src/base/ftbdf.c +4 -5
  154. package/src/deps/FreeType/src/base/ftbitmap.c +52 -78
  155. package/src/deps/FreeType/src/base/ftcalc.c +81 -15
  156. package/src/deps/FreeType/src/base/ftcid.c +4 -5
  157. package/src/deps/FreeType/src/base/ftcolor.c +5 -6
  158. package/src/deps/FreeType/src/base/ftdbgmem.c +65 -93
  159. package/src/deps/FreeType/src/base/ftdebug.c +333 -8
  160. package/src/deps/FreeType/src/base/fterrors.c +4 -4
  161. package/src/deps/FreeType/src/base/ftfntfmt.c +4 -5
  162. package/src/deps/FreeType/src/base/ftfstype.c +5 -6
  163. package/src/deps/FreeType/src/base/ftgasp.c +3 -4
  164. package/src/deps/FreeType/src/base/ftgloadr.c +43 -15
  165. package/src/deps/FreeType/src/base/ftglyph.c +271 -16
  166. package/src/deps/FreeType/src/base/ftgxval.c +4 -5
  167. package/src/deps/FreeType/src/base/fthash.c +3 -4
  168. package/src/deps/FreeType/src/base/ftinit.c +15 -4
  169. package/src/deps/FreeType/src/base/ftlcdfil.c +15 -16
  170. package/src/deps/FreeType/src/base/ftmac.c +11 -11
  171. package/src/deps/FreeType/src/base/ftmm.c +6 -7
  172. package/src/deps/FreeType/src/base/ftobjs.c +562 -206
  173. package/src/deps/FreeType/src/base/ftotval.c +5 -6
  174. package/src/deps/FreeType/src/base/ftoutln.c +51 -26
  175. package/src/deps/FreeType/src/base/ftpatent.c +7 -8
  176. package/src/deps/FreeType/src/base/ftpfr.c +4 -5
  177. package/src/deps/FreeType/src/base/ftpsprop.c +10 -11
  178. package/src/deps/FreeType/src/base/ftrfork.c +29 -38
  179. package/src/deps/FreeType/src/base/ftsnames.c +7 -8
  180. package/src/deps/FreeType/src/base/ftstream.c +65 -65
  181. package/src/deps/FreeType/src/base/ftstroke.c +138 -185
  182. package/src/deps/FreeType/src/base/ftsynth.c +22 -13
  183. package/src/deps/FreeType/src/base/ftsystem.c +7 -7
  184. package/src/deps/FreeType/src/base/fttrigon.c +7 -8
  185. package/src/deps/FreeType/src/base/fttype1.c +5 -6
  186. package/src/deps/FreeType/src/base/ftutil.c +5 -6
  187. package/src/deps/FreeType/src/base/ftwinfnt.c +5 -6
  188. package/src/deps/FreeType/src/base/rules.mk +1 -1
  189. package/src/deps/FreeType/src/bdf/README +5 -1
  190. package/src/deps/FreeType/src/bdf/bdf.c +0 -1
  191. package/src/deps/FreeType/src/bdf/bdf.h +6 -7
  192. package/src/deps/FreeType/src/bdf/bdfdrivr.c +53 -61
  193. package/src/deps/FreeType/src/bdf/bdfdrivr.h +1 -2
  194. package/src/deps/FreeType/src/bdf/bdferror.h +2 -2
  195. package/src/deps/FreeType/src/bdf/bdflib.c +321 -351
  196. package/src/deps/FreeType/src/bzip2/ftbzip2.c +39 -30
  197. package/src/deps/FreeType/src/bzip2/rules.mk +1 -1
  198. package/src/deps/FreeType/src/cache/ftcache.c +1 -2
  199. package/src/deps/FreeType/src/cache/ftcbasic.c +19 -13
  200. package/src/deps/FreeType/src/cache/ftccache.c +15 -18
  201. package/src/deps/FreeType/src/cache/ftccache.h +4 -4
  202. package/src/deps/FreeType/src/cache/ftccback.h +4 -3
  203. package/src/deps/FreeType/src/cache/ftccmap.c +17 -21
  204. package/src/deps/FreeType/src/cache/ftcerror.h +3 -3
  205. package/src/deps/FreeType/src/cache/ftcglyph.c +4 -5
  206. package/src/deps/FreeType/src/cache/ftcglyph.h +4 -5
  207. package/src/deps/FreeType/src/cache/ftcimage.c +6 -6
  208. package/src/deps/FreeType/src/cache/ftcimage.h +5 -6
  209. package/src/deps/FreeType/src/cache/ftcmanag.c +20 -16
  210. package/src/deps/FreeType/src/cache/ftcmanag.h +2 -3
  211. package/src/deps/FreeType/src/cache/ftcmru.c +6 -5
  212. package/src/deps/FreeType/src/cache/ftcmru.h +3 -3
  213. package/src/deps/FreeType/src/cache/ftcsbits.c +30 -24
  214. package/src/deps/FreeType/src/cache/ftcsbits.h +3 -4
  215. package/src/deps/FreeType/src/cache/rules.mk +2 -2
  216. package/src/deps/FreeType/src/cff/cff.c +1 -2
  217. package/src/deps/FreeType/src/cff/cffcmap.c +3 -4
  218. package/src/deps/FreeType/src/cff/cffcmap.h +4 -4
  219. package/src/deps/FreeType/src/cff/cffdrivr.c +129 -76
  220. package/src/deps/FreeType/src/cff/cffdrivr.h +2 -3
  221. package/src/deps/FreeType/src/cff/cfferrs.h +3 -3
  222. package/src/deps/FreeType/src/cff/cffgload.c +100 -23
  223. package/src/deps/FreeType/src/cff/cffgload.h +3 -4
  224. package/src/deps/FreeType/src/cff/cffload.c +91 -83
  225. package/src/deps/FreeType/src/cff/cffload.h +3 -4
  226. package/src/deps/FreeType/src/cff/cffobjs.c +73 -65
  227. package/src/deps/FreeType/src/cff/cffobjs.h +1 -2
  228. package/src/deps/FreeType/src/cff/cffparse.c +130 -68
  229. package/src/deps/FreeType/src/cff/cffparse.h +16 -4
  230. package/src/deps/FreeType/src/cff/cfftoken.h +1 -1
  231. package/src/deps/FreeType/src/cff/module.mk +1 -1
  232. package/src/deps/FreeType/src/cff/rules.mk +1 -1
  233. package/src/deps/FreeType/src/cid/ciderrs.h +3 -3
  234. package/src/deps/FreeType/src/cid/cidgload.c +26 -31
  235. package/src/deps/FreeType/src/cid/cidgload.h +1 -2
  236. package/src/deps/FreeType/src/cid/cidload.c +71 -71
  237. package/src/deps/FreeType/src/cid/cidload.h +3 -4
  238. package/src/deps/FreeType/src/cid/cidobjs.c +18 -17
  239. package/src/deps/FreeType/src/cid/cidobjs.h +3 -3
  240. package/src/deps/FreeType/src/cid/cidparse.c +9 -6
  241. package/src/deps/FreeType/src/cid/cidparse.h +5 -6
  242. package/src/deps/FreeType/src/cid/cidriver.c +10 -11
  243. package/src/deps/FreeType/src/cid/cidriver.h +2 -3
  244. package/src/deps/FreeType/src/cid/cidtoken.h +1 -1
  245. package/src/deps/FreeType/src/cid/module.mk +1 -1
  246. package/src/deps/FreeType/src/cid/rules.mk +1 -1
  247. package/src/deps/FreeType/src/cid/type1cid.c +1 -2
  248. package/src/deps/FreeType/src/dlg/dlg.c +803 -0
  249. package/src/deps/FreeType/src/dlg/dlgwrap.c +32 -0
  250. package/src/deps/FreeType/src/dlg/rules.mk +70 -0
  251. package/src/deps/FreeType/src/gxvalid/README +1 -1
  252. package/src/deps/FreeType/src/gxvalid/gxvalid.c +1 -2
  253. package/src/deps/FreeType/src/gxvalid/gxvalid.h +5 -6
  254. package/src/deps/FreeType/src/gxvalid/gxvbsln.c +1 -1
  255. package/src/deps/FreeType/src/gxvalid/gxvcommn.c +31 -30
  256. package/src/deps/FreeType/src/gxvalid/gxvcommn.h +22 -20
  257. package/src/deps/FreeType/src/gxvalid/gxverror.h +3 -3
  258. package/src/deps/FreeType/src/gxvalid/gxvfeat.c +2 -2
  259. package/src/deps/FreeType/src/gxvalid/gxvfeat.h +1 -1
  260. package/src/deps/FreeType/src/gxvalid/gxvfgen.c +1 -1
  261. package/src/deps/FreeType/src/gxvalid/gxvjust.c +14 -14
  262. package/src/deps/FreeType/src/gxvalid/gxvkern.c +9 -9
  263. package/src/deps/FreeType/src/gxvalid/gxvlcar.c +1 -1
  264. package/src/deps/FreeType/src/gxvalid/gxvmod.c +32 -29
  265. package/src/deps/FreeType/src/gxvalid/gxvmod.h +2 -3
  266. package/src/deps/FreeType/src/gxvalid/gxvmort.c +2 -2
  267. package/src/deps/FreeType/src/gxvalid/gxvmort.h +7 -2
  268. package/src/deps/FreeType/src/gxvalid/gxvmort0.c +1 -1
  269. package/src/deps/FreeType/src/gxvalid/gxvmort1.c +1 -1
  270. package/src/deps/FreeType/src/gxvalid/gxvmort2.c +7 -7
  271. package/src/deps/FreeType/src/gxvalid/gxvmort4.c +1 -1
  272. package/src/deps/FreeType/src/gxvalid/gxvmort5.c +2 -2
  273. package/src/deps/FreeType/src/gxvalid/gxvmorx.c +4 -4
  274. package/src/deps/FreeType/src/gxvalid/gxvmorx.h +7 -2
  275. package/src/deps/FreeType/src/gxvalid/gxvmorx0.c +1 -1
  276. package/src/deps/FreeType/src/gxvalid/gxvmorx1.c +1 -1
  277. package/src/deps/FreeType/src/gxvalid/gxvmorx2.c +15 -15
  278. package/src/deps/FreeType/src/gxvalid/gxvmorx4.c +1 -1
  279. package/src/deps/FreeType/src/gxvalid/gxvmorx5.c +1 -1
  280. package/src/deps/FreeType/src/gxvalid/gxvopbd.c +2 -2
  281. package/src/deps/FreeType/src/gxvalid/gxvprop.c +3 -3
  282. package/src/deps/FreeType/src/gxvalid/gxvtrak.c +3 -3
  283. package/src/deps/FreeType/src/gxvalid/module.mk +1 -1
  284. package/src/deps/FreeType/src/gxvalid/rules.mk +1 -1
  285. package/src/deps/FreeType/src/gzip/README.freetype +23 -0
  286. package/src/deps/FreeType/src/gzip/adler32.c +166 -22
  287. package/src/deps/FreeType/src/gzip/crc32.c +1135 -0
  288. package/src/deps/FreeType/src/gzip/crc32.h +9446 -0
  289. package/src/deps/FreeType/src/gzip/ftgzip.c +56 -62
  290. package/src/deps/FreeType/src/gzip/ftzconf.h +403 -140
  291. package/src/deps/FreeType/src/gzip/gzguts.h +219 -0
  292. package/src/deps/FreeType/src/gzip/infback.c +644 -0
  293. package/src/deps/FreeType/src/gzip/inffast.c +323 -0
  294. package/src/deps/FreeType/src/gzip/inffast.h +11 -0
  295. package/src/deps/FreeType/src/gzip/inffixed.h +92 -149
  296. package/src/deps/FreeType/src/gzip/inflate.c +1580 -248
  297. package/src/deps/FreeType/src/gzip/inflate.h +131 -0
  298. package/src/deps/FreeType/src/gzip/inftrees.c +273 -437
  299. package/src/deps/FreeType/src/gzip/inftrees.h +58 -54
  300. package/src/deps/FreeType/src/gzip/patches/freetype-zlib.diff +469 -0
  301. package/src/deps/FreeType/src/gzip/rules.mk +7 -7
  302. package/src/deps/FreeType/src/gzip/zlib.h +1552 -411
  303. package/src/deps/FreeType/src/gzip/zutil.c +197 -44
  304. package/src/deps/FreeType/src/gzip/zutil.h +133 -67
  305. package/src/deps/FreeType/src/lzw/ftlzw.c +9 -10
  306. package/src/deps/FreeType/src/lzw/ftzopen.c +12 -7
  307. package/src/deps/FreeType/src/lzw/ftzopen.h +5 -3
  308. package/src/deps/FreeType/src/lzw/rules.mk +1 -1
  309. package/src/deps/FreeType/src/otvalid/module.mk +1 -1
  310. package/src/deps/FreeType/src/otvalid/otvalid.c +1 -2
  311. package/src/deps/FreeType/src/otvalid/otvalid.h +5 -6
  312. package/src/deps/FreeType/src/otvalid/otvbase.c +1 -1
  313. package/src/deps/FreeType/src/otvalid/otvcommn.c +4 -1
  314. package/src/deps/FreeType/src/otvalid/otvcommn.h +22 -21
  315. package/src/deps/FreeType/src/otvalid/otverror.h +3 -3
  316. package/src/deps/FreeType/src/otvalid/otvgdef.c +1 -1
  317. package/src/deps/FreeType/src/otvalid/otvgpos.c +1 -1
  318. package/src/deps/FreeType/src/otvalid/otvgpos.h +1 -1
  319. package/src/deps/FreeType/src/otvalid/otvgsub.c +16 -6
  320. package/src/deps/FreeType/src/otvalid/otvjstf.c +1 -1
  321. package/src/deps/FreeType/src/otvalid/otvmath.c +2 -2
  322. package/src/deps/FreeType/src/otvalid/otvmod.c +8 -9
  323. package/src/deps/FreeType/src/otvalid/otvmod.h +2 -3
  324. package/src/deps/FreeType/src/otvalid/rules.mk +1 -1
  325. package/src/deps/FreeType/src/pcf/pcf.c +0 -1
  326. package/src/deps/FreeType/src/pcf/pcf.h +4 -4
  327. package/src/deps/FreeType/src/pcf/pcfdrivr.c +46 -62
  328. package/src/deps/FreeType/src/pcf/pcfdrivr.h +1 -2
  329. package/src/deps/FreeType/src/pcf/pcferror.h +2 -2
  330. package/src/deps/FreeType/src/pcf/pcfread.c +152 -153
  331. package/src/deps/FreeType/src/pcf/pcfread.h +0 -1
  332. package/src/deps/FreeType/src/pcf/pcfutil.c +34 -19
  333. package/src/deps/FreeType/src/pcf/pcfutil.h +1 -1
  334. package/src/deps/FreeType/src/pfr/module.mk +1 -1
  335. package/src/deps/FreeType/src/pfr/pfr.c +1 -2
  336. package/src/deps/FreeType/src/pfr/pfrcmap.c +17 -12
  337. package/src/deps/FreeType/src/pfr/pfrcmap.h +2 -3
  338. package/src/deps/FreeType/src/pfr/pfrdrivr.c +5 -6
  339. package/src/deps/FreeType/src/pfr/pfrdrivr.h +2 -3
  340. package/src/deps/FreeType/src/pfr/pfrerror.h +3 -3
  341. package/src/deps/FreeType/src/pfr/pfrgload.c +6 -7
  342. package/src/deps/FreeType/src/pfr/pfrgload.h +1 -1
  343. package/src/deps/FreeType/src/pfr/pfrload.c +26 -17
  344. package/src/deps/FreeType/src/pfr/pfrload.h +2 -2
  345. package/src/deps/FreeType/src/pfr/pfrobjs.c +24 -21
  346. package/src/deps/FreeType/src/pfr/pfrobjs.h +1 -1
  347. package/src/deps/FreeType/src/pfr/pfrsbit.c +20 -15
  348. package/src/deps/FreeType/src/pfr/pfrsbit.h +1 -1
  349. package/src/deps/FreeType/src/pfr/pfrtypes.h +3 -4
  350. package/src/deps/FreeType/src/pfr/rules.mk +1 -1
  351. package/src/deps/FreeType/src/psaux/afmparse.c +125 -17
  352. package/src/deps/FreeType/src/psaux/afmparse.h +2 -3
  353. package/src/deps/FreeType/src/psaux/cffdecode.c +26 -23
  354. package/src/deps/FreeType/src/psaux/cffdecode.h +2 -3
  355. package/src/deps/FreeType/src/psaux/module.mk +1 -1
  356. package/src/deps/FreeType/src/psaux/psarrst.c +4 -5
  357. package/src/deps/FreeType/src/psaux/psarrst.h +0 -1
  358. package/src/deps/FreeType/src/psaux/psaux.c +1 -2
  359. package/src/deps/FreeType/src/psaux/psauxerr.h +3 -3
  360. package/src/deps/FreeType/src/psaux/psauxmod.c +5 -6
  361. package/src/deps/FreeType/src/psaux/psauxmod.h +17 -4
  362. package/src/deps/FreeType/src/psaux/psblues.c +3 -2
  363. package/src/deps/FreeType/src/psaux/psconv.c +7 -8
  364. package/src/deps/FreeType/src/psaux/psconv.h +2 -3
  365. package/src/deps/FreeType/src/psaux/pserror.h +3 -2
  366. package/src/deps/FreeType/src/psaux/psfixed.h +4 -5
  367. package/src/deps/FreeType/src/psaux/psfont.c +4 -5
  368. package/src/deps/FreeType/src/psaux/psfont.h +1 -1
  369. package/src/deps/FreeType/src/psaux/psft.c +12 -14
  370. package/src/deps/FreeType/src/psaux/psft.h +3 -3
  371. package/src/deps/FreeType/src/psaux/psglue.h +1 -1
  372. package/src/deps/FreeType/src/psaux/pshints.c +44 -28
  373. package/src/deps/FreeType/src/psaux/psintrp.c +55 -40
  374. package/src/deps/FreeType/src/psaux/psintrp.h +1 -1
  375. package/src/deps/FreeType/src/psaux/psobjs.c +47 -84
  376. package/src/deps/FreeType/src/psaux/psobjs.h +7 -8
  377. package/src/deps/FreeType/src/psaux/psread.c +1 -1
  378. package/src/deps/FreeType/src/psaux/psstack.c +8 -10
  379. package/src/deps/FreeType/src/psaux/psstack.h +3 -2
  380. package/src/deps/FreeType/src/psaux/pstypes.h +1 -2
  381. package/src/deps/FreeType/src/psaux/rules.mk +1 -1
  382. package/src/deps/FreeType/src/psaux/t1cmap.c +2 -2
  383. package/src/deps/FreeType/src/psaux/t1cmap.h +3 -4
  384. package/src/deps/FreeType/src/psaux/t1decode.c +197 -49
  385. package/src/deps/FreeType/src/psaux/t1decode.h +3 -4
  386. package/src/deps/FreeType/src/pshinter/module.mk +1 -1
  387. package/src/deps/FreeType/src/pshinter/pshalgo.c +71 -75
  388. package/src/deps/FreeType/src/pshinter/pshalgo.h +12 -20
  389. package/src/deps/FreeType/src/pshinter/pshglob.c +5 -6
  390. package/src/deps/FreeType/src/pshinter/pshglob.h +3 -3
  391. package/src/deps/FreeType/src/pshinter/pshinter.c +1 -2
  392. package/src/deps/FreeType/src/pshinter/pshmod.c +3 -3
  393. package/src/deps/FreeType/src/pshinter/pshmod.h +2 -3
  394. package/src/deps/FreeType/src/pshinter/pshnterr.h +3 -3
  395. package/src/deps/FreeType/src/pshinter/pshrec.c +51 -86
  396. package/src/deps/FreeType/src/pshinter/pshrec.h +2 -3
  397. package/src/deps/FreeType/src/pshinter/rules.mk +1 -1
  398. package/src/deps/FreeType/src/psnames/module.mk +1 -1
  399. package/src/deps/FreeType/src/psnames/psmodule.c +40 -40
  400. package/src/deps/FreeType/src/psnames/psmodule.h +2 -3
  401. package/src/deps/FreeType/src/psnames/psnamerr.h +3 -3
  402. package/src/deps/FreeType/src/psnames/psnames.c +1 -2
  403. package/src/deps/FreeType/src/psnames/pstables.h +1 -1
  404. package/src/deps/FreeType/src/psnames/rules.mk +1 -1
  405. package/src/deps/FreeType/src/raster/ftmisc.h +3 -6
  406. package/src/deps/FreeType/src/raster/ftraster.c +248 -278
  407. package/src/deps/FreeType/src/raster/ftraster.h +3 -2
  408. package/src/deps/FreeType/src/raster/ftrend1.c +4 -5
  409. package/src/deps/FreeType/src/raster/ftrend1.h +2 -3
  410. package/src/deps/FreeType/src/raster/module.mk +1 -1
  411. package/src/deps/FreeType/src/raster/raster.c +1 -2
  412. package/src/deps/FreeType/src/raster/rasterrs.h +3 -3
  413. package/src/deps/FreeType/src/raster/rules.mk +1 -1
  414. package/src/deps/FreeType/src/sdf/ftbsdf.c +1347 -0
  415. package/src/deps/FreeType/src/sdf/ftsdf.c +3927 -0
  416. package/src/deps/FreeType/src/sdf/ftsdf.h +97 -0
  417. package/src/deps/FreeType/src/sdf/ftsdfcommon.c +147 -0
  418. package/src/deps/FreeType/src/sdf/ftsdfcommon.h +141 -0
  419. package/src/deps/FreeType/src/sdf/ftsdferrs.h +37 -0
  420. package/src/deps/FreeType/src/sdf/ftsdfrend.c +604 -0
  421. package/src/deps/FreeType/src/sdf/ftsdfrend.h +118 -0
  422. package/src/deps/FreeType/src/sdf/module.mk +29 -0
  423. package/src/deps/FreeType/src/sdf/rules.mk +78 -0
  424. package/src/deps/FreeType/src/sdf/sdf.c +29 -0
  425. package/src/deps/FreeType/src/sfnt/module.mk +1 -1
  426. package/src/deps/FreeType/src/sfnt/pngshim.c +30 -21
  427. package/src/deps/FreeType/src/sfnt/pngshim.h +1 -2
  428. package/src/deps/FreeType/src/sfnt/rules.mk +17 -13
  429. package/src/deps/FreeType/src/sfnt/sfdriver.c +80 -39
  430. package/src/deps/FreeType/src/sfnt/sfdriver.h +2 -3
  431. package/src/deps/FreeType/src/sfnt/sferrors.h +3 -3
  432. package/src/deps/FreeType/src/sfnt/sfnt.c +5 -2
  433. package/src/deps/FreeType/src/sfnt/sfobjs.c +128 -456
  434. package/src/deps/FreeType/src/sfnt/sfobjs.h +4 -5
  435. package/src/deps/FreeType/src/sfnt/sfwoff.c +434 -0
  436. package/src/deps/FreeType/src/sfnt/sfwoff.h +43 -0
  437. package/src/deps/FreeType/src/sfnt/sfwoff2.c +2386 -0
  438. package/src/deps/FreeType/src/sfnt/sfwoff2.h +78 -0
  439. package/src/deps/FreeType/src/sfnt/ttbdf.c +4 -5
  440. package/src/deps/FreeType/src/sfnt/ttbdf.h +2 -3
  441. package/src/deps/FreeType/src/sfnt/ttcmap.c +37 -25
  442. package/src/deps/FreeType/src/sfnt/ttcmap.h +9 -5
  443. package/src/deps/FreeType/src/sfnt/ttcmapc.h +1 -1
  444. package/src/deps/FreeType/src/sfnt/ttcolr.c +1495 -25
  445. package/src/deps/FreeType/src/sfnt/ttcolr.h +27 -2
  446. package/src/deps/FreeType/src/sfnt/ttcpal.c +11 -12
  447. package/src/deps/FreeType/src/sfnt/ttcpal.h +1 -2
  448. package/src/deps/FreeType/src/sfnt/ttkern.c +17 -11
  449. package/src/deps/FreeType/src/sfnt/ttkern.h +3 -4
  450. package/src/deps/FreeType/src/sfnt/ttload.c +86 -55
  451. package/src/deps/FreeType/src/sfnt/ttload.h +3 -4
  452. package/src/deps/FreeType/src/sfnt/ttmtx.c +10 -9
  453. package/src/deps/FreeType/src/sfnt/ttmtx.h +3 -4
  454. package/src/deps/FreeType/src/sfnt/ttpost.c +56 -68
  455. package/src/deps/FreeType/src/sfnt/ttpost.h +2 -2
  456. package/src/deps/FreeType/src/sfnt/ttsbit.c +51 -48
  457. package/src/deps/FreeType/src/sfnt/ttsbit.h +1 -2
  458. package/src/deps/FreeType/src/sfnt/ttsvg.c +413 -0
  459. package/src/deps/FreeType/src/sfnt/ttsvg.h +43 -0
  460. package/src/deps/FreeType/src/sfnt/woff2tags.c +119 -0
  461. package/src/deps/FreeType/src/sfnt/woff2tags.h +41 -0
  462. package/src/deps/FreeType/src/smooth/ftgrays.c +653 -374
  463. package/src/deps/FreeType/src/smooth/ftgrays.h +2 -2
  464. package/src/deps/FreeType/src/smooth/ftsmerrs.h +3 -3
  465. package/src/deps/FreeType/src/smooth/ftsmooth.c +397 -305
  466. package/src/deps/FreeType/src/smooth/ftsmooth.h +2 -7
  467. package/src/deps/FreeType/src/smooth/module.mk +1 -5
  468. package/src/deps/FreeType/src/smooth/rules.mk +1 -1
  469. package/src/deps/FreeType/src/smooth/smooth.c +1 -2
  470. package/src/deps/FreeType/src/svg/ftsvg.c +350 -0
  471. package/src/deps/FreeType/src/svg/ftsvg.h +35 -0
  472. package/src/deps/FreeType/src/svg/module.mk +23 -0
  473. package/src/deps/FreeType/src/svg/rules.mk +70 -0
  474. package/src/deps/FreeType/src/svg/svg.c +24 -0
  475. package/src/deps/FreeType/src/svg/svgtypes.h +42 -0
  476. package/src/deps/FreeType/src/tools/afblue.pl +1 -1
  477. package/src/deps/FreeType/src/tools/apinames.c +254 -205
  478. package/src/deps/FreeType/src/tools/chktrcmp.py +79 -74
  479. package/src/deps/FreeType/src/tools/cordic.py +20 -21
  480. package/src/deps/FreeType/src/tools/ftrandom/ftrandom.c +3 -3
  481. package/src/deps/FreeType/src/tools/glnames.py +708 -715
  482. package/src/deps/FreeType/src/tools/make_distribution_archives.py +208 -0
  483. package/src/deps/FreeType/src/tools/no-copyright +7 -6
  484. package/src/deps/FreeType/src/tools/test_afm.c +3 -4
  485. package/src/deps/FreeType/src/tools/test_bbox.c +2 -3
  486. package/src/deps/FreeType/src/tools/test_trig.c +2 -3
  487. package/src/deps/FreeType/src/tools/update-copyright +2 -2
  488. package/src/deps/FreeType/src/tools/update-copyright-year +42 -23
  489. package/src/deps/FreeType/src/truetype/module.mk +1 -1
  490. package/src/deps/FreeType/src/truetype/rules.mk +1 -1
  491. package/src/deps/FreeType/src/truetype/truetype.c +1 -2
  492. package/src/deps/FreeType/src/truetype/ttdriver.c +53 -29
  493. package/src/deps/FreeType/src/truetype/ttdriver.h +2 -3
  494. package/src/deps/FreeType/src/truetype/tterrors.h +3 -3
  495. package/src/deps/FreeType/src/truetype/ttgload.c +361 -273
  496. package/src/deps/FreeType/src/truetype/ttgload.h +1 -2
  497. package/src/deps/FreeType/src/truetype/ttgxvar.c +778 -447
  498. package/src/deps/FreeType/src/truetype/ttgxvar.h +48 -54
  499. package/src/deps/FreeType/src/truetype/ttinterp.c +571 -576
  500. package/src/deps/FreeType/src/truetype/ttinterp.h +52 -46
  501. package/src/deps/FreeType/src/truetype/ttobjs.c +109 -44
  502. package/src/deps/FreeType/src/truetype/ttobjs.h +5 -4
  503. package/src/deps/FreeType/src/truetype/ttpload.c +82 -70
  504. package/src/deps/FreeType/src/truetype/ttpload.h +2 -3
  505. package/src/deps/FreeType/src/truetype/ttsubpix.c +11 -12
  506. package/src/deps/FreeType/src/truetype/ttsubpix.h +1 -2
  507. package/src/deps/FreeType/src/type1/module.mk +1 -1
  508. package/src/deps/FreeType/src/type1/rules.mk +1 -1
  509. package/src/deps/FreeType/src/type1/t1afm.c +16 -18
  510. package/src/deps/FreeType/src/type1/t1afm.h +2 -3
  511. package/src/deps/FreeType/src/type1/t1driver.c +40 -30
  512. package/src/deps/FreeType/src/type1/t1driver.h +2 -3
  513. package/src/deps/FreeType/src/type1/t1errors.h +3 -3
  514. package/src/deps/FreeType/src/type1/t1gload.c +11 -12
  515. package/src/deps/FreeType/src/type1/t1gload.h +1 -2
  516. package/src/deps/FreeType/src/type1/t1load.c +131 -92
  517. package/src/deps/FreeType/src/type1/t1load.h +4 -5
  518. package/src/deps/FreeType/src/type1/t1objs.c +20 -19
  519. package/src/deps/FreeType/src/type1/t1objs.h +3 -3
  520. package/src/deps/FreeType/src/type1/t1parse.c +17 -55
  521. package/src/deps/FreeType/src/type1/t1parse.h +3 -4
  522. package/src/deps/FreeType/src/type1/t1tokens.h +1 -1
  523. package/src/deps/FreeType/src/type1/type1.c +1 -2
  524. package/src/deps/FreeType/src/type42/module.mk +1 -1
  525. package/src/deps/FreeType/src/type42/rules.mk +1 -1
  526. package/src/deps/FreeType/src/type42/t42drivr.c +10 -19
  527. package/src/deps/FreeType/src/type42/t42drivr.h +2 -3
  528. package/src/deps/FreeType/src/type42/t42error.h +3 -3
  529. package/src/deps/FreeType/src/type42/t42objs.c +33 -25
  530. package/src/deps/FreeType/src/type42/t42objs.h +8 -9
  531. package/src/deps/FreeType/src/type42/t42parse.c +73 -40
  532. package/src/deps/FreeType/src/type42/t42parse.h +2 -2
  533. package/src/deps/FreeType/src/type42/t42types.h +5 -6
  534. package/src/deps/FreeType/src/type42/type42.c +1 -2
  535. package/src/deps/FreeType/src/winfonts/fnterrs.h +3 -3
  536. package/src/deps/FreeType/src/winfonts/module.mk +1 -1
  537. package/src/deps/FreeType/src/winfonts/rules.mk +1 -1
  538. package/src/deps/FreeType/src/winfonts/winfnt.c +38 -23
  539. package/src/deps/FreeType/src/winfonts/winfnt.h +3 -4
  540. package/src/deps/LibAesgm/CMakeLists.txt +16 -13
  541. package/src/deps/LibAesgm/binding.gyp +3 -0
  542. package/src/deps/LibJpeg/CMakeLists.txt +15 -13
  543. package/src/deps/LibJpeg/binding.gyp +3 -0
  544. package/src/deps/LibJpeg/jexport.h +15 -0
  545. package/src/deps/LibPng/CMakeLists.txt +57 -920
  546. package/src/deps/LibPng/binding.gyp +5 -2
  547. package/src/deps/LibTiff/CMakeLists.txt +50 -36
  548. package/src/deps/LibTiff/binding.gyp +28 -13
  549. package/src/deps/LibTiff/mkg3states.c +165 -344
  550. package/src/deps/LibTiff/t4.h +239 -247
  551. package/src/deps/LibTiff/tif_aux.c +400 -232
  552. package/src/deps/LibTiff/tif_close.c +108 -76
  553. package/src/deps/LibTiff/tif_codec.c +96 -93
  554. package/src/deps/LibTiff/tif_color.c +234 -199
  555. package/src/deps/LibTiff/tif_compress.c +220 -205
  556. package/src/deps/LibTiff/tif_config.h +62 -44
  557. package/src/deps/LibTiff/tif_dir.c +2029 -1113
  558. package/src/deps/LibTiff/tif_dir.h +290 -161
  559. package/src/deps/LibTiff/tif_dirinfo.c +1257 -790
  560. package/src/deps/LibTiff/tif_dirread.c +7790 -2009
  561. package/src/deps/LibTiff/tif_dirwrite.c +3494 -1310
  562. package/src/deps/LibTiff/tif_dumpmode.c +74 -78
  563. package/src/deps/LibTiff/tif_error.c +97 -45
  564. package/src/deps/LibTiff/tif_extension.c +38 -46
  565. package/src/deps/LibTiff/tif_fax3.c +1438 -1329
  566. package/src/deps/LibTiff/tif_fax3.h +495 -385
  567. package/src/deps/LibTiff/tif_fax3sm.c +1 -0
  568. package/src/deps/LibTiff/tif_flush.c +122 -39
  569. package/src/deps/LibTiff/tif_getimage.c +2692 -2022
  570. package/src/deps/LibTiff/tif_hash_set.c +603 -0
  571. package/src/deps/LibTiff/tif_hash_set.h +100 -0
  572. package/src/deps/LibTiff/tif_jbig.c +157 -311
  573. package/src/deps/LibTiff/tif_jpeg.c +2470 -1648
  574. package/src/deps/LibTiff/tif_jpeg_12.c +63 -0
  575. package/src/deps/LibTiff/tif_lerc.c +1206 -0
  576. package/src/deps/LibTiff/tif_luv.c +1438 -1229
  577. package/src/deps/LibTiff/tif_lzma.c +520 -0
  578. package/src/deps/LibTiff/tif_lzw.c +1259 -930
  579. package/src/deps/LibTiff/tif_next.c +158 -118
  580. package/src/deps/LibTiff/tif_ojpeg.c +2555 -2188
  581. package/src/deps/LibTiff/tif_open.c +636 -523
  582. package/src/deps/LibTiff/tif_packbits.c +265 -242
  583. package/src/deps/LibTiff/tif_pixarlog.c +1416 -1117
  584. package/src/deps/LibTiff/tif_predict.c +924 -614
  585. package/src/deps/LibTiff/tif_predict.h +38 -41
  586. package/src/deps/LibTiff/tif_print.c +698 -585
  587. package/src/deps/LibTiff/tif_read.c +1485 -611
  588. package/src/deps/LibTiff/tif_stream.cxx +360 -251
  589. package/src/deps/LibTiff/tif_strip.c +259 -290
  590. package/src/deps/LibTiff/tif_swab.c +257 -170
  591. package/src/deps/LibTiff/tif_thunder.c +148 -139
  592. package/src/deps/LibTiff/tif_tile.c +209 -217
  593. package/src/deps/LibTiff/tif_unix.c +251 -185
  594. package/src/deps/LibTiff/tif_version.c +9 -21
  595. package/src/deps/LibTiff/tif_warning.c +70 -46
  596. package/src/deps/LibTiff/tif_webp.c +881 -0
  597. package/src/deps/LibTiff/tif_win32.c +331 -297
  598. package/src/deps/LibTiff/tif_write.c +818 -576
  599. package/src/deps/LibTiff/tif_zip.c +623 -311
  600. package/src/deps/LibTiff/tif_zstd.c +436 -0
  601. package/src/deps/LibTiff/tiff.h +773 -528
  602. package/src/deps/LibTiff/tiffconf.h +43 -27
  603. package/src/deps/LibTiff/tiffio.h +500 -373
  604. package/src/deps/LibTiff/tiffio.hxx +13 -23
  605. package/src/deps/LibTiff/tiffiop.h +426 -256
  606. package/src/deps/LibTiff/tiffvers.h +29 -2
  607. package/src/deps/LibTiff/uvcode.h +91 -178
  608. package/src/deps/PDFWriter/ANSIFontWriter.cpp +0 -0
  609. package/src/deps/PDFWriter/ANSIFontWriter.h +0 -0
  610. package/src/deps/PDFWriter/AbstractContentContext.cpp +143 -33
  611. package/src/deps/PDFWriter/AbstractContentContext.h +49 -9
  612. package/src/deps/PDFWriter/AbstractWrittenFont.cpp +2 -1
  613. package/src/deps/PDFWriter/AbstractWrittenFont.h +2 -1
  614. package/src/deps/PDFWriter/AdapterIByteReaderWithPositionToIReadPositionProvider.h +0 -0
  615. package/src/deps/PDFWriter/Ascii7Encoding.cpp +0 -0
  616. package/src/deps/PDFWriter/Ascii7Encoding.h +0 -0
  617. package/src/deps/PDFWriter/BetweenIncluding.h +0 -0
  618. package/src/deps/PDFWriter/BoxingBase.h +0 -0
  619. package/src/deps/PDFWriter/CFFANSIFontWriter.cpp +0 -0
  620. package/src/deps/PDFWriter/CFFANSIFontWriter.h +0 -0
  621. package/src/deps/PDFWriter/CFFDescendentFontWriter.cpp +13 -1
  622. package/src/deps/PDFWriter/CFFDescendentFontWriter.h +0 -0
  623. package/src/deps/PDFWriter/CFFEmbeddedFontWriter.cpp +7 -1
  624. package/src/deps/PDFWriter/CFFEmbeddedFontWriter.h +7 -1
  625. package/src/deps/PDFWriter/CFFFileInput.cpp +0 -0
  626. package/src/deps/PDFWriter/CFFFileInput.h +0 -0
  627. package/src/deps/PDFWriter/CFFPrimitiveReader.cpp +0 -0
  628. package/src/deps/PDFWriter/CFFPrimitiveReader.h +0 -0
  629. package/src/deps/PDFWriter/CFFPrimitiveWriter.cpp +0 -0
  630. package/src/deps/PDFWriter/CFFPrimitiveWriter.h +0 -0
  631. package/src/deps/PDFWriter/CIDFontWriter.cpp +0 -0
  632. package/src/deps/PDFWriter/CIDFontWriter.h +0 -0
  633. package/src/deps/PDFWriter/CMYKRGBColor.cpp +0 -0
  634. package/src/deps/PDFWriter/CMYKRGBColor.h +0 -0
  635. package/src/deps/PDFWriter/CMakeLists.txt +199 -847
  636. package/src/deps/PDFWriter/CatalogInformation.cpp +0 -0
  637. package/src/deps/PDFWriter/CatalogInformation.h +0 -0
  638. package/src/deps/PDFWriter/CharStringDefinitions.h +0 -0
  639. package/src/deps/PDFWriter/CharStringType1Interpreter.cpp +140 -93
  640. package/src/deps/PDFWriter/CharStringType1Interpreter.h +1 -0
  641. package/src/deps/PDFWriter/CharStringType1Tracer.cpp +1 -2
  642. package/src/deps/PDFWriter/CharStringType1Tracer.h +0 -0
  643. package/src/deps/PDFWriter/CharStringType2Flattener.cpp +56 -49
  644. package/src/deps/PDFWriter/CharStringType2Flattener.h +3 -3
  645. package/src/deps/PDFWriter/CharStringType2Interpreter.cpp +398 -216
  646. package/src/deps/PDFWriter/CharStringType2Interpreter.h +53 -53
  647. package/src/deps/PDFWriter/CharStringType2Tracer.cpp +69 -55
  648. package/src/deps/PDFWriter/CharStringType2Tracer.h +3 -3
  649. package/src/deps/PDFWriter/ContainerIterator.h +0 -0
  650. package/src/deps/PDFWriter/DecryptionHelper.cpp +6 -4
  651. package/src/deps/PDFWriter/DecryptionHelper.h +0 -0
  652. package/src/deps/PDFWriter/Deletable.h +0 -0
  653. package/src/deps/PDFWriter/DescendentFontWriter.cpp +16 -21
  654. package/src/deps/PDFWriter/DescendentFontWriter.h +8 -5
  655. package/src/deps/PDFWriter/DictOperand.h +0 -0
  656. package/src/deps/PDFWriter/DictionaryContext.cpp +0 -0
  657. package/src/deps/PDFWriter/DictionaryContext.h +0 -0
  658. package/src/deps/PDFWriter/DocumentContext.cpp +237 -68
  659. package/src/deps/PDFWriter/DocumentContext.h +25 -0
  660. package/src/deps/PDFWriter/DocumentContextExtenderAdapter.h +0 -0
  661. package/src/deps/PDFWriter/EFontStretch.h +0 -0
  662. package/src/deps/PDFWriter/EHummusImageType.h +0 -0
  663. package/src/deps/PDFWriter/EPDFVersion.h +0 -0
  664. package/src/deps/PDFWriter/EStatusCode.h +0 -0
  665. package/src/deps/PDFWriter/ETokenSeparator.h +0 -0
  666. package/src/deps/PDFWriter/EncryptionHelper.cpp +6 -0
  667. package/src/deps/PDFWriter/EncryptionHelper.h +0 -0
  668. package/src/deps/PDFWriter/EncryptionOptions.cpp +0 -0
  669. package/src/deps/PDFWriter/EncryptionOptions.h +0 -0
  670. package/src/deps/PDFWriter/ExtGStateRegistry.cpp +90 -0
  671. package/src/deps/PDFWriter/ExtGStateRegistry.h +49 -0
  672. package/src/deps/PDFWriter/FSType.h +0 -0
  673. package/src/deps/PDFWriter/FontDescriptorWriter.cpp +0 -0
  674. package/src/deps/PDFWriter/FontDescriptorWriter.h +0 -0
  675. package/src/deps/PDFWriter/FreeTypeFaceWrapper.cpp +25 -2
  676. package/src/deps/PDFWriter/FreeTypeFaceWrapper.h +9 -0
  677. package/src/deps/PDFWriter/FreeTypeOpenTypeWrapper.cpp +0 -0
  678. package/src/deps/PDFWriter/FreeTypeOpenTypeWrapper.h +0 -0
  679. package/src/deps/PDFWriter/FreeTypeType1Wrapper.cpp +0 -0
  680. package/src/deps/PDFWriter/FreeTypeType1Wrapper.h +0 -0
  681. package/src/deps/PDFWriter/FreeTypeWrapper.cpp +0 -0
  682. package/src/deps/PDFWriter/FreeTypeWrapper.h +0 -0
  683. package/src/deps/PDFWriter/GlyphUnicodeMapping.h +0 -0
  684. package/src/deps/PDFWriter/GraphicState.cpp +0 -0
  685. package/src/deps/PDFWriter/GraphicState.h +0 -0
  686. package/src/deps/PDFWriter/GraphicStateStack.cpp +0 -0
  687. package/src/deps/PDFWriter/GraphicStateStack.h +0 -0
  688. package/src/deps/PDFWriter/IANSIFontWriterHelper.h +0 -0
  689. package/src/deps/PDFWriter/IByteReader.h +0 -0
  690. package/src/deps/PDFWriter/IByteReaderWithPosition.h +0 -6
  691. package/src/deps/PDFWriter/IByteWriter.h +0 -0
  692. package/src/deps/PDFWriter/IByteWriterWithPosition.h +0 -0
  693. package/src/deps/PDFWriter/IContentContextListener.h +0 -0
  694. package/src/deps/PDFWriter/IDeletable.h +0 -0
  695. package/src/deps/PDFWriter/IDescendentFontWriter.h +0 -0
  696. package/src/deps/PDFWriter/IDocumentContextExtender.h +0 -0
  697. package/src/deps/PDFWriter/IFontDescriptorHelper.h +0 -0
  698. package/src/deps/PDFWriter/IFormEndWritingTask.h +0 -0
  699. package/src/deps/PDFWriter/IFreeTypeFaceExtender.h +0 -0
  700. package/src/deps/PDFWriter/IOBasicTypes.h +3 -1
  701. package/src/deps/PDFWriter/IObjectEndWritingTask.h +39 -0
  702. package/src/deps/PDFWriter/IObjectsContextExtender.h +0 -0
  703. package/src/deps/PDFWriter/IPDFParserExtender.h +0 -0
  704. package/src/deps/PDFWriter/IPageEndWritingTask.h +0 -0
  705. package/src/deps/PDFWriter/IReadPositionProvider.h +0 -0
  706. package/src/deps/PDFWriter/IResourceWritingTask.h +0 -0
  707. package/src/deps/PDFWriter/ITiledPatternEndWritingTask.h +0 -0
  708. package/src/deps/PDFWriter/IType1InterpreterImplementation.h +0 -0
  709. package/src/deps/PDFWriter/IType2InterpreterImplementation.h +4 -4
  710. package/src/deps/PDFWriter/IWrittenFont.h +1 -1
  711. package/src/deps/PDFWriter/IndirectObjectsReferenceRegistry.cpp +2 -0
  712. package/src/deps/PDFWriter/IndirectObjectsReferenceRegistry.h +0 -0
  713. package/src/deps/PDFWriter/InfoDictionary.cpp +0 -0
  714. package/src/deps/PDFWriter/InfoDictionary.h +0 -0
  715. package/src/deps/PDFWriter/InputAscii85DecodeStream.cpp +0 -0
  716. package/src/deps/PDFWriter/InputAscii85DecodeStream.h +0 -0
  717. package/src/deps/PDFWriter/InputBufferedStream.cpp +3 -10
  718. package/src/deps/PDFWriter/InputBufferedStream.h +0 -2
  719. package/src/deps/PDFWriter/InputByteArrayStream.cpp +12 -11
  720. package/src/deps/PDFWriter/InputByteArrayStream.h +0 -2
  721. package/src/deps/PDFWriter/InputCharStringDecodeStream.cpp +0 -0
  722. package/src/deps/PDFWriter/InputCharStringDecodeStream.h +0 -0
  723. package/src/deps/PDFWriter/InputDCTDecodeStream.cpp +0 -0
  724. package/src/deps/PDFWriter/InputDCTDecodeStream.h +0 -0
  725. package/src/deps/PDFWriter/InputFile.cpp +0 -0
  726. package/src/deps/PDFWriter/InputFile.h +0 -0
  727. package/src/deps/PDFWriter/InputFileStream.cpp +2 -9
  728. package/src/deps/PDFWriter/InputFileStream.h +0 -2
  729. package/src/deps/PDFWriter/InputFlateDecodeStream.cpp +4 -6
  730. package/src/deps/PDFWriter/InputFlateDecodeStream.h +0 -0
  731. package/src/deps/PDFWriter/InputLZWDecodeStream.cpp +0 -0
  732. package/src/deps/PDFWriter/InputLZWDecodeStream.h +0 -0
  733. package/src/deps/PDFWriter/InputLimitedStream.cpp +0 -0
  734. package/src/deps/PDFWriter/InputLimitedStream.h +0 -0
  735. package/src/deps/PDFWriter/InputOffsetStream.cpp +86 -0
  736. package/src/deps/PDFWriter/InputOffsetStream.h +73 -0
  737. package/src/deps/PDFWriter/InputPFBDecodeStream.cpp +0 -0
  738. package/src/deps/PDFWriter/InputPFBDecodeStream.h +0 -0
  739. package/src/deps/PDFWriter/InputPredictorPNGOptimumStream.cpp +0 -0
  740. package/src/deps/PDFWriter/InputPredictorPNGOptimumStream.h +0 -0
  741. package/src/deps/PDFWriter/InputPredictorTIFFSubStream.cpp +2 -1
  742. package/src/deps/PDFWriter/InputPredictorTIFFSubStream.h +0 -0
  743. package/src/deps/PDFWriter/InputRC4XcodeStream.cpp +0 -0
  744. package/src/deps/PDFWriter/InputRC4XcodeStream.h +0 -0
  745. package/src/deps/PDFWriter/InputStreamSkipperStream.cpp +0 -0
  746. package/src/deps/PDFWriter/InputStreamSkipperStream.h +0 -0
  747. package/src/deps/PDFWriter/InputStringBufferStream.cpp +3 -10
  748. package/src/deps/PDFWriter/InputStringBufferStream.h +0 -2
  749. package/src/deps/PDFWriter/InputStringStream.cpp +0 -7
  750. package/src/deps/PDFWriter/InputStringStream.h +0 -2
  751. package/src/deps/PDFWriter/InterpretedGradientStop.h +38 -0
  752. package/src/deps/PDFWriter/JPEGImageHandler.cpp +0 -0
  753. package/src/deps/PDFWriter/JPEGImageHandler.h +0 -0
  754. package/src/deps/PDFWriter/JPEGImageInformation.cpp +0 -0
  755. package/src/deps/PDFWriter/JPEGImageInformation.h +0 -0
  756. package/src/deps/PDFWriter/JPEGImageParser.cpp +94 -94
  757. package/src/deps/PDFWriter/JPEGImageParser.h +0 -0
  758. package/src/deps/PDFWriter/LayeredGlyphsDrawingContext.cpp +114 -0
  759. package/src/deps/PDFWriter/LayeredGlyphsDrawingContext.h +54 -0
  760. package/src/deps/PDFWriter/LinearGradientShadingPatternWritingTask.cpp +70 -0
  761. package/src/deps/PDFWriter/LinearGradientShadingPatternWritingTask.h +61 -0
  762. package/src/deps/PDFWriter/Log.cpp +0 -0
  763. package/src/deps/PDFWriter/Log.h +0 -0
  764. package/src/deps/PDFWriter/MD5Generator.cpp +0 -0
  765. package/src/deps/PDFWriter/MD5Generator.h +0 -0
  766. package/src/deps/PDFWriter/MapIterator.h +0 -0
  767. package/src/deps/PDFWriter/MyStringBuf.h +0 -0
  768. package/src/deps/PDFWriter/ObjectsBasicTypes.h +0 -0
  769. package/src/deps/PDFWriter/ObjectsContext.cpp +51 -40
  770. package/src/deps/PDFWriter/ObjectsContext.h +0 -0
  771. package/src/deps/PDFWriter/ObjectsContextExtenderAdapter.h +0 -0
  772. package/src/deps/PDFWriter/OpenTypeFileInput.cpp +0 -0
  773. package/src/deps/PDFWriter/OpenTypeFileInput.h +0 -0
  774. package/src/deps/PDFWriter/OpenTypePrimitiveReader.cpp +0 -0
  775. package/src/deps/PDFWriter/OpenTypePrimitiveReader.h +0 -0
  776. package/src/deps/PDFWriter/OutputAESEncodeStream.cpp +0 -0
  777. package/src/deps/PDFWriter/OutputAESEncodeStream.h +0 -0
  778. package/src/deps/PDFWriter/OutputBufferedStream.cpp +0 -0
  779. package/src/deps/PDFWriter/OutputBufferedStream.h +0 -0
  780. package/src/deps/PDFWriter/OutputFile.cpp +0 -0
  781. package/src/deps/PDFWriter/OutputFile.h +0 -0
  782. package/src/deps/PDFWriter/OutputFileStream.cpp +0 -0
  783. package/src/deps/PDFWriter/OutputFileStream.h +0 -0
  784. package/src/deps/PDFWriter/OutputFlateDecodeStream.cpp +0 -0
  785. package/src/deps/PDFWriter/OutputFlateDecodeStream.h +0 -0
  786. package/src/deps/PDFWriter/OutputFlateEncodeStream.cpp +0 -0
  787. package/src/deps/PDFWriter/OutputFlateEncodeStream.h +0 -0
  788. package/src/deps/PDFWriter/OutputRC4XcodeStream.cpp +0 -0
  789. package/src/deps/PDFWriter/OutputRC4XcodeStream.h +0 -0
  790. package/src/deps/PDFWriter/OutputStreamTraits.cpp +0 -0
  791. package/src/deps/PDFWriter/OutputStreamTraits.h +0 -0
  792. package/src/deps/PDFWriter/OutputStringBufferStream.cpp +0 -0
  793. package/src/deps/PDFWriter/OutputStringBufferStream.h +0 -0
  794. package/src/deps/PDFWriter/PDFArray.cpp +0 -0
  795. package/src/deps/PDFWriter/PDFArray.h +0 -0
  796. package/src/deps/PDFWriter/PDFArrayIterator.cpp +0 -0
  797. package/src/deps/PDFWriter/PDFArrayIterator.h +0 -0
  798. package/src/deps/PDFWriter/PDFBoolean.cpp +0 -0
  799. package/src/deps/PDFWriter/PDFBoolean.h +0 -0
  800. package/src/deps/PDFWriter/PDFCosArray.cpp +0 -0
  801. package/src/deps/PDFWriter/PDFCosArray.h +0 -0
  802. package/src/deps/PDFWriter/PDFCosDict.cpp +0 -0
  803. package/src/deps/PDFWriter/PDFCosDict.h +0 -0
  804. package/src/deps/PDFWriter/PDFDate.cpp +0 -0
  805. package/src/deps/PDFWriter/PDFDate.h +0 -0
  806. package/src/deps/PDFWriter/PDFDictionary.cpp +0 -0
  807. package/src/deps/PDFWriter/PDFDictionary.h +0 -0
  808. package/src/deps/PDFWriter/PDFDictionaryIterator.cpp +0 -0
  809. package/src/deps/PDFWriter/PDFDictionaryIterator.h +0 -0
  810. package/src/deps/PDFWriter/PDFDocEncoding.cpp +0 -0
  811. package/src/deps/PDFWriter/PDFDocEncoding.h +0 -0
  812. package/src/deps/PDFWriter/PDFDocumentCopyingContext.cpp +0 -0
  813. package/src/deps/PDFWriter/PDFDocumentCopyingContext.h +0 -0
  814. package/src/deps/PDFWriter/PDFDocumentHandler.cpp +1 -1
  815. package/src/deps/PDFWriter/PDFDocumentHandler.h +0 -0
  816. package/src/deps/PDFWriter/PDFEmbedParameterTypes.h +0 -0
  817. package/src/deps/PDFWriter/PDFFormXObject.cpp +0 -0
  818. package/src/deps/PDFWriter/PDFFormXObject.h +0 -0
  819. package/src/deps/PDFWriter/PDFHexString.cpp +0 -0
  820. package/src/deps/PDFWriter/PDFHexString.h +0 -0
  821. package/src/deps/PDFWriter/PDFImageXObject.cpp +0 -0
  822. package/src/deps/PDFWriter/PDFImageXObject.h +0 -0
  823. package/src/deps/PDFWriter/PDFIndirectObjectReference.cpp +0 -0
  824. package/src/deps/PDFWriter/PDFIndirectObjectReference.h +0 -0
  825. package/src/deps/PDFWriter/PDFInteger.cpp +0 -0
  826. package/src/deps/PDFWriter/PDFInteger.h +0 -0
  827. package/src/deps/PDFWriter/PDFLiteralString.cpp +0 -0
  828. package/src/deps/PDFWriter/PDFLiteralString.h +0 -0
  829. package/src/deps/PDFWriter/PDFMatrix.cpp +139 -0
  830. package/src/deps/PDFWriter/PDFMatrix.h +56 -0
  831. package/src/deps/PDFWriter/PDFName.cpp +0 -0
  832. package/src/deps/PDFWriter/PDFName.h +0 -0
  833. package/src/deps/PDFWriter/PDFNull.cpp +0 -0
  834. package/src/deps/PDFWriter/PDFNull.h +0 -0
  835. package/src/deps/PDFWriter/PDFObject.cpp +0 -0
  836. package/src/deps/PDFWriter/PDFObject.h +0 -0
  837. package/src/deps/PDFWriter/PDFObjectCast.h +6 -0
  838. package/src/deps/PDFWriter/PDFObjectParser.cpp +68 -10
  839. package/src/deps/PDFWriter/PDFObjectParser.h +3 -0
  840. package/src/deps/PDFWriter/PDFPage.cpp +0 -0
  841. package/src/deps/PDFWriter/PDFPage.h +0 -0
  842. package/src/deps/PDFWriter/PDFPageInput.cpp +13 -16
  843. package/src/deps/PDFWriter/PDFPageInput.h +2 -1
  844. package/src/deps/PDFWriter/PDFPageMergingHelper.cpp +0 -0
  845. package/src/deps/PDFWriter/PDFPageMergingHelper.h +0 -0
  846. package/src/deps/PDFWriter/PDFParser.cpp +282 -194
  847. package/src/deps/PDFWriter/PDFParser.h +27 -19
  848. package/src/deps/PDFWriter/PDFParserTokenizer.cpp +15 -2
  849. package/src/deps/PDFWriter/PDFParserTokenizer.h +0 -0
  850. package/src/deps/PDFWriter/PDFParsingOptions.cpp +0 -0
  851. package/src/deps/PDFWriter/PDFParsingOptions.h +0 -0
  852. package/src/deps/PDFWriter/PDFParsingPath.cpp +76 -0
  853. package/src/deps/PDFWriter/PDFParsingPath.h +47 -0
  854. package/src/deps/PDFWriter/PDFReal.cpp +0 -0
  855. package/src/deps/PDFWriter/PDFReal.h +0 -0
  856. package/src/deps/PDFWriter/PDFRectangle.cpp +8 -0
  857. package/src/deps/PDFWriter/PDFRectangle.h +3 -0
  858. package/src/deps/PDFWriter/PDFStream.cpp +0 -0
  859. package/src/deps/PDFWriter/PDFStream.h +0 -0
  860. package/src/deps/PDFWriter/PDFStreamInput.cpp +0 -0
  861. package/src/deps/PDFWriter/PDFStreamInput.h +0 -0
  862. package/src/deps/PDFWriter/PDFSymbol.cpp +0 -0
  863. package/src/deps/PDFWriter/PDFSymbol.h +0 -0
  864. package/src/deps/PDFWriter/PDFTextString.cpp +0 -0
  865. package/src/deps/PDFWriter/PDFTextString.h +0 -0
  866. package/src/deps/PDFWriter/PDFTiledPattern.cpp +0 -0
  867. package/src/deps/PDFWriter/PDFTiledPattern.h +0 -0
  868. package/src/deps/PDFWriter/PDFUsedFont.cpp +1 -1
  869. package/src/deps/PDFWriter/PDFUsedFont.h +0 -0
  870. package/src/deps/PDFWriter/PDFWriter.cpp +2 -1
  871. package/src/deps/PDFWriter/PFMFileReader.cpp +0 -0
  872. package/src/deps/PDFWriter/PFMFileReader.h +0 -0
  873. package/src/deps/PDFWriter/PSBool.cpp +0 -0
  874. package/src/deps/PDFWriter/PSBool.h +0 -0
  875. package/src/deps/PDFWriter/PageContentContext.cpp +6 -1
  876. package/src/deps/PDFWriter/PageContentContext.h +1 -1
  877. package/src/deps/PDFWriter/PageTree.cpp +0 -0
  878. package/src/deps/PDFWriter/PageTree.h +0 -0
  879. package/src/deps/PDFWriter/PaintedGlyphsDrawingContext.cpp +646 -0
  880. package/src/deps/PDFWriter/PaintedGlyphsDrawingContext.h +97 -0
  881. package/src/deps/PDFWriter/ParsedPrimitiveHelper.cpp +0 -0
  882. package/src/deps/PDFWriter/ParsedPrimitiveHelper.h +0 -0
  883. package/src/deps/PDFWriter/ProcsetResourcesConstants.h +0 -0
  884. package/src/deps/PDFWriter/RC4.cpp +0 -0
  885. package/src/deps/PDFWriter/RC4.h +0 -0
  886. package/src/deps/PDFWriter/RadialGradientShadingPatternWritingTask.cpp +76 -0
  887. package/src/deps/PDFWriter/RadialGradientShadingPatternWritingTask.h +64 -0
  888. package/src/deps/PDFWriter/RefCountObject.cpp +0 -0
  889. package/src/deps/PDFWriter/RefCountObject.h +0 -0
  890. package/src/deps/PDFWriter/RefCountPtr.h +0 -0
  891. package/src/deps/PDFWriter/ResourcesDictionary.cpp +0 -0
  892. package/src/deps/PDFWriter/ResourcesDictionary.h +0 -0
  893. package/src/deps/PDFWriter/SafeBufferMacrosDefs.h +0 -0
  894. package/src/deps/PDFWriter/ShadingWriter.cpp +1074 -0
  895. package/src/deps/PDFWriter/ShadingWriter.h +300 -0
  896. package/src/deps/PDFWriter/SimpleGlyphsDrawingContext.cpp +74 -0
  897. package/src/deps/PDFWriter/SimpleGlyphsDrawingContext.h +48 -0
  898. package/src/deps/PDFWriter/SingleValueContainerIterator.h +0 -0
  899. package/src/deps/PDFWriter/Singleton.h +0 -0
  900. package/src/deps/PDFWriter/StandardEncoding.cpp +0 -0
  901. package/src/deps/PDFWriter/StandardEncoding.h +0 -0
  902. package/src/deps/PDFWriter/StateReader.cpp +0 -0
  903. package/src/deps/PDFWriter/StateReader.h +0 -0
  904. package/src/deps/PDFWriter/StateWriter.cpp +0 -0
  905. package/src/deps/PDFWriter/StateWriter.h +0 -0
  906. package/src/deps/PDFWriter/SweepGradientShadingPatternWritingTask.cpp +70 -0
  907. package/src/deps/PDFWriter/SweepGradientShadingPatternWritingTask.h +62 -0
  908. package/src/deps/PDFWriter/TIFFImageHandler.cpp +107 -107
  909. package/src/deps/PDFWriter/TIFFImageHandler.h +18 -18
  910. package/src/deps/PDFWriter/TiffUsageParameters.cpp +0 -0
  911. package/src/deps/PDFWriter/TiffUsageParameters.h +0 -0
  912. package/src/deps/PDFWriter/TiledPatternContentContext.cpp +6 -1
  913. package/src/deps/PDFWriter/TiledPatternContentContext.h +1 -0
  914. package/src/deps/PDFWriter/Timer.cpp +0 -0
  915. package/src/deps/PDFWriter/Timer.h +0 -0
  916. package/src/deps/PDFWriter/TimersRegistry.cpp +0 -0
  917. package/src/deps/PDFWriter/TimersRegistry.h +0 -0
  918. package/src/deps/PDFWriter/Trace.cpp +0 -0
  919. package/src/deps/PDFWriter/Trace.h +0 -0
  920. package/src/deps/PDFWriter/TrailerInformation.cpp +0 -0
  921. package/src/deps/PDFWriter/TrailerInformation.h +0 -0
  922. package/src/deps/PDFWriter/TrueTypeANSIFontWriter.cpp +0 -0
  923. package/src/deps/PDFWriter/TrueTypeANSIFontWriter.h +0 -0
  924. package/src/deps/PDFWriter/TrueTypeDescendentFontWriter.cpp +20 -2
  925. package/src/deps/PDFWriter/TrueTypeDescendentFontWriter.h +0 -0
  926. package/src/deps/PDFWriter/TrueTypeEmbeddedFontWriter.cpp +13 -2
  927. package/src/deps/PDFWriter/TrueTypeEmbeddedFontWriter.h +5 -0
  928. package/src/deps/PDFWriter/TrueTypePrimitiveWriter.cpp +0 -0
  929. package/src/deps/PDFWriter/TrueTypePrimitiveWriter.h +0 -0
  930. package/src/deps/PDFWriter/Type1Input.cpp +43 -38
  931. package/src/deps/PDFWriter/Type1Input.h +0 -0
  932. package/src/deps/PDFWriter/Type1ToCFFEmbeddedFontWriter.cpp +0 -0
  933. package/src/deps/PDFWriter/Type1ToCFFEmbeddedFontWriter.h +0 -0
  934. package/src/deps/PDFWriter/Type1ToType2Converter.cpp +119 -28
  935. package/src/deps/PDFWriter/Type1ToType2Converter.h +1 -1
  936. package/src/deps/PDFWriter/Type2CharStringWriter.cpp +0 -0
  937. package/src/deps/PDFWriter/Type2CharStringWriter.h +0 -0
  938. package/src/deps/PDFWriter/UnicodeString.cpp +0 -0
  939. package/src/deps/PDFWriter/UnicodeString.h +0 -0
  940. package/src/deps/PDFWriter/UppercaseSequance.cpp +0 -0
  941. package/src/deps/PDFWriter/UppercaseSequance.h +0 -0
  942. package/src/deps/PDFWriter/UsedFontsRepository.cpp +0 -0
  943. package/src/deps/PDFWriter/UsedFontsRepository.h +0 -0
  944. package/src/deps/PDFWriter/WinAnsiEncoding.cpp +0 -0
  945. package/src/deps/PDFWriter/WinAnsiEncoding.h +0 -0
  946. package/src/deps/PDFWriter/WrittenFontCFF.cpp +4 -4
  947. package/src/deps/PDFWriter/WrittenFontCFF.h +2 -2
  948. package/src/deps/PDFWriter/WrittenFontRepresentation.h +0 -0
  949. package/src/deps/PDFWriter/WrittenFontTrueType.cpp +55 -49
  950. package/src/deps/PDFWriter/WrittenFontTrueType.h +8 -2
  951. package/src/deps/PDFWriter/XCryptionCommon.cpp +0 -0
  952. package/src/deps/PDFWriter/XCryptionCommon.h +0 -0
  953. package/src/deps/PDFWriter/XObjectContentContext.cpp +6 -1
  954. package/src/deps/PDFWriter/XObjectContentContext.h +1 -0
  955. package/src/deps/PDFWriter/binding.gyp +366 -335
  956. package/src/deps/Zlib/CMakeLists.txt +68 -0
  957. package/src/deps/{ZLib → Zlib}/binding.gyp +20 -12
  958. package/src/deps/FreeType/builds/amiga/README +0 -110
  959. package/src/deps/FreeType/builds/amiga/include/config/ftconfig.h +0 -55
  960. package/src/deps/FreeType/builds/amiga/include/config/ftmodule.h +0 -160
  961. package/src/deps/FreeType/builds/amiga/makefile +0 -293
  962. package/src/deps/FreeType/builds/amiga/makefile.os4 +0 -297
  963. package/src/deps/FreeType/builds/amiga/smakefile +0 -299
  964. package/src/deps/FreeType/builds/amiga/src/base/ftdebug.c +0 -348
  965. package/src/deps/FreeType/builds/amiga/src/base/ftsystem.c +0 -530
  966. package/src/deps/FreeType/builds/ansi/ansi-def.mk +0 -77
  967. package/src/deps/FreeType/builds/ansi/ansi.mk +0 -21
  968. package/src/deps/FreeType/builds/atari/ATARI.H +0 -20
  969. package/src/deps/FreeType/builds/atari/FNames.SIC +0 -37
  970. package/src/deps/FreeType/builds/atari/FREETYPE.PRJ +0 -32
  971. package/src/deps/FreeType/builds/atari/README.TXT +0 -51
  972. package/src/deps/FreeType/builds/atari/deflinejoiner.awk +0 -181
  973. package/src/deps/FreeType/builds/atari/gen-purec-patch.sh +0 -40
  974. package/src/deps/FreeType/builds/beos/beos-def.mk +0 -79
  975. package/src/deps/FreeType/builds/beos/beos.mk +0 -19
  976. package/src/deps/FreeType/builds/beos/detect.mk +0 -41
  977. package/src/deps/FreeType/builds/cmake/FindHarfBuzz.cmake +0 -81
  978. package/src/deps/FreeType/builds/cmake/iOS.cmake +0 -270
  979. package/src/deps/FreeType/builds/cmake/testbuild.sh +0 -157
  980. package/src/deps/FreeType/builds/compiler/ansi-cc.mk +0 -80
  981. package/src/deps/FreeType/builds/compiler/bcc-dev.mk +0 -86
  982. package/src/deps/FreeType/builds/compiler/bcc.mk +0 -86
  983. package/src/deps/FreeType/builds/compiler/emx.mk +0 -77
  984. package/src/deps/FreeType/builds/compiler/gcc-dev.mk +0 -95
  985. package/src/deps/FreeType/builds/compiler/gcc.mk +0 -77
  986. package/src/deps/FreeType/builds/compiler/intelc.mk +0 -85
  987. package/src/deps/FreeType/builds/compiler/unix-lcc.mk +0 -83
  988. package/src/deps/FreeType/builds/compiler/visualage.mk +0 -76
  989. package/src/deps/FreeType/builds/compiler/visualc.mk +0 -82
  990. package/src/deps/FreeType/builds/compiler/watcom.mk +0 -81
  991. package/src/deps/FreeType/builds/compiler/win-lcc.mk +0 -81
  992. package/src/deps/FreeType/builds/detect.mk +0 -128
  993. package/src/deps/FreeType/builds/dos/detect.mk +0 -152
  994. package/src/deps/FreeType/builds/dos/dos-def.mk +0 -48
  995. package/src/deps/FreeType/builds/dos/dos-emx.mk +0 -21
  996. package/src/deps/FreeType/builds/dos/dos-gcc.mk +0 -21
  997. package/src/deps/FreeType/builds/dos/dos-wat.mk +0 -20
  998. package/src/deps/FreeType/builds/exports.mk +0 -80
  999. package/src/deps/FreeType/builds/freetype.mk +0 -392
  1000. package/src/deps/FreeType/builds/link_dos.mk +0 -42
  1001. package/src/deps/FreeType/builds/link_std.mk +0 -42
  1002. package/src/deps/FreeType/builds/mac/FreeType.m68k_cfm.make.txt +0 -209
  1003. package/src/deps/FreeType/builds/mac/FreeType.m68k_far.make.txt +0 -208
  1004. package/src/deps/FreeType/builds/mac/FreeType.ppc_carbon.make.txt +0 -212
  1005. package/src/deps/FreeType/builds/mac/FreeType.ppc_classic.make.txt +0 -213
  1006. package/src/deps/FreeType/builds/mac/README +0 -401
  1007. package/src/deps/FreeType/builds/mac/ascii2mpw.py +0 -24
  1008. package/src/deps/FreeType/builds/mac/freetype-Info.plist +0 -36
  1009. package/src/deps/FreeType/builds/mac/ftlib.prj.xml +0 -1194
  1010. package/src/deps/FreeType/builds/mac/ftmac.c +0 -1543
  1011. package/src/deps/FreeType/builds/modules.mk +0 -79
  1012. package/src/deps/FreeType/builds/os2/detect.mk +0 -81
  1013. package/src/deps/FreeType/builds/os2/os2-def.mk +0 -48
  1014. package/src/deps/FreeType/builds/os2/os2-dev.mk +0 -30
  1015. package/src/deps/FreeType/builds/os2/os2-gcc.mk +0 -26
  1016. package/src/deps/FreeType/builds/symbian/bld.inf +0 -72
  1017. package/src/deps/FreeType/builds/symbian/freetype.mmp +0 -146
  1018. package/src/deps/FreeType/builds/toplevel.mk +0 -274
  1019. package/src/deps/FreeType/builds/unix/aclocal.m4 +0 -9159
  1020. package/src/deps/FreeType/builds/unix/config.guess +0 -1493
  1021. package/src/deps/FreeType/builds/unix/config.sub +0 -1795
  1022. package/src/deps/FreeType/builds/unix/configure +0 -17365
  1023. package/src/deps/FreeType/builds/unix/configure.ac +0 -1145
  1024. package/src/deps/FreeType/builds/unix/configure.raw +0 -1145
  1025. package/src/deps/FreeType/builds/unix/detect.mk +0 -99
  1026. package/src/deps/FreeType/builds/unix/freetype-config.in +0 -211
  1027. package/src/deps/FreeType/builds/unix/freetype2.in +0 -14
  1028. package/src/deps/FreeType/builds/unix/freetype2.m4 +0 -194
  1029. package/src/deps/FreeType/builds/unix/ft-munmap.m4 +0 -32
  1030. package/src/deps/FreeType/builds/unix/ftconfig.in +0 -603
  1031. package/src/deps/FreeType/builds/unix/ftsystem.c +0 -420
  1032. package/src/deps/FreeType/builds/unix/install-sh +0 -501
  1033. package/src/deps/FreeType/builds/unix/install.mk +0 -102
  1034. package/src/deps/FreeType/builds/unix/ltmain.sh +0 -11147
  1035. package/src/deps/FreeType/builds/unix/pkg.m4 +0 -199
  1036. package/src/deps/FreeType/builds/unix/unix-cc.in +0 -121
  1037. package/src/deps/FreeType/builds/unix/unix-def.in +0 -160
  1038. package/src/deps/FreeType/builds/unix/unix-dev.mk +0 -26
  1039. package/src/deps/FreeType/builds/unix/unix-lcc.mk +0 -24
  1040. package/src/deps/FreeType/builds/unix/unix.mk +0 -62
  1041. package/src/deps/FreeType/builds/unix/unixddef.mk +0 -49
  1042. package/src/deps/FreeType/builds/vms/ftconfig.h +0 -557
  1043. package/src/deps/FreeType/builds/vms/ftsystem.c +0 -328
  1044. package/src/deps/FreeType/builds/wince/ftdebug.c +0 -354
  1045. package/src/deps/FreeType/builds/wince/vc2005-ce/freetype.vcproj +0 -874
  1046. package/src/deps/FreeType/builds/wince/vc2005-ce/index.html +0 -47
  1047. package/src/deps/FreeType/builds/wince/vc2008-ce/freetype.vcproj +0 -3508
  1048. package/src/deps/FreeType/builds/wince/vc2008-ce/index.html +0 -47
  1049. package/src/deps/FreeType/builds/windows/detect.mk +0 -202
  1050. package/src/deps/FreeType/builds/windows/ftdebug.c +0 -331
  1051. package/src/deps/FreeType/builds/windows/vc2010/freetype.user.props +0 -68
  1052. package/src/deps/FreeType/builds/windows/vc2010/index.html +0 -40
  1053. package/src/deps/FreeType/builds/windows/visualc/freetype.dsp +0 -354
  1054. package/src/deps/FreeType/builds/windows/visualc/freetype.dsw +0 -29
  1055. package/src/deps/FreeType/builds/windows/visualc/freetype.vcproj +0 -546
  1056. package/src/deps/FreeType/builds/windows/visualc/index.html +0 -38
  1057. package/src/deps/FreeType/builds/windows/visualce/freetype.dsp +0 -383
  1058. package/src/deps/FreeType/builds/windows/visualce/freetype.dsw +0 -29
  1059. package/src/deps/FreeType/builds/windows/visualce/freetype.vcproj +0 -3697
  1060. package/src/deps/FreeType/builds/windows/visualce/index.html +0 -47
  1061. package/src/deps/FreeType/builds/windows/w32-bcc.mk +0 -28
  1062. package/src/deps/FreeType/builds/windows/w32-bccd.mk +0 -26
  1063. package/src/deps/FreeType/builds/windows/w32-dev.mk +0 -32
  1064. package/src/deps/FreeType/builds/windows/w32-gcc.mk +0 -31
  1065. package/src/deps/FreeType/builds/windows/w32-icc.mk +0 -28
  1066. package/src/deps/FreeType/builds/windows/w32-intl.mk +0 -28
  1067. package/src/deps/FreeType/builds/windows/w32-lcc.mk +0 -24
  1068. package/src/deps/FreeType/builds/windows/w32-mingw32.mk +0 -33
  1069. package/src/deps/FreeType/builds/windows/w32-vcc.mk +0 -28
  1070. package/src/deps/FreeType/builds/windows/w32-wat.mk +0 -28
  1071. package/src/deps/FreeType/builds/windows/win32-def.mk +0 -51
  1072. package/src/deps/FreeType/include/freetype/internal/internal.h +0 -66
  1073. package/src/deps/FreeType/src/Jamfile +0 -19
  1074. package/src/deps/FreeType/src/autofit/Jamfile +0 -53
  1075. package/src/deps/FreeType/src/autofit/afangles.c +0 -285
  1076. package/src/deps/FreeType/src/autofit/afangles.h +0 -7
  1077. package/src/deps/FreeType/src/autofit/aflatin2.c +0 -2428
  1078. package/src/deps/FreeType/src/autofit/aflatin2.h +0 -46
  1079. package/src/deps/FreeType/src/autofit/afwarp.c +0 -373
  1080. package/src/deps/FreeType/src/autofit/afwarp.h +0 -66
  1081. package/src/deps/FreeType/src/autofit/afwrtsys.h +0 -52
  1082. package/src/deps/FreeType/src/base/Jamfile +0 -90
  1083. package/src/deps/FreeType/src/bdf/Jamfile +0 -31
  1084. package/src/deps/FreeType/src/bzip2/Jamfile +0 -18
  1085. package/src/deps/FreeType/src/cache/Jamfile +0 -37
  1086. package/src/deps/FreeType/src/cff/Jamfile +0 -36
  1087. package/src/deps/FreeType/src/cid/Jamfile +0 -34
  1088. package/src/deps/FreeType/src/gxvalid/Jamfile +0 -52
  1089. package/src/deps/FreeType/src/gzip/Jamfile +0 -16
  1090. package/src/deps/FreeType/src/gzip/infblock.c +0 -387
  1091. package/src/deps/FreeType/src/gzip/infblock.h +0 -36
  1092. package/src/deps/FreeType/src/gzip/infcodes.c +0 -250
  1093. package/src/deps/FreeType/src/gzip/infcodes.h +0 -31
  1094. package/src/deps/FreeType/src/gzip/infutil.c +0 -86
  1095. package/src/deps/FreeType/src/gzip/infutil.h +0 -98
  1096. package/src/deps/FreeType/src/lzw/Jamfile +0 -16
  1097. package/src/deps/FreeType/src/otvalid/Jamfile +0 -37
  1098. package/src/deps/FreeType/src/pcf/Jamfile +0 -32
  1099. package/src/deps/FreeType/src/pfr/Jamfile +0 -35
  1100. package/src/deps/FreeType/src/psaux/Jamfile +0 -45
  1101. package/src/deps/FreeType/src/pshinter/Jamfile +0 -34
  1102. package/src/deps/FreeType/src/psnames/Jamfile +0 -31
  1103. package/src/deps/FreeType/src/raster/Jamfile +0 -32
  1104. package/src/deps/FreeType/src/sfnt/Jamfile +0 -42
  1105. package/src/deps/FreeType/src/smooth/Jamfile +0 -32
  1106. package/src/deps/FreeType/src/tools/Jamfile +0 -5
  1107. package/src/deps/FreeType/src/truetype/Jamfile +0 -37
  1108. package/src/deps/FreeType/src/type1/Jamfile +0 -35
  1109. package/src/deps/FreeType/src/type42/Jamfile +0 -32
  1110. package/src/deps/FreeType/src/winfonts/Jamfile +0 -16
  1111. package/src/deps/LibTiff/libtiff.map +0 -4
  1112. package/src/deps/LibTiff/libtiffxx.map +0 -4
  1113. package/src/deps/LibTiff/tif_acorn.c +0 -526
  1114. package/src/deps/LibTiff/tif_apple.c +0 -281
  1115. package/src/deps/LibTiff/tif_atari.c +0 -250
  1116. package/src/deps/LibTiff/tif_config.h.in +0 -314
  1117. package/src/deps/LibTiff/tif_config.vc.h +0 -63
  1118. package/src/deps/LibTiff/tif_config.wince.h +0 -74
  1119. package/src/deps/LibTiff/tif_msdos.c +0 -193
  1120. package/src/deps/LibTiff/tif_win3.c +0 -232
  1121. package/src/deps/LibTiff/tiffconf.vc.h +0 -116
  1122. package/src/deps/LibTiff/tiffconf.wince.h +0 -136
  1123. package/src/deps/ZLib/CMakeLists.txt +0 -56
  1124. /package/src/deps/{ZLib → Zlib}/adler32.c +0 -0
  1125. /package/src/deps/{ZLib → Zlib}/compress.c +0 -0
  1126. /package/src/deps/{ZLib → Zlib}/crc32.c +0 -0
  1127. /package/src/deps/{ZLib → Zlib}/crc32.h +0 -0
  1128. /package/src/deps/{ZLib → Zlib}/deflate.c +0 -0
  1129. /package/src/deps/{ZLib → Zlib}/deflate.h +0 -0
  1130. /package/src/deps/{ZLib → Zlib}/gzclose.c +0 -0
  1131. /package/src/deps/{ZLib → Zlib}/gzguts.h +0 -0
  1132. /package/src/deps/{ZLib → Zlib}/gzlib.c +0 -0
  1133. /package/src/deps/{ZLib → Zlib}/gzread.c +0 -0
  1134. /package/src/deps/{ZLib → Zlib}/gzwrite.c +0 -0
  1135. /package/src/deps/{ZLib → Zlib}/infback.c +0 -0
  1136. /package/src/deps/{ZLib → Zlib}/inffast.c +0 -0
  1137. /package/src/deps/{ZLib → Zlib}/inffast.h +0 -0
  1138. /package/src/deps/{ZLib → Zlib}/inffixed.h +0 -0
  1139. /package/src/deps/{ZLib → Zlib}/inflate.c +0 -0
  1140. /package/src/deps/{ZLib → Zlib}/inflate.h +0 -0
  1141. /package/src/deps/{ZLib → Zlib}/inftrees.c +0 -0
  1142. /package/src/deps/{ZLib → Zlib}/inftrees.h +0 -0
  1143. /package/src/deps/{ZLib → Zlib}/trees.c +0 -0
  1144. /package/src/deps/{ZLib → Zlib}/trees.h +0 -0
  1145. /package/src/deps/{ZLib → Zlib}/uncompr.c +0 -0
  1146. /package/src/deps/{ZLib → Zlib}/zconf.h +0 -0
  1147. /package/src/deps/{ZLib → Zlib}/zlib.h +0 -0
  1148. /package/src/deps/{ZLib → Zlib}/zutil.c +0 -0
  1149. /package/src/deps/{ZLib → Zlib}/zutil.h +0 -0
@@ -0,0 +1,1074 @@
1
+ /*
2
+ Source File : ShadingWriter.cpp
3
+
4
+
5
+ Copyright 2011 Gal Kahana PDFWriter
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+
19
+ */
20
+
21
+ // The following implementation derives a lot of its ideas and some actual code from Google's Skia 2D library (https://skia.org/).
22
+ // Specifically the PDF Shader implementation via SkGradientShader class. I'm therefore placing here below Skia's license and copyright notice.
23
+
24
+ /*
25
+ Copyright (c) 2011 Google Inc. All rights reserved.
26
+
27
+ Redistribution and use in source and binary forms, with or without
28
+ modification, are permitted provided that the following conditions are
29
+ met:
30
+
31
+ * Redistributions of source code must retain the above copyright
32
+ notice, this list of conditions and the following disclaimer.
33
+
34
+ * Redistributions in binary form must reproduce the above copyright
35
+ notice, this list of conditions and the following disclaimer in
36
+ the documentation and/or other materials provided with the
37
+ distribution.
38
+
39
+ * Neither the name of the copyright holder nor the names of its
40
+ contributors may be used to endorse or promote products derived
41
+ from this software without specific prior written permission.
42
+
43
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
44
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
45
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
46
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
47
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
48
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
49
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
50
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
51
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
52
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
53
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
54
+
55
+ */
56
+
57
+ #include "ShadingWriter.h"
58
+ #include "DocumentContext.h"
59
+ #include "ObjectsContext.h"
60
+ #include "PDFTiledPattern.h"
61
+ #include "TiledPatternContentContext.h"
62
+ #include "DictionaryContext.h"
63
+ #include "PDFFormXObject.h"
64
+ #include "XObjectContentContext.h"
65
+ #include "PDFStream.h"
66
+ #include "IByteWriter.h"
67
+ #include "PrimitiveObjectsWriter.h"
68
+
69
+ #include <math.h>
70
+
71
+ using namespace PDFHummus;
72
+ using namespace std;
73
+
74
+ ShadingWriter::ShadingWriter(ObjectsContext* inObjectsContext, PDFHummus::DocumentContext* inDocumentContext) {
75
+ mObjectsContext = inObjectsContext;
76
+ mDocumentContext = inDocumentContext;
77
+ }
78
+
79
+ ShadingWriter::~ShadingWriter() {
80
+
81
+ }
82
+
83
+ PDFHummus::EStatusCode ShadingWriter::WriteRadialShadingPatternObject(
84
+ double inX0,
85
+ double inY0,
86
+ double inR0,
87
+ double inX1,
88
+ double inY1,
89
+ double inR1,
90
+ const InterpretedGradientStopList& inColorLine,
91
+ FT_PaintExtend inGradientExtend,
92
+ const PDFRectangle& inBounds,
93
+ const PDFMatrix& inMatrix,
94
+ ObjectIDType inPatternObjectId
95
+ ) {
96
+ RadialShading radialParams = {
97
+ inX0,
98
+ inY0,
99
+ inR0,
100
+ inX1,
101
+ inY1,
102
+ inR1,
103
+ inColorLine,
104
+ inGradientExtend
105
+ };
106
+
107
+ if(ColorLineHasTransparency(inColorLine))
108
+ return WriteRGBATiledPatternObject(radialParams, inBounds, inMatrix, inPatternObjectId);
109
+ else
110
+ return WriteRGBShadingPatternObject(radialParams, inBounds, inMatrix, inPatternObjectId);
111
+ }
112
+
113
+ bool ShadingWriter::ColorLineHasTransparency(const InterpretedGradientStopList& inColorLine) {
114
+ bool no = true;
115
+
116
+ InterpretedGradientStopList::const_iterator it = inColorLine.begin();
117
+
118
+ for(; it != inColorLine.end() & no;++it) {
119
+ no = (it->alpha == 1.0) && (it->color.alpha == 255);
120
+ }
121
+
122
+ return !no;
123
+ }
124
+
125
+ EStatusCode ShadingWriter::WriteSoftmaskPatternObjectForRGBAShades(
126
+ const PDFRectangle& inBounds,
127
+ const PDFMatrix& inMatrix,
128
+ ObjectIDType inPatternObjectId,
129
+ ObjectIDType& outAlphaShadeObjectId,
130
+ ObjectIDType& outRGBShadeObjectId
131
+ ) {
132
+ EStatusCode status = eSuccess;
133
+
134
+ do {
135
+ ObjectIDType transparencySmaskExtGStateObjectId = mObjectsContext->GetInDirectObjectsRegistry().AllocateNewObjectID();
136
+ ObjectIDType alphaShadingPatternObjectId = mObjectsContext->GetInDirectObjectsRegistry().AllocateNewObjectID();
137
+ ObjectIDType rgbShadingPatternObjectId = mObjectsContext->GetInDirectObjectsRegistry().AllocateNewObjectID();
138
+
139
+ PDFRectangle tiledPatternBounds = inMatrix.Transform(inBounds);
140
+
141
+ PDFTiledPattern* tiledPattern = mDocumentContext->StartTiledPattern(
142
+ 1,
143
+ 1,
144
+ tiledPatternBounds,
145
+ tiledPatternBounds.GetWidth(),
146
+ tiledPatternBounds.GetHeight(),
147
+ inPatternObjectId,
148
+ NULL);
149
+
150
+ TiledPatternContentContext* patternContentContext = tiledPattern->GetContentContext();
151
+ patternContentContext->gs(tiledPattern->GetResourcesDictionary().AddExtGStateMapping(transparencySmaskExtGStateObjectId));
152
+ patternContentContext->cs("Pattern");
153
+ patternContentContext->scn(tiledPattern->GetResourcesDictionary().AddPatternMapping(rgbShadingPatternObjectId));
154
+ patternContentContext->re(tiledPatternBounds.LowerLeftX,tiledPatternBounds.LowerLeftY,tiledPatternBounds.GetWidth(),tiledPatternBounds.GetHeight());
155
+ patternContentContext->fStar();
156
+ status = mDocumentContext->EndTiledPatternAndRelease(tiledPattern);
157
+ if(status != eSuccess)
158
+ break;
159
+
160
+ status = WriteAlphaSoftMaskExtGStateObject(inBounds, inMatrix, alphaShadingPatternObjectId, transparencySmaskExtGStateObjectId);
161
+ if(status != eSuccess)
162
+ break;
163
+
164
+ outAlphaShadeObjectId = alphaShadingPatternObjectId;
165
+ outRGBShadeObjectId = rgbShadingPatternObjectId;
166
+ } while(false);
167
+
168
+ return status;
169
+ }
170
+
171
+ PDFHummus::EStatusCode ShadingWriter::WriteRGBATiledPatternObject(
172
+ const RadialShading& inRadialShading,
173
+ const PDFRectangle& inBounds,
174
+ const PDFMatrix& inMatrix,
175
+ ObjectIDType inPatternObjectId
176
+ ) {
177
+ EStatusCode status = eSuccess;
178
+ ObjectIDType alphaShadingPatternObjectId;
179
+ ObjectIDType rgbShadingPatternObjectId;
180
+
181
+ do {
182
+ status = WriteSoftmaskPatternObjectForRGBAShades(inBounds, inMatrix, inPatternObjectId, alphaShadingPatternObjectId, rgbShadingPatternObjectId);
183
+ if(status != eSuccess)
184
+ break;
185
+
186
+ // now, draw the alpha shading, which has the same pysical properties of the rgb one, but colors are all the alpha
187
+ // component transitioning as a gradient
188
+ RadialShading alphaRadialShading = inRadialShading;
189
+ alphaRadialShading.colorLine = CreateAlphaShadingColorLine(inRadialShading.colorLine);
190
+
191
+ status = WriteRGBShadingPatternObject(alphaRadialShading, inBounds, inMatrix, alphaShadingPatternObjectId);
192
+ if(status != eSuccess)
193
+ break;
194
+
195
+ status = WriteRGBShadingPatternObject(inRadialShading, inBounds, inMatrix, rgbShadingPatternObjectId);
196
+
197
+ } while(false);
198
+
199
+
200
+ return status;
201
+
202
+ }
203
+
204
+ InterpretedGradientStopList ShadingWriter::CreateAlphaShadingColorLine(const InterpretedGradientStopList& inColorLine) {
205
+ InterpretedGradientStopList alphaAsRGBColorLine;
206
+ InterpretedGradientStopList::const_iterator it = inColorLine.begin();
207
+ for(; it != inColorLine.end();++it) {
208
+ FT_Byte alphaColor = FT_Byte(floor(it->alpha * it->color.alpha));
209
+ FT_Color color = {
210
+ alphaColor,
211
+ alphaColor,
212
+ alphaColor
213
+ };
214
+
215
+ InterpretedGradientStop stop = {
216
+ it->stopOffset,
217
+ 1,
218
+ color
219
+ };
220
+
221
+ alphaAsRGBColorLine.push_back(stop);
222
+ }
223
+
224
+ return alphaAsRGBColorLine;
225
+ }
226
+
227
+ PDFHummus::EStatusCode ShadingWriter::WriteAlphaSoftMaskExtGStateObject(
228
+ const PDFRectangle& inBounds,
229
+ const PDFMatrix& inMatrix,
230
+ ObjectIDType inAlphaShadingPatternObjectId,
231
+ ObjectIDType inExtGStateObjectId
232
+ ) {
233
+ EStatusCode status = eSuccess;
234
+
235
+ do {
236
+ ObjectIDType smaskFormObjectId = mObjectsContext->GetInDirectObjectsRegistry().AllocateNewObjectID();
237
+
238
+ // write ExtGState with soft mask reference
239
+ mObjectsContext->StartNewIndirectObject(inExtGStateObjectId);
240
+ DictionaryContext* extGStateDict = mObjectsContext->StartDictionary();
241
+
242
+ extGStateDict->WriteKey("Type");
243
+ extGStateDict->WriteNameValue("ExtGState");
244
+ extGStateDict->WriteKey("SMask");
245
+ DictionaryContext* smaskDict = mObjectsContext->StartDictionary();
246
+
247
+ smaskDict->WriteKey("Type");
248
+ smaskDict->WriteNameValue("Mask");
249
+ smaskDict->WriteKey("S");
250
+ smaskDict->WriteNameValue("Luminosity");
251
+ smaskDict->WriteKey("G");
252
+ smaskDict->WriteNewObjectReferenceValue(smaskFormObjectId);
253
+ status = mObjectsContext->EndDictionary(smaskDict);
254
+ if(status != eSuccess)
255
+ break;
256
+ status = mObjectsContext->EndDictionary(extGStateDict);
257
+ if(status != eSuccess)
258
+ break;
259
+ mObjectsContext->EndIndirectObject();
260
+
261
+ status = WriteAlphaSoftMaskXObjectFormObject(
262
+ inBounds,
263
+ inMatrix,
264
+ inAlphaShadingPatternObjectId,
265
+ smaskFormObjectId
266
+ );
267
+
268
+ } while(false);
269
+
270
+ return status;
271
+ }
272
+
273
+ class FromTransparencyGroupWriter: public DocumentContextExtenderAdapter {
274
+ public:
275
+ FromTransparencyGroupWriter(){};
276
+ virtual ~FromTransparencyGroupWriter(){};
277
+
278
+ virtual PDFHummus::EStatusCode OnFormXObjectWrite(
279
+ ObjectIDType inFormXObjectID,
280
+ ObjectIDType inFormXObjectResourcesDictionaryID,
281
+ DictionaryContext* inFormDictionaryContext,
282
+ ObjectsContext* inPDFWriterObjectContext,
283
+ PDFHummus::DocumentContext* inDocumentContext){
284
+ inFormDictionaryContext->WriteKey("Group");
285
+ DictionaryContext* transparencyGroup = inPDFWriterObjectContext->StartDictionary();
286
+ transparencyGroup->WriteKey("Type");
287
+ transparencyGroup->WriteNameValue("Group");
288
+ transparencyGroup->WriteKey("CS");
289
+ transparencyGroup->WriteNameValue("DeviceRGB");
290
+ transparencyGroup->WriteKey("S");
291
+ transparencyGroup->WriteNameValue("Transparency");
292
+ transparencyGroup->WriteKey("I");
293
+ transparencyGroup->WriteBooleanValue(true);
294
+ return inPDFWriterObjectContext->EndDictionary(transparencyGroup);
295
+ }
296
+ };
297
+
298
+ PDFHummus::EStatusCode ShadingWriter::WriteAlphaSoftMaskXObjectFormObject(
299
+ const PDFRectangle& inBounds,
300
+ const PDFMatrix& inMatrix,
301
+ ObjectIDType inAlphaShadingPatternObjectId,
302
+ ObjectIDType inXObjectFormObjectId
303
+ ) {
304
+ EStatusCode status = eSuccess;
305
+
306
+ PDFRectangle formBounds = inMatrix.Transform(inBounds);
307
+
308
+ do {
309
+ // adding a small extender to allow writing full transparency group data
310
+ FromTransparencyGroupWriter groupWriter;
311
+ mDocumentContext->AddDocumentContextExtender(&groupWriter);
312
+ PDFFormXObject* form = mDocumentContext->StartFormXObject(formBounds,inXObjectFormObjectId,NULL,false);
313
+ mDocumentContext->RemoveDocumentContextExtender(&groupWriter);
314
+
315
+ XObjectContentContext* xobjectContentContext = form->GetContentContext();
316
+
317
+ xobjectContentContext->cs("Pattern");
318
+ xobjectContentContext->scn(form->GetResourcesDictionary().AddPatternMapping(inAlphaShadingPatternObjectId));
319
+ xobjectContentContext->re(formBounds.LowerLeftX,formBounds.LowerLeftY,formBounds.GetWidth(),formBounds.GetHeight());
320
+ xobjectContentContext->fStar();
321
+
322
+ status = mDocumentContext->EndFormXObjectAndRelease(form);
323
+ if(status != eSuccess)
324
+ break;
325
+
326
+ } while(false);
327
+ return status;
328
+ }
329
+
330
+ PDFHummus::EStatusCode ShadingWriter::WriteRGBShadingPatternObject(
331
+ const RadialShading& inRadialShading,
332
+ const PDFRectangle& inBounds,
333
+ const PDFMatrix& inMatrix,
334
+ ObjectIDType inPatternObjectId
335
+ ) {
336
+ bool usePDFNativeFunctions = inRadialShading.gradientExtend == FT_COLR_PAINT_EXTEND_PAD;
337
+
338
+ if(usePDFNativeFunctions) {
339
+ return WriteShadingPatternObjectWithPDFNativeFunctions(
340
+ inRadialShading,
341
+ inBounds,
342
+ inMatrix,
343
+ inPatternObjectId
344
+ );
345
+ } else {
346
+ return WriteShadingPatternObjectWithPDFCustomFunctions(
347
+ inRadialShading,
348
+ inBounds,
349
+ inMatrix,
350
+ inPatternObjectId
351
+ );
352
+ }
353
+ }
354
+
355
+ PDFHummus::EStatusCode ShadingWriter::WriteShadingPatternObjectWithPDFNativeFunctions(
356
+ const RadialShading& inRadialShading,
357
+ const PDFRectangle& inBounds,
358
+ const PDFMatrix& inMatrix,
359
+ ObjectIDType inPatternObjectId
360
+ ) {
361
+ double coords[] = {inRadialShading.x0, inRadialShading.y0, inRadialShading.r0,
362
+ inRadialShading.x1, inRadialShading.y1, inRadialShading.r1};
363
+
364
+ return WriteShadingPatternObjectWithPDFNativeFunctions(
365
+ 3,
366
+ coords,
367
+ 6,
368
+ inRadialShading.colorLine,
369
+ inBounds,
370
+ inMatrix,
371
+ inPatternObjectId
372
+ );
373
+ }
374
+
375
+ EStatusCode ShadingWriter::WriteShadingPatternObjectWithPDFNativeFunctions(
376
+ unsigned short inShadingType,
377
+ double* inCoords,
378
+ unsigned short inCoordsSize,
379
+ const InterpretedGradientStopList& inColorLine,
380
+ const PDFRectangle& inBounds,
381
+ const PDFMatrix& inMatrix,
382
+ ObjectIDType inPatternObjectId
383
+ ) {
384
+ EStatusCode status = eSuccess;
385
+
386
+ ObjectIDType shadingObjectId;
387
+
388
+ do {
389
+ status = WriteShadingPatternObject(inMatrix, inPatternObjectId, shadingObjectId);
390
+ if(status != eSuccess)
391
+ break;
392
+
393
+ mObjectsContext->StartNewIndirectObject(shadingObjectId);
394
+ DictionaryContext* shadingDict = mObjectsContext->StartDictionary();
395
+ shadingDict->WriteKey("ShadingType");
396
+ shadingDict->WriteIntegerValue(inShadingType);
397
+ shadingDict->WriteKey("Coords");
398
+ mObjectsContext->StartArray();
399
+ for(unsigned short i = 0; i< inCoordsSize; ++i) {
400
+ mObjectsContext->WriteDouble(inCoords[i]);
401
+ }
402
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
403
+ shadingDict->WriteKey("ColorSpace");
404
+ shadingDict->WriteNameValue("DeviceRGB");
405
+ shadingDict->WriteKey("Extend");
406
+ mObjectsContext->StartArray();
407
+ mObjectsContext->WriteBoolean(true);
408
+ mObjectsContext->WriteBoolean(true);
409
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
410
+ shadingDict->WriteKey("Function");
411
+ DictionaryContext* functionDict = mObjectsContext->StartDictionary();
412
+ functionDict->WriteKey("FunctionType");
413
+ functionDict->WriteIntegerValue(3);
414
+ functionDict->WriteKey("Bounds");
415
+ mObjectsContext->StartArray();
416
+ // bound contains whats within the edges, so should skip
417
+ // first and last (which are expected to be 0 and 1)
418
+ InterpretedGradientStopList::const_iterator it1 = inColorLine.begin();
419
+ InterpretedGradientStopList::const_iterator it2 = inColorLine.begin();
420
+ ++it1;
421
+ ++it2;
422
+ ++it1;
423
+ for(; it1 != inColorLine.end();++it1,++it2) {
424
+ mObjectsContext->WriteDouble(it2->stopOffset);
425
+ }
426
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
427
+ // last stop, which should probably be 1, is saved cause will be used in domains
428
+ double lastStop = it2->stopOffset;
429
+ functionDict->WriteKey("Domain");
430
+ mObjectsContext->StartArray();
431
+ mObjectsContext->WriteDouble(0);
432
+ mObjectsContext->WriteDouble(1);
433
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
434
+ functionDict->WriteKey("Encode");
435
+ mObjectsContext->StartArray();
436
+ // write encodes for size-1 functions
437
+ for(int i=0; i<inColorLine.size()-1;++i) {
438
+ mObjectsContext->WriteDouble(0);
439
+ mObjectsContext->WriteDouble(1);
440
+ }
441
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
442
+ functionDict->WriteKey("Functions");
443
+ // draw all stops, each in its own function. note that there should be size-1 functions!
444
+ mObjectsContext->StartArray();
445
+ it1 = inColorLine.begin();
446
+ it2 = inColorLine.begin();
447
+ ++it1;
448
+ for(; it1 != inColorLine.end() && eSuccess == status;++it1,++it2) {
449
+ DictionaryContext* colorStopDict = mObjectsContext->StartDictionary();
450
+ colorStopDict->WriteKey("FunctionType");
451
+ colorStopDict->WriteIntegerValue(2);
452
+ colorStopDict->WriteKey("N");
453
+ colorStopDict->WriteIntegerValue(1);
454
+ colorStopDict->WriteKey("Domain");
455
+ mObjectsContext->StartArray();
456
+ mObjectsContext->WriteDouble(0);
457
+ mObjectsContext->WriteDouble(lastStop);
458
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
459
+ colorStopDict->WriteKey("C0");
460
+ mObjectsContext->StartArray();
461
+ mObjectsContext->WriteDouble(it2->color.red/255.0);
462
+ mObjectsContext->WriteDouble(it2->color.green/255.0);
463
+ mObjectsContext->WriteDouble(it2->color.blue/255.0);
464
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
465
+ colorStopDict->WriteKey("C1");
466
+ mObjectsContext->StartArray();
467
+ mObjectsContext->WriteDouble(it1->color.red/255.0);
468
+ mObjectsContext->WriteDouble(it1->color.green/255.0);
469
+ mObjectsContext->WriteDouble(it1->color.blue/255.0);
470
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
471
+ status = mObjectsContext->EndDictionary(colorStopDict);
472
+ if(status != eSuccess)
473
+ break;
474
+ }
475
+ if(status != eSuccess)
476
+ break;
477
+
478
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
479
+ status = mObjectsContext->EndDictionary(functionDict);
480
+ if(status != eSuccess)
481
+ break;
482
+ status = mObjectsContext->EndDictionary(shadingDict);
483
+ if(status != eSuccess)
484
+ break;
485
+ mObjectsContext->EndIndirectObject();
486
+ }while(false);
487
+ return status;
488
+ }
489
+
490
+
491
+ EStatusCode ShadingWriter::WriteShadingPatternObject(
492
+ const PDFMatrix& inShadingMatrix,
493
+ ObjectIDType inPatternObjectId,
494
+ ObjectIDType& outShadingObjectId
495
+ ) {
496
+ ObjectIDType shadingObjectId = mObjectsContext->GetInDirectObjectsRegistry().AllocateNewObjectID();
497
+
498
+ mObjectsContext->StartNewIndirectObject(inPatternObjectId);
499
+ DictionaryContext* patternDict = mObjectsContext->StartDictionary();
500
+ patternDict->WriteKey("Type");
501
+ patternDict->WriteNameValue("Pattern");
502
+ patternDict->WriteKey("PatternType");
503
+ patternDict->WriteIntegerValue(2);
504
+ patternDict->WriteKey("Matrix");
505
+ mObjectsContext->StartArray();
506
+ mObjectsContext->WriteDouble(inShadingMatrix.a);
507
+ mObjectsContext->WriteDouble(inShadingMatrix.b);
508
+ mObjectsContext->WriteDouble(inShadingMatrix.c);
509
+ mObjectsContext->WriteDouble(inShadingMatrix.d);
510
+ mObjectsContext->WriteDouble(inShadingMatrix.e);
511
+ mObjectsContext->WriteDouble(inShadingMatrix.f);
512
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
513
+ patternDict->WriteKey("Shading");
514
+ patternDict->WriteNewObjectReferenceValue(shadingObjectId);
515
+ EStatusCode status = mObjectsContext->EndDictionary(patternDict);
516
+ if(eSuccess == status)
517
+ mObjectsContext->EndIndirectObject();
518
+
519
+ outShadingObjectId = shadingObjectId;
520
+
521
+ return status;
522
+ }
523
+
524
+ PDFHummus::EStatusCode ShadingWriter::WriteShadingPatternObjectWithPDFCustomFunctions(
525
+ const RadialShading& inRadialShading,
526
+ const PDFRectangle& inBounds,
527
+ const PDFMatrix& inMatrix,
528
+ ObjectIDType inPatternObjectId
529
+ ) {
530
+ EStatusCode status = eSuccess;
531
+ PDFStream* pdfStream = NULL;
532
+
533
+ // apply transform matrix, to map pattern based on function range
534
+ PDFMatrix patternProgramMatrix(1,0,0,1,inRadialShading.x0,inRadialShading.y0);
535
+
536
+ do {
537
+ pdfStream = StartCustomFunctionShadingPatternStream(patternProgramMatrix, inBounds, inMatrix, inPatternObjectId);
538
+ if(!pdfStream) {
539
+ status = eFailure;
540
+ break;
541
+ }
542
+
543
+ IByteWriter* writeStream = pdfStream->GetWriteStream();
544
+ PrimitiveObjectsWriter primitiveWriter(writeStream);
545
+ WriteGradientCustomFunctionProgram(inRadialShading, writeStream, &primitiveWriter);
546
+ mObjectsContext->EndPDFStream(pdfStream);
547
+ } while(false);
548
+
549
+ delete pdfStream;
550
+
551
+ return status;
552
+ }
553
+
554
+ PDFStream* ShadingWriter::StartCustomFunctionShadingPatternStream(
555
+ const PDFMatrix& inPatternProgramMatrix,
556
+ const PDFRectangle& inBounds,
557
+ const PDFMatrix& inMatrix,
558
+ ObjectIDType inPatternObjectId
559
+ ) {
560
+ EStatusCode status = eSuccess;
561
+ PDFStream* pdfStream = NULL;
562
+
563
+ ObjectIDType shadingObjectId;
564
+ ObjectIDType functionObjectId;
565
+
566
+
567
+ PDFMatrix patternMatrix = inPatternProgramMatrix.Multiply(inMatrix);
568
+ PDFRectangle domainBounds = inPatternProgramMatrix.Inverse().Transform(inBounds);
569
+
570
+ do {
571
+ status = WriteShadingPatternObject(patternMatrix, inPatternObjectId, shadingObjectId);
572
+ if(status != eSuccess)
573
+ break;
574
+
575
+ status = WriteShadingType1Object(domainBounds, shadingObjectId, functionObjectId);
576
+ if(status != eSuccess)
577
+ break;
578
+
579
+ // function object
580
+ mObjectsContext->StartNewIndirectObject(functionObjectId);
581
+ DictionaryContext* functionDict = mObjectsContext->StartDictionary();
582
+ functionDict->WriteKey("FunctionType");
583
+ functionDict->WriteIntegerValue(4);
584
+ functionDict->WriteKey("Domain");
585
+ mObjectsContext->StartArray();
586
+ mObjectsContext->WriteDouble(domainBounds.LowerLeftX);
587
+ mObjectsContext->WriteDouble(domainBounds.UpperRightX);
588
+ mObjectsContext->WriteDouble(domainBounds.LowerLeftY);
589
+ mObjectsContext->WriteDouble(domainBounds.UpperRightY);
590
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
591
+ functionDict->WriteKey("Range");
592
+ mObjectsContext->StartArray();
593
+ mObjectsContext->WriteInteger(0);
594
+ mObjectsContext->WriteInteger(1);
595
+ mObjectsContext->WriteInteger(0);
596
+ mObjectsContext->WriteInteger(1);
597
+ mObjectsContext->WriteInteger(0);
598
+ mObjectsContext->WriteInteger(1);
599
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
600
+
601
+ // now lets make this a stream so we can write the Postscript code
602
+ pdfStream = mObjectsContext->StartPDFStream(functionDict);
603
+
604
+ } while(false);
605
+
606
+ return pdfStream;
607
+ }
608
+
609
+ PDFHummus::EStatusCode ShadingWriter::WriteShadingType1Object(const PDFRectangle& inBounds, ObjectIDType inShadingObjectId, ObjectIDType& outFunctionObjectId) {
610
+ ObjectIDType functionObjectId = mObjectsContext->GetInDirectObjectsRegistry().AllocateNewObjectID();
611
+
612
+ mObjectsContext->StartNewIndirectObject(inShadingObjectId);
613
+ DictionaryContext* shadingDict = mObjectsContext->StartDictionary();
614
+ shadingDict->WriteKey("ShadingType");
615
+ shadingDict->WriteIntegerValue(1);
616
+ shadingDict->WriteKey("Domain");
617
+ mObjectsContext->StartArray();
618
+ mObjectsContext->WriteDouble(inBounds.LowerLeftX);
619
+ mObjectsContext->WriteDouble(inBounds.UpperRightX);
620
+ mObjectsContext->WriteDouble(inBounds.LowerLeftY);
621
+ mObjectsContext->WriteDouble(inBounds.UpperRightY);
622
+ mObjectsContext->EndArray(eTokenSeparatorEndLine);
623
+ shadingDict->WriteKey("ColorSpace");
624
+ shadingDict->WriteNameValue("DeviceRGB");
625
+ shadingDict->WriteKey("Function");
626
+ shadingDict->WriteNewObjectReferenceValue(functionObjectId);
627
+ EStatusCode status = mObjectsContext->EndDictionary(shadingDict);
628
+ if(eSuccess == status)
629
+ mObjectsContext->EndIndirectObject();
630
+
631
+ outFunctionObjectId = functionObjectId;
632
+
633
+ return status;
634
+ }
635
+
636
+ void ShadingWriter::WriteGradientCustomFunctionProgram(
637
+ const RadialShading& inRadialShading,
638
+ IByteWriter* inWriter,
639
+ PrimitiveObjectsWriter* inPrimitiveWriter) {
640
+ double dx = inRadialShading.x1-inRadialShading.x0;
641
+ double dy = inRadialShading.y1-inRadialShading.y0;
642
+ double dr = inRadialShading.r1-inRadialShading.r0;
643
+ double a = dx * dx + dy * dy - dr * dr;
644
+
645
+ WriteStreamText(inWriter,"{2 copy ");
646
+ inPrimitiveWriter->WriteDouble(dy);
647
+ WriteStreamText(inWriter,"mul exch ");
648
+ inPrimitiveWriter->WriteDouble(dx);
649
+ WriteStreamText(inWriter,"mul add ");
650
+ inPrimitiveWriter->WriteDouble(inRadialShading.r0*dr);
651
+ WriteStreamText(inWriter," add -2 mul dup dup mul\n4 2 roll dup mul exch dup mul add ");
652
+ inPrimitiveWriter->WriteDouble(inRadialShading.r0*inRadialShading.r0);
653
+ WriteStreamText(inWriter,"sub dup 4 1 roll\n");
654
+
655
+ if(a == 0) {
656
+ WriteStreamText(inWriter,"pop pop div neg dup ");
657
+ inPrimitiveWriter->WriteDouble(dr);
658
+ WriteStreamText(inWriter,"mul ");
659
+ inPrimitiveWriter->WriteDouble(inRadialShading.r0);
660
+ WriteStreamText(inWriter,"add\n0 lt {pop false} {true} ifelse\n");
661
+ } else {
662
+ inPrimitiveWriter->WriteDouble(a*4);
663
+ WriteStreamText(inWriter,"mul sub dup\n0 ge {\nsqrt exch dup 0 lt {exch -1 mul} if add -0.5 mul dup\n");
664
+ inPrimitiveWriter->WriteDouble(a);
665
+ WriteStreamText(inWriter,"div\n3 1 roll div\n2 copy gt {exch} if\ndup ");
666
+ inPrimitiveWriter->WriteDouble(dr);
667
+ WriteStreamText(inWriter,"mul ");
668
+ inPrimitiveWriter->WriteDouble(inRadialShading.r0);
669
+ WriteStreamText(inWriter,"add\n 0 gt {exch pop true}\n{pop dup\n");
670
+ inPrimitiveWriter->WriteDouble(dr);
671
+ WriteStreamText(inWriter,"mul ");
672
+ inPrimitiveWriter->WriteDouble(inRadialShading.r0);
673
+ WriteStreamText(inWriter,"add\n");
674
+ WriteStreamText(inWriter,"0 le {pop false} {true} ifelse\n} ifelse\n} {pop pop pop false} ifelse\n");
675
+ }
676
+
677
+ WriteStreamText(inWriter,"{");
678
+
679
+ // write the rest of the steps using shared code
680
+ WriteColorLineStepsProgram(inWriter,inPrimitiveWriter,inRadialShading.gradientExtend, inRadialShading.colorLine);
681
+
682
+ WriteStreamText(inWriter,"} {0 0 0} ifelse}");
683
+ }
684
+
685
+ void ShadingWriter::WriteStreamText(IByteWriter* inWriter, const std::string& inText) {
686
+ inWriter->Write((const Byte*)(inText.c_str()),inText.size());
687
+ }
688
+
689
+ void ShadingWriter::WriteColorLineStepsProgram(
690
+ IByteWriter* inWriter,
691
+ PrimitiveObjectsWriter* inPrimitiveWriter,
692
+ FT_PaintExtend inGradientExtend,
693
+ const InterpretedGradientStopList& inColorLine) {
694
+
695
+ // function start, setup header per extend policy
696
+ if(inGradientExtend == FT_COLR_PAINT_EXTEND_REPEAT)
697
+ WriteStreamText(inWriter,"dup truncate sub\ndup 0 le {1 add} if\n");
698
+ else if(inGradientExtend == FT_COLR_PAINT_EXTEND_REFLECT)
699
+ WriteStreamText(inWriter,"abs dup truncate dup cvi 2 mod 0 gt 3 1 roll sub exch {1 exch sub} if\n");
700
+
701
+ double firstStop = inColorLine.front().stopOffset;
702
+ double lastStop = inColorLine.back().stopOffset;
703
+
704
+ // padding unto first stop
705
+ WriteStreamText(inWriter,"dup ");
706
+ inPrimitiveWriter->WriteDouble(firstStop);
707
+ WriteStreamText(inWriter,"le {pop ");
708
+ inPrimitiveWriter->WriteDouble(inColorLine.front().color.red / 255.0);
709
+ inPrimitiveWriter->WriteDouble(inColorLine.front().color.green / 255.0);
710
+ inPrimitiveWriter->WriteDouble(inColorLine.front().color.blue / 255.0);
711
+ WriteStreamText(inWriter,"0} if\n");
712
+
713
+ // wrapper for in between stops code
714
+ WriteStreamText(inWriter,"dup dup ");
715
+ inPrimitiveWriter->WriteDouble(firstStop);
716
+ WriteStreamText(inWriter,"gt exch ");
717
+ inPrimitiveWriter->WriteDouble(lastStop);
718
+ WriteStreamText(inWriter,"le and ");
719
+
720
+ // k. interim stops, lets prep those cursers
721
+ InterpretedGradientStopList::const_iterator itStartRange = inColorLine.begin();
722
+ InterpretedGradientStopList::const_iterator itEndRange = inColorLine.begin();
723
+ ++itEndRange;
724
+
725
+ // k. write stops, and interpolate.
726
+ for(; itEndRange != inColorLine.end(); ++itStartRange,++itEndRange) {
727
+ if(itStartRange->stopOffset > firstStop) {
728
+ // all but first, close previous if of ifelse statement
729
+ WriteStreamText(inWriter,"}");
730
+ }
731
+ WriteStreamText(inWriter,"{\n");
732
+ if(itEndRange->stopOffset < lastStop) {
733
+ // all but last check value (last will enjoy the last else of ifelse)
734
+ WriteStreamText(inWriter,"dup ");
735
+ inPrimitiveWriter->WriteDouble(itEndRange->stopOffset);
736
+ WriteStreamText(inWriter,"le ");
737
+ WriteStreamText(inWriter,"{\n");
738
+ }
739
+ inPrimitiveWriter->WriteDouble(itStartRange->stopOffset);
740
+ WriteStreamText(inWriter,"sub ");
741
+
742
+ // if all colors are the same, just write as is
743
+
744
+ // otherwise, interpolate
745
+ if(itStartRange->color.red == itEndRange->color.red &&
746
+ itStartRange->color.green == itEndRange->color.green &&
747
+ itStartRange->color.blue == itEndRange->color.blue) {
748
+
749
+ WriteStreamText(inWriter,"pop ");
750
+ inPrimitiveWriter->WriteDouble(itEndRange->color.red / 255.0);
751
+ inPrimitiveWriter->WriteDouble(itEndRange->color.green / 255.0);
752
+ inPrimitiveWriter->WriteDouble(itEndRange->color.blue / 255.0);
753
+ } else {
754
+ double rangeDiff = itEndRange->stopOffset - itStartRange->stopOffset;
755
+ WriteColorInterpolation(inWriter, inPrimitiveWriter, itStartRange->color.red, itEndRange->color.red, rangeDiff);
756
+ WriteColorInterpolation(inWriter, inPrimitiveWriter, itStartRange->color.green, itEndRange->color.green, rangeDiff);
757
+ WriteColorInterpolation(inWriter, inPrimitiveWriter, itStartRange->color.blue, itEndRange->color.blue, rangeDiff);
758
+ WriteStreamText(inWriter,"pop ");
759
+ }
760
+ }
761
+
762
+ // "ifselse" (basically size -2, cause only all but first, and then always dual)
763
+ for(int i=0;i<inColorLine.size()-2;++i) {
764
+ WriteStreamText(inWriter,"} ifelse\n");
765
+ }
766
+
767
+ WriteStreamText(inWriter,"0} if\n");
768
+
769
+ // padding after last stop
770
+ WriteStreamText(inWriter,"0 gt {");
771
+ inPrimitiveWriter->WriteDouble(inColorLine.back().color.red / 255.0);
772
+ inPrimitiveWriter->WriteDouble(inColorLine.back().color.green / 255.0);
773
+ inPrimitiveWriter->WriteDouble(inColorLine.back().color.blue / 255.0);
774
+ WriteStreamText(inWriter,"} if\n");
775
+
776
+ }
777
+
778
+ void ShadingWriter::WriteColorInterpolation(
779
+ IByteWriter* inWriter,
780
+ PrimitiveObjectsWriter* inPrimitiveWriter,
781
+ FT_Byte inColorStart,
782
+ FT_Byte inColorEnd,
783
+ double inStopDiff) {
784
+ if(inColorEnd == inColorStart) {
785
+ // same color...so just put it there
786
+ inPrimitiveWriter->WriteDouble(inColorEnd/255.0);
787
+ } else {
788
+ // interpolate
789
+ WriteStreamText(inWriter, "dup ");
790
+ inPrimitiveWriter->WriteDouble((inColorEnd - inColorStart)/(inStopDiff*255.0));
791
+ WriteStreamText(inWriter, "mul ");
792
+ inPrimitiveWriter->WriteDouble(inColorStart/255.0);
793
+ WriteStreamText(inWriter, "add ");
794
+ }
795
+ WriteStreamText(inWriter, "exch ");
796
+ }
797
+
798
+ EStatusCode ShadingWriter::WriteLinearShadingPatternObject(
799
+ double inX0,
800
+ double inY0,
801
+ double inX1,
802
+ double inY1,
803
+ const InterpretedGradientStopList& inColorLine,
804
+ FT_PaintExtend inGradientExtend,
805
+ const PDFRectangle& inBounds,
806
+ const PDFMatrix& inMatrix,
807
+ ObjectIDType inPatternObjectId
808
+ ) {
809
+ LinearShading linearParams = {
810
+ inX0,
811
+ inY0,
812
+ inX1,
813
+ inY1,
814
+ inColorLine,
815
+ inGradientExtend
816
+ };
817
+
818
+ if(ColorLineHasTransparency(inColorLine))
819
+ return WriteRGBATiledPatternObject(linearParams, inBounds, inMatrix, inPatternObjectId);
820
+ else
821
+ return WriteRGBShadingPatternObject(linearParams, inBounds, inMatrix, inPatternObjectId);
822
+
823
+ }
824
+
825
+ EStatusCode ShadingWriter::WriteRGBATiledPatternObject(
826
+ const LinearShading& inLinearShading,
827
+ const PDFRectangle& inBounds,
828
+ const PDFMatrix& inMatrix,
829
+ ObjectIDType inPatternObjectId
830
+ ) {
831
+ EStatusCode status = eSuccess;
832
+
833
+ do {
834
+ ObjectIDType alphaShadingPatternObjectId;
835
+ ObjectIDType rgbShadingPatternObjectId;
836
+
837
+ status = WriteSoftmaskPatternObjectForRGBAShades(inBounds, inMatrix, inPatternObjectId, alphaShadingPatternObjectId, rgbShadingPatternObjectId);
838
+ if(status != eSuccess) {
839
+ break;
840
+ }
841
+
842
+ // now, draw the alpha shading, which has the same pysical properties of the rgb one, but colors are all the alpha
843
+ // component transitioning as a gradient
844
+ LinearShading alphaLinearShading = inLinearShading;
845
+ alphaLinearShading.colorLine = CreateAlphaShadingColorLine(inLinearShading.colorLine);
846
+
847
+ status = WriteRGBShadingPatternObject(alphaLinearShading, inBounds, inMatrix, alphaShadingPatternObjectId);
848
+ if(status != eSuccess)
849
+ break;
850
+
851
+ status = WriteRGBShadingPatternObject(inLinearShading, inBounds, inMatrix, rgbShadingPatternObjectId);
852
+
853
+ } while(false);
854
+
855
+
856
+ return status;
857
+ }
858
+
859
+ EStatusCode ShadingWriter::WriteRGBShadingPatternObject(
860
+ const LinearShading& inLinearShading,
861
+ const PDFRectangle& inBounds,
862
+ const PDFMatrix& inMatrix,
863
+ ObjectIDType inPatternObjectId
864
+ ) {
865
+ bool usePDFNativeFunctions = inLinearShading.gradientExtend == FT_COLR_PAINT_EXTEND_PAD;
866
+
867
+ if(usePDFNativeFunctions) {
868
+ return WriteShadingPatternObjectWithPDFNativeFunctions(
869
+ inLinearShading,
870
+ inBounds,
871
+ inMatrix,
872
+ inPatternObjectId
873
+ );
874
+ } else {
875
+ return WriteShadingPatternObjectWithPDFCustomFunctions(
876
+ inLinearShading,
877
+ inBounds,
878
+ inMatrix,
879
+ inPatternObjectId
880
+ );
881
+ }
882
+
883
+ }
884
+
885
+ EStatusCode ShadingWriter::WriteShadingPatternObjectWithPDFNativeFunctions(
886
+ const LinearShading& inLinearShading,
887
+ const PDFRectangle& inBounds,
888
+ const PDFMatrix& inMatrix,
889
+ ObjectIDType inPatternObjectId
890
+ ) {
891
+ double coords[] = {inLinearShading.x0, inLinearShading.y0,
892
+ inLinearShading.x1, inLinearShading.y1};
893
+
894
+ return WriteShadingPatternObjectWithPDFNativeFunctions(
895
+ 2,
896
+ coords,
897
+ 4,
898
+ inLinearShading.colorLine,
899
+ inBounds,
900
+ inMatrix,
901
+ inPatternObjectId
902
+ );
903
+ }
904
+
905
+ EStatusCode ShadingWriter::WriteShadingPatternObjectWithPDFCustomFunctions(
906
+ const LinearShading& inLinearShading,
907
+ const PDFRectangle& inBounds,
908
+ const PDFMatrix& inMatrix,
909
+ ObjectIDType inPatternObjectId
910
+ ) {
911
+ EStatusCode status = eSuccess;
912
+ PDFStream* pdfStream = NULL;
913
+
914
+ // apply transform matrix, to map pattern based on function range
915
+ double p0p1[2] = {inLinearShading.x1-inLinearShading.x0,inLinearShading.y1-inLinearShading.y0};
916
+ double magP0P1 = sqrt(pow(p0p1[0],2) + pow(p0p1[1],2));
917
+ double p0p1Unit[2] = {magP0P1 == 0 ? 0:p0p1[0]/magP0P1, magP0P1 == 0 ? 0:p0p1[1]/magP0P1};
918
+ PDFMatrix patternProgramMatrix(p0p1Unit[0],p0p1Unit[1],-p0p1Unit[1],p0p1Unit[0],0,0);
919
+ patternProgramMatrix = patternProgramMatrix.Multiply(PDFMatrix(magP0P1,0,0,magP0P1,0,0));
920
+ patternProgramMatrix.e+=inLinearShading.x0;
921
+ patternProgramMatrix.f+=inLinearShading.y0;
922
+
923
+ do {
924
+ pdfStream = StartCustomFunctionShadingPatternStream(patternProgramMatrix, inBounds, inMatrix, inPatternObjectId);
925
+ if(!pdfStream) {
926
+ status = eFailure;
927
+ break;
928
+ }
929
+
930
+ IByteWriter* writeStream = pdfStream->GetWriteStream();
931
+ PrimitiveObjectsWriter primitiveWriter(writeStream);
932
+ WriteGradientCustomFunctionProgram(inLinearShading, writeStream, &primitiveWriter);
933
+ mObjectsContext->EndPDFStream(pdfStream);
934
+ } while(false);
935
+
936
+ delete pdfStream;
937
+
938
+ return status;
939
+ }
940
+
941
+ void ShadingWriter::WriteGradientCustomFunctionProgram(
942
+ const LinearShading& inLinearShading,
943
+ IByteWriter* inWriter,
944
+ PrimitiveObjectsWriter* inPrimitiveWriter) {
945
+
946
+ WriteStreamText(inWriter, "{pop\n");
947
+
948
+ // write the rest of the steps using shared code
949
+ WriteColorLineStepsProgram(inWriter,inPrimitiveWriter,inLinearShading.gradientExtend, inLinearShading.colorLine);
950
+
951
+ // function end
952
+ WriteStreamText(inWriter, "}");
953
+ }
954
+
955
+ EStatusCode ShadingWriter::WriteSweepShadingPatternObject(
956
+ double inCX,
957
+ double inCY,
958
+ double inStartAngleRad,
959
+ double inEndAngleRad,
960
+ const InterpretedGradientStopList& inColorLine,
961
+ FT_PaintExtend inGradientExtend,
962
+ const PDFRectangle& inBounds,
963
+ const PDFMatrix& inMatrix,
964
+ ObjectIDType inPatternObjectId) {
965
+
966
+ // Note: at this point start and end angles are ignored. 0..360 is the range used at all times.
967
+ // As a side effect this also means there's no support for extend, as the full range is always implemented.
968
+ SweepShading sweepParams = {
969
+ inCX,
970
+ inCY,
971
+ inStartAngleRad,
972
+ inEndAngleRad,
973
+ inColorLine,
974
+ inGradientExtend
975
+ };
976
+
977
+ if(ColorLineHasTransparency(inColorLine))
978
+ return WriteRGBATiledPatternObject(sweepParams, inBounds, inMatrix, inPatternObjectId);
979
+ else
980
+ return WriteRGBShadingPatternObject(sweepParams, inBounds, inMatrix, inPatternObjectId);
981
+
982
+ }
983
+ EStatusCode ShadingWriter::WriteRGBATiledPatternObject(
984
+ const SweepShading& inSweepShading,
985
+ const PDFRectangle& inBounds,
986
+ const PDFMatrix& inMatrix,
987
+ ObjectIDType inPatternObjectId) {
988
+ EStatusCode status = eSuccess;
989
+
990
+ do {
991
+ ObjectIDType alphaShadingPatternObjectId;
992
+ ObjectIDType rgbShadingPatternObjectId;
993
+
994
+ status = WriteSoftmaskPatternObjectForRGBAShades(inBounds, inMatrix, inPatternObjectId, alphaShadingPatternObjectId, rgbShadingPatternObjectId);
995
+ if(status != eSuccess) {
996
+ break;
997
+ }
998
+
999
+ // now, draw the alpha shading, which has the same pysical properties of the rgb one, but colors are all the alpha
1000
+ // component transitioning as a gradient
1001
+ SweepShading alphaSweepShading = inSweepShading;
1002
+ alphaSweepShading.colorLine = CreateAlphaShadingColorLine(inSweepShading.colorLine);
1003
+
1004
+ status = WriteRGBShadingPatternObject(alphaSweepShading, inBounds, inMatrix, alphaShadingPatternObjectId);
1005
+ if(status != eSuccess)
1006
+ break;
1007
+
1008
+ status = WriteRGBShadingPatternObject(inSweepShading, inBounds, inMatrix, rgbShadingPatternObjectId);
1009
+
1010
+ } while(false);
1011
+
1012
+
1013
+ return status;
1014
+
1015
+ }
1016
+
1017
+ EStatusCode ShadingWriter::WriteRGBShadingPatternObject(
1018
+ const SweepShading& inSweepShading,
1019
+ const PDFRectangle& inBounds,
1020
+ const PDFMatrix& inMatrix,
1021
+ ObjectIDType inPatternObjectId) {
1022
+ // for sweep there's no good native PDF parallel, so always use a custom function
1023
+
1024
+ return WriteShadingPatternObjectWithPDFCustomFunctions(
1025
+ inSweepShading,
1026
+ inBounds,
1027
+ inMatrix,
1028
+ inPatternObjectId
1029
+ );
1030
+ }
1031
+
1032
+ EStatusCode ShadingWriter::WriteShadingPatternObjectWithPDFCustomFunctions(
1033
+ const SweepShading& inSweepShading,
1034
+ const PDFRectangle& inBounds,
1035
+ const PDFMatrix& inMatrix,
1036
+ ObjectIDType inPatternObjectId) {
1037
+ EStatusCode status = eSuccess;
1038
+ PDFStream* pdfStream = NULL;
1039
+
1040
+ // apply transform matrix, to map pattern based on function range
1041
+ PDFMatrix patternProgramMatrix = PDFMatrix(1,0,0,1,inSweepShading.cX,inSweepShading.cY);
1042
+
1043
+ do {
1044
+ pdfStream = StartCustomFunctionShadingPatternStream(patternProgramMatrix, inBounds, inMatrix, inPatternObjectId);
1045
+ if(!pdfStream) {
1046
+ status = eFailure;
1047
+ break;
1048
+ }
1049
+
1050
+ IByteWriter* writeStream = pdfStream->GetWriteStream();
1051
+ PrimitiveObjectsWriter primitiveWriter(writeStream);
1052
+ WriteGradientCustomFunctionProgram(inSweepShading, writeStream, &primitiveWriter);
1053
+ mObjectsContext->EndPDFStream(pdfStream);
1054
+ } while(false);
1055
+
1056
+ delete pdfStream;
1057
+
1058
+ return status;
1059
+ }
1060
+
1061
+ void ShadingWriter::WriteGradientCustomFunctionProgram(
1062
+ const SweepShading& inSweepShading,
1063
+ IByteWriter* inWriter,
1064
+ PrimitiveObjectsWriter* inPrimitiveWriter) {
1065
+
1066
+ WriteStreamText(inWriter, "{exch atan 360 div\n");
1067
+
1068
+ // write the rest of the steps using shared code
1069
+ WriteColorLineStepsProgram(inWriter,inPrimitiveWriter,inSweepShading.gradientExtend, inSweepShading.colorLine);
1070
+
1071
+ // function end
1072
+ WriteStreamText(inWriter, "}");
1073
+
1074
+ }