% Copyright 2019 by Till Tantau % CMYK and grayscale shadings adaptation copyright 2019 by David Purton % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. % % See the file doc/generic/pgf/licenses/LICENSE for more details. \ProvidesFileRCS{pgfsys-common-postscript.def} % Driver commands for postscript \newif\ifpgf@fillcolor \newif\ifpgf@strokecolor \newif\ifpgfsys@@clipnext % Path construction: \def\pgfsys@lineto#1#2{\pgf@sys@bp{#1}\pgf@sys@bp{#2}\pgfsysprotocol@literal{lineto}} \def\pgfsys@moveto#1#2{\pgf@sys@bp{#1}\pgf@sys@bp{#2}\pgfsysprotocol@literal{moveto}} \def\pgfsys@curveto#1#2#3#4#5#6{% \pgf@sys@bp{#1}\pgf@sys@bp{#2}\pgf@sys@bp{#3}\pgf@sys@bp{#4}\pgf@sys@bp{#5}\pgf@sys@bp{#6}\pgfsysprotocol@literal{curveto}} \def\pgfsys@rect#1#2#3#4{\pgf@sys@bp{#4}\pgf@sys@bp{#3}\pgf@sys@bp{#1}\pgf@sys@bp{#2}\pgfsysprotocol@literal{pgfe}} \def\pgfsys@closepath{\pgfsysprotocol@literal{closepath}} % Path usage: \def\pgfsys@stroke{% \ifpgfsys@@clipnext% \ifpgfsys@eorule% \pgfsysprotocol@literal{gsave pgfsc pgfstr grestore eoclip newpath}% \else% \pgfsysprotocol@literal{gsave pgfsc pgfstr grestore clip newpath}% \fi% \pgfsys@@clipnextfalse% \else% \ifpgf@strokecolor% \pgfsysprotocol@literal{gsave pgfsc pgfstr grestore newpath}% \else% \pgfsysprotocol@literal{pgfstr}% \fi% \fi} \def\pgfsys@fill{% \ifpgfsys@@clipnext% \ifpgfsys@eorule% \pgfsysprotocol@literal{gsave pgffc pgfeofill grestore eoclip newpath}% \else% \pgfsysprotocol@literal{gsave pgffc pgffill grestore clip newpath}% \fi% \pgfsys@@clipnextfalse% \else% \ifpgf@fillcolor% \ifpgfsys@eorule% \pgfsysprotocol@literal{gsave pgffc pgfeofill grestore newpath}% \else% \pgfsysprotocol@literal{gsave pgffc pgffill grestore newpath}% \fi% \else% \ifpgfsys@eorule% \pgfsysprotocol@literal{pgfeofill}% \else% \pgfsysprotocol@literal{pgffill}% \fi% \fi% \fi} \def\pgfsys@fillstroke{% \ifpgfsys@eorule% \pgfsysprotocol@literal{gsave pgffc pgfeofill grestore gsave pgfsc pgfstr grestore}% \else% \pgfsysprotocol@literal{gsave pgffc pgffill grestore gsave pgfsc pgfstr grestore}% \fi% \ifpgfsys@@clipnext% \ifpgfsys@eorule% \pgfsysprotocol@literal{eoclip}% \else% \pgfsysprotocol@literal{clip}% \fi% \pgfsys@@clipnextfalse% \fi% \pgfsysprotocol@literal{newpath}} \def\pgfsys@clipnext{\pgfsys@@clipnexttrue} \def\pgfsys@discardpath{% \ifpgfsys@@clipnext% \ifpgfsys@eorule% \pgfsysprotocol@literal{eoclip}% \else% \pgfsysprotocol@literal{clip}% \fi% \pgfsys@@clipnextfalse% \fi% \pgfsysprotocol@literal{newpath}} % Transformation: \def\pgfsys@transformshift#1#2{\pgf@sys@bp{#1}\pgf@sys@bp{#2}\pgfsysprotocol@literal{translate}} \def\pgfsys@transformxyscale#1#2{\pgfsysprotocol@literal{#1 #2 scale}} \def\pgfsys@transformcm#1#2#3#4#5#6{% \pgfsysprotocol@literalbuffered{[#1 #2 #3 #4}\pgf@sys@bp{#5}\pgf@sys@bp{#6}\pgfsysprotocol@literal{] concat}} % Scopes \def\pgfsys@beginscope{\pgfsysprotocol@literal{save}} \def\pgfsys@endscope{\pgfsysprotocol@literal{restore}} \newif\ifpgfsys@ps@boxmode \def\pgfsys@begin@text{\pgfsys@ps@boxmodetrue} \def\pgfsys@end@text{} % Graphics state \def\pgfsys@setdash#1#2{% \pgfsysprotocol@literalbuffered{[}% \pgfutil@for\pgf@sys@temp:={#1}\do{\pgf@sys@bp{\pgf@sys@temp}}% \pgfsysprotocol@literalbuffered{]}% \pgf@sys@bp{#2}\pgfsysprotocol@literal{setdash}} \def\pgfsys@setlinewidth#1{\pgf@sys@bp{#1}\pgfsysprotocol@literal{pgfw}} \def\pgfsys@setmiterlimit#1{\pgfsysprotocol@literal{#1 setmiterlimit}} \def\pgfsys@buttcap{\pgfsysprotocol@literal{0 setlinecap}} \def\pgfsys@roundcap{\pgfsysprotocol@literal{1 setlinecap}} \def\pgfsys@rectcap{\pgfsysprotocol@literal{2 setlinecap}} \def\pgfsys@miterjoin{\pgfsysprotocol@literal{0 setlinejoin}} \def\pgfsys@roundjoin{\pgfsysprotocol@literal{1 setlinejoin}} \def\pgfsys@beveljoin{\pgfsysprotocol@literal{2 setlinejoin}} \def\pgfsys@color@rgb@stroke#1#2#3{\pgfsysprotocol@literal{/pgfsc{#1 #2 #3 setrgbcolor}def}\pgf@strokecolortrue} \def\pgfsys@color@rgb@fill#1#2#3{\pgfsysprotocol@literal{/pgffc{#1 #2 #3 setrgbcolor}def}\pgf@fillcolortrue} \def\pgfsys@color@rgb#1#2#3{\pgfsys@color@reset\pgfsysprotocol@literal{#1 #2 #3 setrgbcolor}} \def\pgfsys@color@cmyk@stroke#1#2#3#4{\pgfsysprotocol@literal{/pgfsc{#1 #2 #3 #4 setcmykcolor}def}\pgf@strokecolortrue} \def\pgfsys@color@cmyk@fill#1#2#3#4{\pgfsysprotocol@literal{/pgffc{#1 #2 #3 #4 setcmykcolor}def}\pgf@fillcolortrue} \def\pgfsys@color@cmyk#1#2#3#4{\pgfsys@color@reset\pgfsysprotocol@literal{#1 #2 #3 #4 setcmykcolor}} \def\pgfsys@color@cmy@stroke#1#2#3{\pgfsysprotocol@literal{/pgfsc{#1 #2 #3 0 setcmykcolor}def}\pgf@strokecolortrue} \def\pgfsys@color@cmy@fill#1#2#3{\pgfsysprotocol@literal{/pgffc{#1 #2 #3 0 setcmykcolor}def}\pgf@fillcolortrue} \def\pgfsys@color@cmy#1#2#3{\pgfsys@color@reset\pgfsysprotocol@literal{#1 #2 #3 0 setcmykcolor}} \def\pgfsys@color@gray@stroke#1{\pgfsysprotocol@literal{/pgfsc{#1 setgray}def}\pgf@strokecolortrue} \def\pgfsys@color@gray@fill#1{\pgfsysprotocol@literal{/pgffc{#1 setgray}def}\pgf@fillcolortrue} \def\pgfsys@color@gray#1{\pgfsys@color@reset\pgfsysprotocol@literal{#1 setgray}} \def\pgfsysps@color@resetnow{\pgfsysprotocol@literal{/pgfsc{}def/pgffc{}def}\pgf@strokecolorfalse\pgf@fillcolorfalse}% \def\pgfsys@color@reset{% \ifpgfsys@color@reset@inorder% \ifpgf@strokecolor% \pgfsysps@color@resetnow% \else% \ifpgf@fillcolor% \pgfsysps@color@resetnow% \fi% \fi% \else% \pgfsysps@color@resetnow% \fi} % Opacity \def\pgfsys@fill@opacity#1{% \pgfsysprotocol@literal{#1 .pgfsetfillopacityalpha}% } \def\pgfsys@stroke@opacity#1{% \pgfsysprotocol@literal{#1 .pgfsetstrokeopacityalpha}% } % Objects \newcount\pgf@objectcount \def\pgfsys@defobject#1#2#3#4{% \global\advance\pgf@objectcount by 1% \expandafter\xdef\csname#1\endcsname{\the\pgf@objectcount}% \pgfsysprotocol@getcurrentprotocol\pgfsys@temp% {% \pgfsysprotocol@setcurrentprotocol\pgfutil@empty% \pgfsysprotocol@bufferedtrue% #4% \pgfsysprotocol@getcurrentprotocol\pgfsys@@temp% \pgf@sys@postscript@object{/pgf\csname#1\endcsname{gsave exec \pgfsys@@temp\space grestore} bind def}% }% \pgfsysprotocol@setcurrentprotocol\pgfsys@temp% } \def\pgfsys@useobject#1#2{% \pgfsysprotocol@getcurrentprotocol\pgfsys@temp% {% \pgfsysprotocol@setcurrentprotocol\pgfutil@empty% \pgfsysprotocol@bufferedfalse% #2% \pgfsysprotocol@invokecurrentprotocol% \pgfsys@invoke{pgf\csname#1\endcsname}% }% \pgfsysprotocol@setcurrentprotocol\pgfsys@temp} % Shadings \def\pgfsys@horishading#1#2#3{% {% \pgf@parsefunc{#3}% \pgfmathsetlength\pgf@x{#2}% \pgf@xa=\pgf@x% \pgf@sys@bp@correct{\pgf@x}% \pgf@y=\pgf@max% \pgf@sys@bp@correct{\pgf@y}% \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@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{% {% \pgf@parsefunc{#3}% \pgfmathsetlength\pgf@x{#2}% \pgf@xa=\pgf@x% \pgf@sys@bp@correct{\pgf@x}% \pgf@y=\pgf@max% \pgf@sys@bp@correct{\pgf@y}% \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@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{% {% \pgf@parsefunc{#3}% \pgf@process{#2}% \pgf@sys@bp@correct{\pgf@x}% \pgf@sys@bp@correct{\pgf@y}% \pgf@xa=2\pgf@max% \pgf@sys@bp@correct{\pgf@max}% \advance\pgf@x by \pgf@max% \advance\pgf@y by \pgf@max% \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@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{% {% \pgf@process{#2}% \pgf@xa=\pgf@x% \pgf@ya=\pgf@y% \pgf@process{#3}% \pgf@xb=\pgf@x% \pgf@yb=\pgf@y% \advance\pgf@x by-\pgf@xa% \advance\pgf@y by-\pgf@ya% \pgf@sys@bp@correct{\pgf@xa}% \pgf@sys@bp@correct{\pgf@ya}% \pgf@sys@bp@correct{\pgf@xb}% \pgf@sys@bp@correct{\pgf@yb}% \pgf@xc=-\pgf@xa% \pgf@yc=-\pgf@ya% \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 \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 \pgf@shading@ps@device\space moveto 1.1 0 rlineto stroke } for pop } for }% \noexpand\pgfsys@endpurepicture }\hfil}% }% }% \global\expandafter\let\csname @pgfshading#1!\endcsname=\pgfutil@tempa } % % Patterns % \def\pgfsys@declarepattern#1#2#3#4#5#6#7{% % Start building the pattern dictionary: \pgf@xa=#2\relax% \pgf@ya=#3\relax% \pgf@xb=#4\relax% \pgf@yb=#5\relax% \pgf@xc=#6\relax% \pgf@yc=#7\relax% \pgf@sys@bp@correct\pgf@xa% \pgf@sys@bp@correct\pgf@ya% \pgf@sys@bp@correct\pgf@xb% \pgf@sys@bp@correct\pgf@yb% \pgf@sys@bp@correct\pgf@xc% \pgf@sys@bp@correct\pgf@yc% \pgfsys@@declarepattern{#1}% } \def\pgfsys@@declarepattern#1#2#3#4#5#6#7#8#9{% \pgfutil@tempdima=#6\relax% \pgfutil@tempdimb=#7\relax% \pgf@sys@bp@correct\pgfutil@tempdima% \pgf@sys@bp@correct\pgfutil@tempdimb% \edef\pgf@sys@marshal{% \noexpand\pgfutil@insertatbegincurrentpage{\noexpand\pgfsys@outerinvoke{ save true setglobal globaldict begin /pgfpat#1 { \ifnum#9=0 [/Pattern /DeviceRGB] \else /Pattern \fi\space setcolorspace gsave initgraphics << /Type /Pattern /PatternType 1 /PaintType \ifnum#9=0 2 \else 1 \fi /TilingType 1 /BBox [\pgf@sys@tonumber\pgf@xa\space\pgf@sys@tonumber\pgf@ya\space\pgf@sys@tonumber\pgf@xb\space\pgf@sys@tonumber\pgf@yb] /XStep \pgf@sys@tonumber\pgf@xc\space /YStep \pgf@sys@tonumber\pgf@yc\space /Matrix [#2\space#3\space#4\space#5\space\pgf@sys@tonumber\pgfutil@tempdima\space\pgf@sys@tonumber\pgfutil@tempdimb] /PaintProc { begin 2 dict begin #8\space end end } bind >> matrix makepattern %/pgfpat#1\space exch def grestore setcolor } bind def end restore }}% << }% \pgf@sys@marshal% } \def\pgfsys@setpatternuncolored#1#2#3#4{% \pgfsysprotocol@literal{/pgffc{#2 #3 #4 pgfpat#1}def}% % [/Pattern /DeviceRGB] setcolorspace % #2 #3 #4 pgfpat#1\space setcolor % }def}% \pgf@fillcolortrue% } \def\pgfsys@setpatterncolored#1{% \pgfsysprotocol@literal{/pgffc{pgfpat#1}def}%/Pattern setcolorspace % pgfpat#1\space setcolor}def}% \pgf@fillcolortrue% } \def\pgfsys@atbegindocument{% % Parameters to horizontal pre axishade: \pgf@domb x \pgf@sys@postscript@header{/pgfHrgb{% /pgfheight exch def 0.75 setlinewidth [] 0 setdash /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{/pgfVrgb{% /pgfheight exch def 0.75 setlinewidth [] 0 setdash /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{/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 2 index 6 index sub pgfdiff div % put blue-step on stack pgfheight 9 index 9 index 9 index 14 index pgfdiff { 3 index 3 index 3 index setrgbcolor % Set color pgfdir stroke 4 -1 roll 7 index add % red += incred 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 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{/pgfR1rgb{ newpath dup dup dup 0 360 arc clip newpath dup /pgfendx exch def /pgfendy exch def 0.875 setlinewidth [] 0 setdash /pgfshade {pgfRrgb} 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{/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{/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 /pgfcircxe pgfstartx 8 index pgfdiffx pgfdomb div mul add def /pgfcircye pgfstarty 8 index pgfdiffy pgfdomb div mul add def /pgfxstep pgfcircxe pgfcircx sub pgfdiff div def /pgfystep pgfcircye pgfcircy sub pgfdiff div 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 2 index 6 index sub pgfdiff div % put green-step on stack 8 index 8 index 8 index 13 index pgfdiff { 3 index 3 index 3 index setrgbcolor % Set color pgfcircx pgfcircy 2 index 0 360 arc closepath stroke 4 -1 roll 6 index add % red += incred 4 -1 roll 5 index add % green += incgreen 4 -1 roll 4 index add % blue += incblue 4 -1 roll .25 sub % x += 0.25 /pgfcircx pgfcircx pgfxstep add def /pgfcircy pgfcircy pgfystep add def } 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: %%% mode: latex %%% End: