% $Id: pstricks.sty 908 2024-06-28 19:39:00Z herbert $
%%
%% This is file `pstricks.sty'.
%%
%% IMPORTANT NOTICE:
%%
%% pstricks.sty Copyright (C) 1997 Timothy Van Zandt
%% pstcol.sty   Copyright (C) 1994-1996 1999 David Carlisle
%% pstricks.sty Copyright (C) 2004-2019 Rolf Niepraschk <Rolf.Niepraschk@gmx.de>
%%                                      Herbert Voss <hvoss@tug.org>
%%                            2019-     Herbert Voss <hvoss@tug.org>
%%
%% This package may be distributed under the terms of the LaTeX Project
%% Public License, as described in lppl.txt in the base LaTeX distribution.
%% Either version 1.0 or, at your option, any later version.
%%

\NeedsTeXFormat{LaTeX2e}

\ProvidesPackage{pstricks}[2024/02/02 v0.75 LaTeX wrapper for `PSTricks' (RN,HV)]
% 
\let\pst@documentclass=\documentclass
\def\documentclass{%
  \edef\@tempa{"\jobname.tex" }%
  \edef\@tempb{\@filef@und}%
  \@onelevel@sanitize\@tempa
  \@onelevel@sanitize\@tempb
  \ifx\@tempa\@tempb
    \@latex@error
      {`\jobname.tex' is a forbidden name for your document,\MessageBreak
      it is already a name of a package}%
      {Choose another name for your document}\@gobble
  \else
    \expandafter\pst@documentclass
  \fi
} 
\RequirePackage{iftex}
\def\pst@ColorPackage{xcolor}
\DeclareOption{noxcolor}{\def\pst@ColorPackage{color}}
%
\newif\ifpst@useCalc  \pst@useCalcfalse
\newif\ifpst@psfonts  \pst@psfontsfalse
\newif\ifpstGSfonts  \pstGSfontsfalse
\newif\if@check@engine  \@check@enginetrue 
\newif\ifpst@xetex  \pst@xetexfalse
\newif\ifpst@autopdf  \pst@autopdffalse

\DeclareOption{useCalc}{\pst@useCalctrue}
\DeclareOption{gsfonts}{\pstGSfontstrue}
\DeclareOption{psfonts}{\pst@psfontstrue}
\DeclareOption{noEngineCheck}{\@check@enginefalse}
\DeclareOption{pdf}{\global\pst@autopdftrue}
\DeclareOption{xetex}{\global\pst@xetextrue}
%
%---------------------------------DISTILLER --------------------------------
\newif\ifpst@distiller\pst@distillerfalse
\DeclareOption{distiller}{\pst@distillertrue\pst@psfontstrue}
%
%---------------------------------COLOR --------------------------------
\DeclareOption{monochrome}{%
  \AtBeginDocument{\special{ps:
   true setglobal globaldict begin
    /setrgbcolor { add add 0 gt {1}{0} 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 {1}{0} ifelse setgray } def 
   end false setglobal }}}

\DeclareOption{grayscale}{%
  \AtBeginDocument{\special{ps:
   true setglobal globaldict begin
    /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 
    end false setglobal }}}

\DeclareOption*{\PassOptionsToPackage\CurrentOption{\pst@ColorPackage}}
\ProcessOptions\relax

\let\pgfutil@protected\protected
\let\pgfutil@unexpanded\unexpanded

\ifpst@useCalc
  \RequirePackage{pst-calculate}
\fi
\RequirePackage{\pst@ColorPackage}
%
\@ifundefined{PSTricksLoaded}
{%
% 
  \let\saved@scalebox\scalebox
  \input{pst-xkey}%
  \input{pstricks}%
  \ProvidesFile{pstricks.tex}[\filedate\space v\fileversion\space `PSTricks' (tvz,hv)]
  \input{pst-fp.tex}%
  \ProvidesFile{pst-fp.tex}[\filedate\space v\fileversion\space `PST-fp' (hv)]
  \IfFileExists{pstricks.pro}{%
    \ProvidesFile{pstricks.pro}
      [2020/11/16 v. 1.41,  PostScript prologue file (hv)]
        \@addtofilelist{pstricks.pro}}{}%
  \IfFileExists{pst-algparser.pro}{%
    \ProvidesFile{pst-algparser.pro}[2011/10/31 v. 0.04,  PostScript prologue file (hv)]
        \@addtofilelist{pst-algparser.pro}}{}%
  \IfFileExists{pst-tools.pro}{%
    \ProvidesFile{pst-tools.pro}[2012/01/01 v. 0.02,  PostScript prologue file (hv)]
        \@addtofilelist{pst-tools.pro}}{}%
  \IfFileExists{pst-dots.pro}{%
    \ProvidesFile{pst-dots.pro}[2006/12/19 v. 2.00,  PostScript prologue file (hv)]
        \@addtofilelist{pst-dots.pro}}{}%
}{}
%
\ifpst@distiller
  \pst@def{setTransparency}<
    [ /ca \psk@opacityalpha 
      /CA \psk@opacityalpha /SetTransparency pdfmark >
  \pst@def{setStrokeTransparency}<
    [ /ca \psk@strokeopacityalpha 
      /CA \psk@strokeopacityalpha /SetTransparency pdfmark >
  \pst@def{setBlendmode}<
    [ /BM%
     \ifcase\psk@blendmode
      /Normal \or
      /Compatible \or
      /Screen \or
      /Multiply \or
      /HardLight \or
      /Darken \or
      /Lighten \or
      /Difference \or
      /ColorDodge \or
      /ColorBurn \or
      /SoftLight \or
      /Hue \or
      /Saturation \or
      /Luminosity \or
      /Overlay \or
      /Exclusion \or
      /Color
    \else 
      /Normal 
    \fi
    /ca \psk@shapealpha /CA \psk@opacityalpha /SetTransparency pdfmark >
\fi
%
\@ifpackageloaded{xcolor}{%
  \@ifpackagelater{xcolor}{2004/05/02}%
  {%
    \let\pst@getcolor\XC@getcolor
    \let\pst@usecolor\XC@usecolor
  }
  {%
    \PackageError{pstricks}{%
    *************************************************\MessageBreak
    * Your Version of `xcolor.sty' is too old!\MessageBreak
    * You need the version from 2004/05/02 or newer\MessageBreak
    * or use: \string\usepackage[noxcolor]{pstricks}\MessageBreak
    *************************************************}{}%
  }%
}{%
  \def\pst@getcolor#1#2{%
    \@ifundefined{\string\color@#1}%
    {\@pstrickserr{Color `#1' not defined}\@eha}%
    {\edef#2{#1}}}%
  \def\pst@usecolor#1{\expandafter\expandafter\expandafter\c@lor@to@ps%
    \csname\string\color@#1\endcsname\@@\space}%
  \definecolor{darkgray}{gray}{.25}
  \definecolor{gray}{gray}{.5}
  \definecolor{lightgray}{gray}{.75}
}%
%
\definecolor{gradbegin}{rgb}{0,1,1}
\definecolor{gradend}{rgb}{0,.1,.95}
%
\@ifundefined{xglobal}%
 {\def\xglobal#1#2#3#4% UK 2005-11-17
   {#1{#2}{#3}{#4}%
    \expandafter\global\expandafter\let\csname\string\color@#2%
    \expandafter\endcsname\csname\string\color@#2\endcsname}}{}%
%
\def\newgray#1{%
  \expandafter\gdef\csname #1\endcsname{\color{#1}}%  HV 2004-03-31
  \xglobal\definecolor{#1}{gray}}%
%
\def\newrgbcolor#1#2{%
  \expandafter\gdef\csname #1\endcsname{\color{#1}}%  HV 2004-03-31
  \edef\@tempa{\noexpand\newrgbcolorx{#1}#2\noexpand\@@}\@tempa}%
\def\newrgbcolorx#1#2 #3 #4\@@{%
  \xglobal\definecolor{#1}{rgb}{#2,#3,#4}}
%
\def\newcmykcolor#1#2{%
  \expandafter\gdef\csname #1\endcsname{\color{#1}}%  HV 2004-03-31
  \edef\@tempa{\noexpand\newcmykcolorx{#1}#2\noexpand\@@}\@tempa}
\def\newcmykcolorx#1#2 #3 #4 #5\@@{%
  \xglobal\definecolor{#1}{cmyk}{#2,#3,#4,#5}}
%
\def\newhsbcolor#1#2{%
  \expandafter\gdef\csname #1\endcsname{\color{#1}}%  HV 2004-03-31
  \edef\@tempa{\noexpand\newhsbcolorx{#1}#2\noexpand\@@}\@tempa}
\def\newhsbcolorx#1#2 #3 #4\@@{%
  \xglobal\definecolor{#1}{hsb}{#2,#3,#4}}
%
\definecolor{black}{gray}{0}
\definecolor{darkgray}{gray}{.25}
\definecolor{gray}{gray}{.5}
\definecolor{lightgray}{gray}{.75}
\definecolor{white}{gray}{1}
\definecolor{red}{rgb}{1,0,0}
\definecolor{green}{rgb}{0,1,0}
\definecolor{blue}{rgb}{0,0,1}
%\definecolor{yellow}{rgb}{1,1,0}
%\definecolor{cyan}{rgb}{0,1,1}
%\definecolor{magenta}{rgb}{1,0,1}
\definecolor{yellow}{cmyk}{0,0,1,0}
\definecolor{cyan}{cmyk}{1,0,0,0}
\definecolor{magenta}{cmyk}{0,1,0,0}
%
\renewcommand*\black{\color{black}}
\renewcommand*\darkgray{\color{darkgray}}
\renewcommand*\gray{\color{gray}}
\renewcommand*\lightgray{\color{lightgray}}
\renewcommand*\white{\color{white}}
\renewcommand*\blue{\color{blue}}
\renewcommand*\red{\color{red}}
\renewcommand*\green{\color{green}}
\renewcommand*\yellow{\color{yellow}}
\renewcommand*\magenta{\color{magenta}}
\renewcommand*\cyan{\color{cyan}}
%
\AtBeginDocument{%
%  \psset{fillcolor=white}%      hv 0.33
  \let\pst@endcolor=\relax%
%  \let\pst@color=\relax%
% LaTeX used `\color@endgroup' instead. RN 2004-05-06
}
\pst@cntm=0
\ifXeTeX\pst@cntm=1\else\ifpst@xetex\pst@cntm=1\fi\fi

\ifnum\pst@cntm>\z@
  \typeout{>>> Loading XeTeX special macros}%
  \input{pstricks-xetex.def}%
\fi
\endinput
%
%% End of file `pstricks.sty'.
