%% $Id: pstricks-color.tex 455 2022-03-01 10:42:02Z herbert $
%%
%% This is file `pstricks-color.tex',
%%
%% IMPORTANT NOTICE:
%%
%% Herbert Voss <[email protected]>
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
%% DESCRIPTION:
%%   `pstricks-color' base code for color settings
%%
%% fileversion and filedate see main file pstricks.tex
%%
\pstVerb{
 /pssetRGBcolor  /setrgbcolor  load def
 /pssetCMYKcolor /setcmykcolor load def
 /pssetGraycolor /setgray      load def
}
\def\@newcolor#1#2{%
 \expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}%
 %\expandafter\edef\csname color@#1\endcsname{#2}%
 \expandafter\edef\csname\string\color@#1\endcsname{#2}%    hv 1.14 2005-12-17
 \ignorespaces}
%
\def\pst@color#1{\def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor}%
\def\pst@endcolor{\pstVerb{\pst@currentcolor}}
\def\pst@currentcolor{0 setgray}
\def\altcolormode{%
\def\pst@color##1{%
 \pstVerb{gsave ##1}\aftergroup\pst@endcolor}%
\def\pst@endcolor{\pstVerb{\pst@grestore}}}

\def\psgetRGBColorValues#1{\expandafter\psgetRGBColorvalues@i#1;}
\def\psgetRGBColorvalues@i#1#2#3#4#5;{\expandafter\psgetRGBColorvalues@ii#5,,,;}
\def\psgetRGBColorvalues@ii#1,#2,#3,#4;{%
 \ifx\relax#2\relax
   #1  % gray color model
 \else
   #1 #2 #3
 \fi}

\def\psgetCMYKColorValues#1{\expandafter\psgetCMYKColorvalues@i#1;}
\def\psgetCMYKColorvalues@i#1#2#3#4#5;{\expandafter\psgetCMYKColorvalues@ii#5,,,,;}
\def\psgetCMYKColorvalues@ii#1,#2,#3,#4,#5;{%
 \ifx\relax#2\relax
   #1  % gray color model
 \else
   #1 #2 #3 #4
 \fi}

\iffalse
\def\ps@RGB@model{rgb}
\def\psgetColorValues#1{\makeatletter\expandafter\psgetColorvalues@i#1;\makeatother}
\gdef\psgetColorvalues@i#1#2#3#4#5;{%
 \scantokens{\def\pst@tempA{#4}}
 \if\pst@tempA\ps@RGB@model
   \expandafter\psgetRGBColorvalues@ii#5;
 \else
   \expandafter\psgetCMYKColorvalues@ii#5;
 \fi
}
\fi

\def\pssetMonochrome{%
 \pstVerb{
   /setrgbcolor { add add 0 gt {0}{1} ifelse setgray } def
   /setcmykcolor{ 4 dict begin
     /k ED /y ED /m ED /c ED
     1 1 k sub c mul k add sub 0.29 mul
     1 1 k sub m mul k add sub 0.587 mul add
     1 1 k sub y mul k add sub 0.114 mul add
     end 0 gt {0}{1} ifelse setgray } def }}
\def\pssetGrayscale{%
 \pstVerb{
   /setrgbcolor { 0.07 mul exch 0.71 mul add exch 0.21 mul add setgray } def
   /setcmykcolor{ 4 dict begin
     /k ED /y ED /m ED /c ED
     1 1 k sub c mul k add sub 0.29 mul
     1 1 k sub m mul k add sub 0.587 mul add
     1 1 k sub y mul k add sub 0.114 mul add
     end setgray } def }}
\def\psresetColor{\pstVerb{
   /setrgbcolor  tx@Dict begin /pssetRGBcolor  load end def
   /setcmykcolor tx@Dict begin /pssetCMYKcolor load end def }}

%\def\pst@usecolor#1{\csname color@#1\endcsname\space}%    hv 1.14  2005--12-17
\def\pst@usecolor#1{\csname\string\color@#1\endcsname\space}
%
\def\newgray#1#2{%
   \pst@checknum{#2}\pst@tempg
   \@newcolor{#1}{\pst@tempg setgray}}%
\def\newrgbcolor#1#2{%
 \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
 \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}}
\def\newhsbcolor#1#2{%
 \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
 \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}}
\def\newcmykcolor#1#2{%
 \pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil
 \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}}
\newgray{black}{0}
\newgray{darkgray}{.25}
\newgray{gray}{.5}
\newgray{lightgray}{.75}
\newgray{white}{1}
\newrgbcolor{red}{1 0 0}
\newrgbcolor{green}{0 1 0}
\newrgbcolor{blue}{0 0 1}
\newrgbcolor{yellow}{1 1 0}
\newrgbcolor{cyan}{0 1 1}
\newrgbcolor{magenta}{1 0 1}

\@ifundefined{xglobal}%  do we have xcolor loaded?
{\@newcolor{randomgray}{tx@Dict begin Rand setgray end}%
 \@newcolor{randomrgb}{tx@Dict begin Rand Rand Rand setrgbcolor end}%
 \@newcolor{randomcmyk}{tx@Dict begin Rand Rand Rand Rand setcmykcolor end}%
 \@newcolor{randomhsb}{tx@Dict begin Rand Rand Rand sethsbcolor end}%
}{%
 \definecolor[ps]{randomgray}{gray}{tx@Dict begin Rand end}%
 \definecolor[ps]{randomrgb}{rgb}{tx@Dict begin Rand Rand Rand end}%
 \definecolor[ps]{randomcmyk}{cmyk}{tx@Dict begin Rand Rand Rand Rand end}%
 \definecolor[ps]{randomhsb}{hsb}{tx@Dict begin Rand Rand Rand end}%
}
%
\def\pst@getcolor#1#2{%
%  \@ifundefined{color@#1}%     hv 1.14  2005-12-17
 \@ifundefined{\string\color@#1}%
   {\@pstrickserr{Color `#1' not defined}\@eha}%
   {\edef#2{#1}}%
}
%
%% END: pstricks-color.tex
\endinput