summaryrefslogtreecommitdiff
path: root/dviware/dvisvgm/src/psdefs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dviware/dvisvgm/src/psdefs.cpp')
-rw-r--r--dviware/dvisvgm/src/psdefs.cpp92
1 files changed, 48 insertions, 44 deletions
diff --git a/dviware/dvisvgm/src/psdefs.cpp b/dviware/dvisvgm/src/psdefs.cpp
index 8cc5a10cb9..baa8b09a6c 100644
--- a/dviware/dvisvgm/src/psdefs.cpp
+++ b/dviware/dvisvgm/src/psdefs.cpp
@@ -2,7 +2,7 @@
** psdefs.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2020 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -115,47 +115,51 @@ const char *PSInterpreter::PSDEFS =
"rgbcolor 3(setrgbcolor)prcmd}def/printgstate{@dodraw @GD/@nulldev get not and{"
"matrix currentmatrix aload pop 6(setmatrix)prcmd applyscalevals currentlinewid"
"th 1(setlinewidth)prcmd currentlinecap 1(setlinecap)prcmd currentlinejoin 1(se"
-"tlinejoin)prcmd currentmiterlimit 1(setmiterlimit)prcmd prcolor currentdash ma"
-"rk 3 1 roll exch aload length 1 add -1 roll counttomark(setdash)prcmd pop}if}d"
-"ef/strconcat{exch dup length 2 index length add string dup dup 4 2 roll copy l"
-"ength 4 -1 roll putinterval}def/setgstate{/setgstate sysexec printgstate}def/s"
-"ave{@UD begin/@saveID vmstatus pop pop def end :save @saveID 1(save)prcmd}def/"
-"restore{:restore @checknulldev printgstate @UD/@saveID known{@UD begin @saveID"
-" end}{0}ifelse 1(restore)prcmd}def/gsave 0 defpr/grestore{:grestore @checknull"
-"dev printgstate 0(grestore)prcmd}def/grestoreall{:grestoreall @checknulldev se"
-"tstate 0(grestoreall)prcmd}def/rotate{dup type/arraytype ne @dodraw and{dup 1("
-"rotate)prcmd}if/rotate sysexec applyscalevals}def/scale{dup type/arraytype ne "
-"@dodraw and{2 copy 2(scale)prcmd}if/scale sysexec applyscalevals}def/translate"
-"{dup type/arraytype ne @dodraw and{2 copy 2(translate)prcmd}if/translate sysex"
-"ec}def/setmatrix{dup/setmatrix sysexec @dodraw{aload pop 6(setmatrix)prcmd app"
-"lyscalevals}{pop}ifelse}def/initmatrix{matrix setmatrix}def/concat{matrix curr"
-"entmatrix matrix concatmatrix setmatrix}def/makepattern{gsave<</mx 3 -1 roll>>"
-"begin<</XUID[1000000 @patcnt]>>copy mx/makepattern sysexec dup begin PatternTy"
-"pe 2 lt{PatternType @patcnt BBox aload pop XStep YStep PaintType mx aload pop "
-"15(makepattern)prcmd :newpath matrix setmatrix dup PaintProc 0 1(makepattern)p"
-"rcmd @GD/@patcnt @patcnt 1 add put}if end end grestore}def/setpattern{begin Pa"
-"tternType 1 eq{PaintType 1 eq{XUID aload pop exch pop 1}{:gsave[currentcolorsp"
-"ace aload length -1 roll pop]/setcolorspace sysexec/setcolor sysexec XUID aloa"
-"d pop exch pop currentrgbcolor :grestore 4}ifelse(setpattern)prcmd currentcolo"
-"rspace 0 get/Pattern ne{[/Pattern currentcolorspace]/setcolorspace sysexec}if "
-"currentcolorspace @setcolorspace}{/setpattern sysexec}ifelse end}def/setcolor{"
-"dup type/dicttype eq{setpattern}{/setcolor sysexec/currentrgbcolor sysexec set"
-"rgbcolor}ifelse}def/setcolorspace{dup/setcolorspace sysexec @setcolorspace}def"
-"/@setcolorspace{dup type/arraytype eq{0 get}if/Pattern eq{1}{0}ifelse 1(setcol"
-"orspace)prcmd}def/setgray 1 defpr/setcmykcolor 4 defpr/sethsbcolor 3 defpr/set"
-"rgbcolor 3 defpr/.setalphaisshape{@SD/.setalphaisshape known{dup/.setalphaissh"
-"ape sysexec}if{1}{0}ifelse 1(setisshapealpha)prcmd}bind def/.setfillconstantal"
-"pha{@SD/.setfillconstantalpha known{dup/.setfillconstantalpha sysexec}if 1(set"
-"fillconstantalpha)prcmd}bind def/.setstrokeconstantalpha{@SD/.setstrokeconstan"
-"talpha known{dup/.setstrokeconstantalpha sysexec}if 1(setstrokeconstantalpha)p"
-"rcmd}bind def/.setopacityalpha{false .setalphaisshape dup .setfillconstantalph"
-"a .setstrokeconstantalpha}bind def/.setshapealpha{true .setalphaisshape dup .s"
-"etfillconstantalpha .setstrokeconstantalpha}bind def/.setblendmode{dup/.setble"
-"ndmode sysexec<</Normal 0/Compatible 0/Multiply 1/Screen 2/Overlay 3/SoftLight"
-" 4/HardLight 5/ColorDodge 6/ColorBurn 7/Darken 8/Lighten 9/Difference 10/Exclu"
-"sion 11/Hue 12/Saturation 13/Color 14/Luminosity 15/CompatibleOverprint 16>>ex"
-"ch get 1(setblendmode)prcmd}def/@pdfpagecount{(r)file runpdfbegin pdfpagecount"
-" runpdfend}def/@pdfpagebox{(r)file runpdfbegin dup dup 1 lt exch pdfpagecount "
-"gt or{pop}{pdfgetpage/MediaBox pget pop aload pop}ifelse runpdfend}def DELAYBI"
-"ND{.bindnow}if ";
+"tlinejoin)prcmd currentmiterlimit 1(setmiterlimit)prcmd revision dup 952 lt{po"
+"p}{.currentblendmode .setblendmode 952 eq{.currentopacityalpha .setopacityalph"
+"a .currentshapealpha .setshapealpha}{.currentalphaisshape{1}{0}ifelse 1(setalp"
+"haisshape)prcmd .currentstrokeconstantalpha 1(setstrokeconstantalpha)prcmd .cu"
+"rrentfillconstantalpha 1(setfillconstantalpha)prcmd}ifelse}ifelse prcolor curr"
+"entdash mark 3 1 roll exch aload length 1 add -1 roll counttomark(setdash)prcm"
+"d pop}if}def/strconcat{exch dup length 2 index length add string dup dup 4 2 r"
+"oll copy length 4 -1 roll putinterval}def/setgstate{/setgstate sysexec printgs"
+"tate}def/save{@UD begin/@saveID vmstatus pop pop def end :save @saveID 1(save)"
+"prcmd}def/restore{:restore @checknulldev printgstate @UD/@saveID known{@UD beg"
+"in @saveID end}{0}ifelse 1(restore)prcmd}def/gsave 0 defpr/grestore{:grestore "
+"@checknulldev printgstate 0(grestore)prcmd}def/grestoreall{:grestoreall @check"
+"nulldev setstate 0(grestoreall)prcmd}def/rotate{dup type/arraytype ne @dodraw "
+"and{dup 1(rotate)prcmd}if/rotate sysexec applyscalevals}def/scale{dup type/arr"
+"aytype ne @dodraw and{2 copy 2(scale)prcmd}if/scale sysexec applyscalevals}def"
+"/translate{dup type/arraytype ne @dodraw and{2 copy 2(translate)prcmd}if/trans"
+"late sysexec}def/setmatrix{dup/setmatrix sysexec @dodraw{aload pop 6(setmatrix"
+")prcmd applyscalevals}{pop}ifelse}def/initmatrix{matrix setmatrix}def/concat{m"
+"atrix currentmatrix matrix concatmatrix setmatrix}def/makepattern{gsave<</mx 3"
+" -1 roll>>begin<</XUID[1000000 @patcnt]>>copy mx/makepattern sysexec dup begin"
+" PatternType 2 lt{PatternType @patcnt BBox aload pop XStep YStep PaintType mx "
+"aload pop 15(makepattern)prcmd :newpath matrix setmatrix dup PaintProc 0 1(mak"
+"epattern)prcmd @GD/@patcnt @patcnt 1 add put}if end end grestore}def/setpatter"
+"n{dup begin PatternType end 1 eq{begin PaintType 1 eq{XUID aload pop exch pop "
+"1}{:gsave[currentcolorspace aload length -1 roll pop]/setcolorspace sysexec/se"
+"tcolor sysexec XUID aload pop exch pop currentrgbcolor :grestore 4}ifelse(setp"
+"attern)prcmd currentcolorspace 0 get/Pattern ne{[/Pattern currentcolorspace]/s"
+"etcolorspace sysexec}if currentcolorspace @setcolorspace end}{/setpattern syse"
+"xec}ifelse}def/setcolor{dup type/dicttype eq{setpattern}{/setcolor sysexec/cur"
+"rentrgbcolor sysexec setrgbcolor}ifelse}def/setcolorspace{dup/setcolorspace sy"
+"sexec @setcolorspace}def/@setcolorspace{dup type/arraytype eq{0 get}if/Pattern"
+" eq{1}{0}ifelse 1(setcolorspace)prcmd}def/setgray 1 defpr/setcmykcolor 4 defpr"
+"/sethsbcolor 3 defpr/setrgbcolor 3 defpr/.setalphaisshape{@SD/.setalphaisshape"
+" known{dup/.setalphaisshape sysexec}if{1}{0}ifelse 1(setalphaisshape)prcmd}bin"
+"d def/.setfillconstantalpha{@SD/.setfillconstantalpha known{dup/.setfillconsta"
+"ntalpha sysexec}if 1(setfillconstantalpha)prcmd}bind def/.setstrokeconstantalp"
+"ha{@SD/.setstrokeconstantalpha known{dup/.setstrokeconstantalpha sysexec}if 1("
+"setstrokeconstantalpha)prcmd}bind def/.setopacityalpha{false .setalphaisshape "
+"dup .setfillconstantalpha .setstrokeconstantalpha}bind def/.setshapealpha{true"
+" .setalphaisshape dup .setfillconstantalpha .setstrokeconstantalpha}bind def/."
+"setblendmode{dup/.setblendmode sysexec<</Normal 0/Compatible 0/Multiply 1/Scre"
+"en 2/Overlay 3/SoftLight 4/HardLight 5/ColorDodge 6/ColorBurn 7/Darken 8/Light"
+"en 9/Difference 10/Exclusion 11/Hue 12/Saturation 13/Color 14/Luminosity 15/Co"
+"mpatibleOverprint 16>>exch get 1(setblendmode)prcmd}def/@pdfpagecount{(r)file "
+"runpdfbegin pdfpagecount runpdfend}def/@pdfpagebox{(r)file runpdfbegin dup dup"
+" 1 lt exch pdfpagecount gt or{pop}{pdfgetpage/MediaBox pget pop aload pop}ifel"
+"se runpdfend}def DELAYBIND{.bindnow}if ";