diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-postscript.def')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-postscript.def | 211 |
1 files changed, 184 insertions, 27 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-postscript.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-postscript.def index 0f8ce5d0157..775878dddaf 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-postscript.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-postscript.def @@ -1,4 +1,5 @@ % Copyright 2006 by Till Tantau +% CMYK and grayscale shadings adaptation copyright 2019 by David Purton % % This file may be distributed and/or modified % @@ -191,16 +192,17 @@ \pgf@sys@bp@correct{\pgf@x}% \pgf@y=\pgf@max% \pgf@sys@bp@correct{\pgf@y}% - \expandafter\xdef\csname @pgfshading#1!\endcsname{\hbox to \the\pgf@max{% + \xdef\pgfutil@tempa{\hbox to \the\pgf@max{% \noexpand\vrule width0pt height\the\pgf@xa% \noexpand\pgfsys@beginpurepicture% \noexpand\pgfsys@rect{0pt}{0pt}{\the\pgf@max}{\the\pgf@xa}% \noexpand\pgfsys@clipnext% \noexpand\pgfsys@discardpath% - \noexpand\pgfsys@invoke{\pgf@domb\space \pgf@sys@tonumber{\pgf@x} pgfH \pgf@psfuncs\space pop}% + \noexpand\pgfsys@invoke{\pgf@domb\space \pgf@sys@tonumber{\pgf@x} pgfH\pgf@shading@model\space \pgf@psfuncs\space pop}% \hss% \noexpand\pgfsys@endpurepicture}}% }% + \global\expandafter\let\csname @pgfshading#1!\endcsname=\pgfutil@tempa } \def\pgfsys@vertshading#1#2#3{% {% @@ -210,16 +212,17 @@ \pgf@sys@bp@correct{\pgf@x}% \pgf@y=\pgf@max% \pgf@sys@bp@correct{\pgf@y}% - \expandafter\xdef\csname @pgfshading#1!\endcsname{\hbox to\the\pgf@xa{% + \xdef\pgfutil@tempa{\hbox to \the\pgf@xa{% \noexpand\vrule width0pt height\the\pgf@max% \noexpand\pgfsys@beginpurepicture% \noexpand\pgfsys@rect{0pt}{0pt}{\the\pgf@xa}{\the\pgf@max}% \noexpand\pgfsys@clipnext% \noexpand\pgfsys@discardpath% - \noexpand\pgfsys@invoke{\pgf@domb\space \pgf@sys@tonumber{\pgf@x} pgfV \pgf@psfuncs\space pop}% + \noexpand\pgfsys@invoke{\pgf@domb\space \pgf@sys@tonumber{\pgf@x} pgfV\pgf@shading@model\space \pgf@psfuncs\space pop}% \hss% \noexpand\pgfsys@endpurepicture}}% }% + \global\expandafter\let\csname @pgfshading#1!\endcsname=\pgfutil@tempa } \def\pgfsys@radialshading#1#2#3{% {% @@ -231,15 +234,16 @@ \pgf@sys@bp@correct{\pgf@max}% \advance\pgf@x by \pgf@max% \advance\pgf@y by \pgf@max% - \expandafter\xdef\csname @pgfshading#1!\endcsname{\hbox to \the\pgf@xa{% + \xdef\pgfutil@tempa{\hbox to \the\pgf@xa{% \noexpand\vrule width0pt height\the\pgf@xa% \noexpand\pgfsys@beginpurepicture% \noexpand\pgfsys@invoke{% - \pgf@domb\space \pgf@sys@tonumber{\pgf@y} \pgf@sys@tonumber{\pgf@x} \pgf@sys@tonumber{\pgf@max} pgfR1 - \pgf@psfuncs\space \pgf@firstcolor\space \pgf@doma\space pgfR2}% + \pgf@domb\space \pgf@sys@tonumber{\pgf@y} \pgf@sys@tonumber{\pgf@x} \pgf@sys@tonumber{\pgf@max} pgfR1\pgf@shading@model\space + \pgf@psfuncs\space \pgf@firstcolor\space \pgf@doma\space pgfR2\pgf@shading@model}% \hss% \noexpand\pgfsys@endpurepicture}}% }% + \global\expandafter\let\csname @pgfshading#1!\endcsname=\pgfutil@tempa } \def\pgfsys@functionalshading#1#2#3#4{% {% @@ -257,26 +261,27 @@ \pgf@sys@bp@correct{\pgf@yb}% \pgf@xc=-\pgf@xa% \pgf@yc=-\pgf@ya% - \expandafter\xdef\csname @pgfshading#1!\endcsname{% + \xdef\pgfutil@tempa{% \hbox to\the\pgf@x{\vbox to\the\pgf@y{\vfil \noexpand\pgfsys@beginpurepicture% \noexpand\pgfsys@invoke{% \pgf@sys@tonumber{\pgf@xc} \pgf@sys@tonumber{\pgf@yc} translate 1.1 setlinewidth [] 0 setdash 0 setlinecap - /pgfproc {#4} bind def + /pgfproc {#4} bind def \pgf@sys@tonumber{\pgf@ya} 1 \pgf@sys@tonumber{\pgf@yb} { \pgf@sys@tonumber{\pgf@xa} 1 \pgf@sys@tonumber{\pgf@xb} - { 1 index 2 copy pgfproc setrgbcolor moveto 1.1 0 rlineto stroke } + { 1 index 2 copy pgfproc \pgf@shading@ps@device\space moveto 1.1 0 rlineto stroke } for pop } - for + for }% \noexpand\pgfsys@endpurepicture }\hfil}% }% }% + \global\expandafter\let\csname @pgfshading#1!\endcsname=\pgfutil@tempa } % @@ -287,7 +292,7 @@ \def\pgfsys@declarepattern#1#2#3#4#5#6#7#8#9{% % Start building the pattern dictionary: \pgf@xa=#2\relax% - \pgf@ya=#3\relax% + \pgf@ya=#3\relax% \pgf@xb=#4\relax% \pgf@yb=#5\relax% \pgf@xc=#6\relax% @@ -346,20 +351,20 @@ \def\pgfsys@atbegindocument{% % Parameters to horizontal pre axishade: \pgf@domb x - \pgf@sys@postscript@header{/pgfH{% + \pgf@sys@postscript@header{/pgfHrgb{% /pgfheight exch def 0.75 setlinewidth [] 0 setdash - /pgfshade {pgfA} def /pgfdir { dup 0 moveto + /pgfshade {pgfArgb} def /pgfdir { dup 0 moveto dup 5 index lineto } bind def} bind def}% - + % Parameters to vertical pre axishade: \pgf@domb x - \pgf@sys@postscript@header{/pgfV{% + \pgf@sys@postscript@header{/pgfVrgb{% /pgfheight exch def 0.75 setlinewidth [] 0 setdash - /pgfshade {pgfA} def /pgfdir { dup 0 exch moveto dup 5 index + /pgfshade {pgfArgb} def /pgfdir { dup 0 exch moveto dup 5 index exch lineto } bind def} bind def}% - + % Parameters to axishade: end x, start x, r-, g-, b- of first color, r-, g-, b- of second color % Stack afterwards: end x - \pgf@sys@postscript@header{/pgfA{ + \pgf@sys@postscript@header{/pgfArgb{ /pgfdiff 8 index round cvi 8 index round cvi sub 2 mul 1 add def 2 index 6 index sub pgfdiff div % put red-step on stack 2 index 6 index sub pgfdiff div % put green-step on stack @@ -373,18 +378,18 @@ 4 -1 roll 6 index add % green += incgreen 4 -1 roll 5 index add % blue += incblue 4 -1 roll .5 sub % x += 0.5 - } repeat + } repeat mark 15 1 roll cleartomark exch pop % leave only start x on stack }bind def } % Parameters to radialshade pre: \pgf@domb y x max - \pgf@sys@postscript@header{/pgfR1{ + \pgf@sys@postscript@header{/pgfR1rgb{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx exch def /pgfendy exch def 0.875 setlinewidth [] 0 setdash - /pgfshade {pgfR} def + /pgfshade {pgfRrgb} def /pgfstartx exch def /pgfstarty exch def /pgfdiffx pgfendx pgfstartx sub def @@ -393,13 +398,13 @@ }bind def } % Parameters to radialshade post: \pgf@firstcolor \pgf@doma - \pgf@sys@postscript@header{/pgfR2{ + \pgf@sys@postscript@header{/pgfR2rgb{ newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc setrgbcolor fill pop}bind def }% % Parameters to radialshade: end x, start x, r-, g-, b- of first color, r-, g-, b- of second color % Stack afterwards: end x - \pgf@sys@postscript@header{/pgfR{ + \pgf@sys@postscript@header{/pgfRrgb{ /pgfdiff 8 index round cvi 8 index round cvi sub 4 mul 1 add def /pgfcircx pgfstartx 9 index pgfdiffx pgfdomb div mul add def /pgfcircy pgfstarty 9 index pgfdiffy pgfdomb div mul add def @@ -421,14 +426,166 @@ 4 -1 roll .25 sub % x += 0.25 /pgfcircx pgfcircx pgfxstep add def /pgfcircy pgfcircy pgfystep add def - } repeat + } repeat mark 14 1 roll cleartomark exch pop % leave only start x on stack }bind def} + + % Parameters to horizontal pre axishade: \pgf@domb x + \pgf@sys@postscript@header{/pgfHcmyk{ + /pgfheight exch def 0.75 setlinewidth [] 0 setdash + /pgfshade {pgfAcmyk} def /pgfdir { dup 0 moveto + dup 6 index lineto } bind def} bind def}% + + % Parameters to vertical pre axishade: \pgf@domb x + \pgf@sys@postscript@header{/pgfVcmyk{ + /pgfheight exch def 0.75 setlinewidth [] 0 setdash + /pgfshade {pgfAcmyk} def /pgfdir { dup 0 exch moveto dup 6 index + exch lineto } bind def} bind def}% + + % Parameters to axishade: end x, start x, c-, m-, y-, k- of first color, c-, m-, y-, k- of second color + \pgf@sys@postscript@header{/pgfAcmyk{ + /pgfdiff 10 index round cvi 10 index round cvi sub 2 mul 1 add def + 3 index 8 index sub pgfdiff div % put cyan-step on stack + 3 index 8 index sub pgfdiff div % put magenta-step on stack + 3 index 8 index sub pgfdiff div % put yellow-step on stack + 3 index 8 index sub pgfdiff div % put black-step on stack + pgfheight 12 index 12 index 12 index 12 index 18 index + pgfdiff { + 4 index 4 index 4 index 4 index setcmykcolor % Set color + pgfdir + stroke + 5 -1 roll 9 index add % cyan += inccyan + 5 -1 roll 8 index add % magenta += incmagenta + 5 -1 roll 7 index add % yellow += incyellow + 5 -1 roll 6 index add % black += incblack + 5 -1 roll .5 sub % x += 0.5 + } repeat + mark 19 1 roll cleartomark exch pop % leave only start x on stack + }bind def }% + + % Parameters to radialshade pre: \pgf@domb y x max + \pgf@sys@postscript@header{/pgfR1cmyk{ + newpath dup dup dup 0 360 arc clip newpath + dup /pgfendx exch def + /pgfendy exch def + 0.875 setlinewidth + [] 0 setdash + /pgfshade {pgfRcmyk} def + /pgfstartx exch def + /pgfstarty exch def + /pgfdiffx pgfendx pgfstartx sub def + /pgfdiffy pgfendy pgfstarty sub def + dup /pgfdomb exch def + }bind def }% + + % Parameters to radialshade post: \pgf@firstcolor \pgf@doma + \pgf@sys@postscript@header{/pgfR2cmyk{ + newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc + setcmykcolor fill pop}bind def }% + + % Parameters to radialshade: end x, start x, c-, m-, y-, k- of first color, c-, m-, y-, k- of second color + \pgf@sys@postscript@header{/pgfRcmyk{ + /pgfdiff 10 index round cvi 10 index round cvi sub 4 mul 1 add def + /pgfcircx pgfstartx 11 index pgfdiffx pgfdomb div mul add def + /pgfcircy pgfstarty 11 index pgfdiffy pgfdomb div mul add def + /pgfcircxe pgfstartx 10 index pgfdiffx pgfdomb div mul add def + /pgfcircye pgfstarty 10 index pgfdiffy pgfdomb div mul add def + /pgfxstep pgfcircxe pgfcircx sub pgfdiff div def + /pgfystep pgfcircye pgfcircy sub pgfdiff div def + 3 index 8 index sub pgfdiff div % put cyan-step on stack + 3 index 8 index sub pgfdiff div % put magenta-step on stack + 3 index 8 index sub pgfdiff div % put yellow-step on stack + 3 index 8 index sub pgfdiff div % put black-step on stack + 11 index 11 index 11 index 11 index 17 index + pgfdiff { + 4 index 4 index 4 index 4 index setcmykcolor % Set color + pgfcircx pgfcircy 2 index 0 360 arc closepath + stroke + 5 -1 roll 8 index add % cyan += inccyan + 5 -1 roll 7 index add % magenta += incmagenta + 5 -1 roll 6 index add % yellow += incyellow + 5 -1 roll 5 index add % black += incblack + 5 -1 roll .25 sub % x += 0.25 + /pgfcircx pgfcircx pgfxstep add def + /pgfcircy pgfcircy pgfystep add def + } repeat + mark 18 1 roll cleartomark exch pop % leave only start x on stack + }bind def}% + + % Parameters to horizontal pre axishade: \pgf@domb x + \pgf@sys@postscript@header{/pgfHgray{ + /pgfheight exch def 0.75 setlinewidth [] 0 setdash + /pgfshade {pgfAgray} def /pgfdir { dup 0 moveto + dup 3 index lineto } bind def} bind def}% + + % Parameters to vertical pre axishade: \pgf@domb x + \pgf@sys@postscript@header{/pgfVgray{ + /pgfheight exch def 0.75 setlinewidth [] 0 setdash + /pgfshade {pgfAgray} def /pgfdir { dup 0 exch moveto dup 3 index + exch lineto } bind def} bind def}% + + % Parameters to axishade: end x, start x, g of first color, g of second color + \pgf@sys@postscript@header{/pgfAgray{ + /pgfdiff 4 index round cvi 4 index round cvi sub 2 mul 1 add def + dup 2 index sub pgfdiff div % put gray-step on stack + pgfheight 3 index 6 index + pgfdiff { + 1 index setgray % Set color + pgfdir + stroke + exch 3 index add % gray += incgray + exch .5 sub % x += 0.5 + } repeat + mark 7 1 roll cleartomark exch pop % leave only start x on stack + }bind def }% + + % Parameters to radialshade pre: \pgf@domb y x max + \pgf@sys@postscript@header{/pgfR1gray{ + newpath dup dup dup 0 360 arc clip newpath + dup /pgfendx exch def + /pgfendy exch def + 0.875 setlinewidth + [] 0 setdash + /pgfshade {pgfRgray} def + /pgfstartx exch def + /pgfstarty exch def + /pgfdiffx pgfendx pgfstartx sub def + /pgfdiffy pgfendy pgfstarty sub def + dup /pgfdomb exch def + }bind def }% + + % Parameters to radialshade post: \pgf@firstcolor \pgf@doma + \pgf@sys@postscript@header{/pgfR2gray{ + newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc + setgray fill pop}bind def }% + + % Parameters to radialshade: end x, start x, g of first color, g of second color + \pgf@sys@postscript@header{/pgfRgray{ + /pgfdiff 4 index round cvi 4 index round cvi sub 4 mul 1 add def + /pgfcircx pgfstartx 5 index pgfdiffx pgfdomb div mul add def + /pgfcircy pgfstarty 5 index pgfdiffy pgfdomb div mul add def + /pgfcircxe pgfstartx 4 index pgfdiffx pgfdomb div mul add def + /pgfcircye pgfstarty 4 index pgfdiffy pgfdomb div mul add def + /pgfxstep pgfcircxe pgfcircx sub pgfdiff div def + /pgfystep pgfcircye pgfcircy sub pgfdiff div def + dup 2 index sub pgfdiff div % put gray-step on stack + 2 index 5 index + pgfdiff { + 1 index setgray % Set color + pgfcircx pgfcircy 2 index 0 360 arc closepath + stroke + exch 2 index add % gray += incgray + exch .25 sub % x += 0.25 + /pgfcircx pgfcircx pgfxstep add def + /pgfcircy pgfcircy pgfystep add def + } repeat + mark 6 1 roll cleartomark exch pop % leave only start x on stack + }bind def}% } \endinput -%%% Local Variables: +%%% Local Variables: %%% mode: latex -%%% End: +%%% End: |