%%
%% This is file `pgfsys-cmykshadings-common-postscript.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% pgf-cmykshadings.dtx  (with options: `common-ps-driver')
%% 
%% This is a generated file.
%% 
%% Copyright (c) 2018-2019 David Purton <dcpurton@marshwiggle.net>
%% 
%% This work may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
%% or (at your option) any later version. The latest version of this
%% license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%% 
%% This work is "maintained" (as per the LPPL maintenance status)
%% by David Purton.
%% 
%% This work consists of the files pgf-cmykshadings.ins,
%% pgf-cmykshadings.dtx, README.md, and the derived files
%%   - pgf-cmykshadings.sty
%%   - pgfsys-cmykshadings-pdftex.def
%%   - pgfsys-cmykshadings-xetex.def
%%   - pgfsys-cmykshadings-luatex.def
%%   - pgfsys-cmykshadings-dvipdfmx.def
%%   - pgfsys-cmykshadings-dvipdfm.def
%%   - pgfsys-cmykshadings-dvips.def
%%   - pgfsys-cmykshadings-textures.def
%%   - pgfsys-cmykshadings-vtex.def
%%   - pgfsys-cmykshadings-common-postscript.def
%%   - pgf-cmykshadings.pdf
%% 
%% 
%% Substantial parts of the code for this package are taken from the pgf package
%% file pgfcoreshade.code.tex, along with the driver files pgfsys-*.def, copyright
%% (c) 2006 Till Tantau and then slightly modified to support CMYK and grayscale
%% shadings.
%% 
\ProvidesFile{pgfsys-cmykshadings-common-postscript.def}%
  [2018/10/24
   CMYK and grayscale shadings support for PGF PostScript driver (DCP)]
\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}%
    \expandafter\xdef\csname @pgfshading#1!\endcsname{\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}}%
    \expandafter\xdef\csname @pgfshading#1@model!\endcsname{%
      \pgf@shading@model}%
  }%
}
\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}%
    \expandafter\xdef\csname @pgfshading#1!\endcsname{\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}}%
    \expandafter\xdef\csname @pgfshading#1@model!\endcsname{%
      \pgf@shading@model}%
  }%
}
\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
    \expandafter\xdef\csname @pgfshading#1!\endcsname{\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}}%
    \expandafter\xdef\csname @pgfshading#1@model!\endcsname{%
      \pgf@shading@model}%
  }%
}
\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
    \expandafter\xdef\csname @pgfshading#1!\endcsname{%
      \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}%
    }%
    \expandafter\xdef\csname @pgfshading#1@model!\endcsname{%
      \pgf@shading@model}%
  }%
}
\g@addto@macro\pgfsys@atbegindocument{%
  \pgf@sys@postscript@header{/pgfHrgb { pgfH } bind def}%
  \pgf@sys@postscript@header{/pgfVrgb { pgfV } bind def}%
  \pgf@sys@postscript@header{/pgfR1rgb { pgfR1 } bind def}%
  \pgf@sys@postscript@header{/pgfR2rgb { pgfR2 } bind def}%
  \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}%
  \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}%
  \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 }%
  \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 }%
  \pgf@sys@postscript@header{/pgfR2cmyk{
      newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc
      setcmykcolor fill pop}bind def }%
  \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}%
  \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}%
  \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}%
  \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 }%
  \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 }%
  \pgf@sys@postscript@header{/pgfR2gray{
      newpath 0.5 add pgfcircx pgfcircy 3 2 roll 0 360 arc
      setgray fill pop}bind def }%
  \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}%
}
%% 
%%
%% End of file `pgfsys-cmykshadings-common-postscript.def'.
