You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
376 lines
12 KiB
376 lines
12 KiB
% Copyright 2006 by Till Tantau
|
|
%
|
|
% 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.
|
|
%
|
|
% Adapted for colors and pdf resources by Hans Hagen. There can be a few more
|
|
% optimizations but they are not critital.
|
|
|
|
\pgfutil@format@is@contexttrue
|
|
|
|
|
|
% The aux files, needed for reading back coordinates
|
|
\def\pgfutil@aux@read@hook{%
|
|
\pgfutil@IfFileExists{\jobname.pgf}{\input \jobname.pgf\relax}{}
|
|
\csname newwrite\endcsname\pgfutil@auxout
|
|
\immediate\csname openout\endcsname\pgfutil@auxout\jobname.pgf\relax
|
|
}
|
|
\def\pgfutil@writetoaux#1{\write\pgfutil@auxout{#1}}
|
|
|
|
% XColor-like support for ConTeXt
|
|
|
|
\def\pgfutil@definecolor#1#2#3{\csname pgfutil@emu@#2\endcsname{#1}#3\@nil}
|
|
|
|
\def\pgfutil@emu@rgb#1#2,#3,#4\@nil{\expandafter\def\csname\string\color@#1\endcsname{\xcolor@{}{}{rgb}{#2,#3,#4}}}
|
|
\def\pgfutil@emu@gray#1#2\@nil{\expandafter\def\csname\string\color@#1\endcsname{\xcolor@{}{}{rgb}{#2,#2,#2}}}
|
|
\def\pgfutil@emu@cmyk#1#2,#3,#4,#5\@nil{\expandafter\def\csname\string\color@#1\endcsname{\xcolor@{}{}{cmyk}{#2,#3,#4,#5}}}
|
|
|
|
|
|
% no need for x colors (users can load it if needed)
|
|
%\pgfutil@definecolor{white}{gray}{1}
|
|
%\pgfutil@definecolor{black}{gray}{0}
|
|
%\pgfutil@definecolor{gray}{gray}{0.5}
|
|
%\pgfutil@definecolor{red}{rgb}{1,0,0}
|
|
%\pgfutil@definecolor{green}{rgb}{0,1,0}
|
|
%\pgfutil@definecolor{blue}{rgb}{0,0,1}
|
|
%\pgfutil@definecolor{cyan}{rgb}{0,1,1}
|
|
%\pgfutil@definecolor{magenta}{rgb}{1,0,1}
|
|
%\pgfutil@definecolor{yellow}{rgb}{1,1,0}
|
|
%\pgfutil@definecolor{orange}{rgb}{1,0.5,0}
|
|
%\pgfutil@definecolor{violet}{rgb}{0.5,0,0.5}
|
|
%\pgfutil@definecolor{purple}{rgb}{0.75,0,0.25}
|
|
%\pgfutil@definecolor{brown}{rgb}{0.75,0.5,0.25}
|
|
|
|
\def\pgfutil@color#1{%
|
|
\pgfutil@colorlet{.}{#1}%
|
|
\pgfsysprotocol@getcurrentprotocol\pgfutil@emu@temp%
|
|
{%
|
|
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
|
|
\pgfsysprotocol@bufferedtrue%
|
|
\pgfsetcolor{.}%
|
|
\expandafter\pgfsys@outerinvoke\expandafter{\pgfsysprotocol@currentprotocol}%
|
|
}%
|
|
\pgfsysprotocol@setcurrentprotocol\pgfutil@emu@temp%
|
|
\aftergroup\pgfutil@reset@color%
|
|
}
|
|
|
|
\def\pgfutil@extractcolorspec#1#2{%
|
|
\def#2{{#1}}%
|
|
}
|
|
|
|
\def\pgfutil@convertcolorspec#1#2#3{%
|
|
\edef#3{\expandafter\expandafter\expandafter\pgfutil@emu@select\csname\string\color@#1\endcsname}%
|
|
}
|
|
|
|
\def\pgfutil@doifcolorelse#1#2#3{%
|
|
\expandafter\ifx\csname\string\color@#1\endcsname\relax%
|
|
\doifcolorelse{#1}{\let\pgf@next=\pgfutil@firstoftwo}{\let\pgf@next=\pgfutil@secondoftwo}%
|
|
\else
|
|
\let\pgf@next=\pgfutil@firstoftwo%
|
|
\fi%
|
|
\pgf@next{#2}{#3}%
|
|
}
|
|
|
|
\def\pgfutil@reset@color{%
|
|
\pgfsysprotocol@getcurrentprotocol\pgfutil@emu@temp%
|
|
{%
|
|
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
|
|
\pgfsysprotocol@bufferedtrue%
|
|
\pgfsetcolor{.}%
|
|
\expandafter\pgfsys@outerinvoke\expandafter{\pgfsysprotocol@currentprotocol}%
|
|
}%
|
|
\pgfsysprotocol@setcurrentprotocol\pgfutil@emu@temp%
|
|
}
|
|
|
|
\expandafter\def\csname\string\color@.\endcsname{\xcolor@{}{}{rgb}{0,0,0}}
|
|
|
|
\def\pgfutil@colorlet#1#2{%
|
|
\edef\pgf@marshal{#2}%
|
|
\expandafter\pgfutil@in@\expandafter!\expandafter{\pgf@marshal}%
|
|
\ifpgfutil@in@%
|
|
% compute mixture
|
|
{%
|
|
\expandafter\pgfutil@emu@mix\pgf@marshal!white!\@nil%
|
|
\xdef\pgf@marshal{\noexpand\def\expandafter\noexpand\csname\string\color@#1\endcsname{%
|
|
\noexpand\xcolor@{}{}{rgb}{\pgf@sys@tonumber\pgf@xa,\pgf@sys@tonumber\pgf@xb,\pgf@sys@tonumber\pgf@xc}}}%
|
|
}%
|
|
\pgf@marshal%
|
|
\else%
|
|
\expandafter\ifx\csname\string\color@#2\endcsname\relax%
|
|
\pgfutil@registercolor{#2}%
|
|
\fi%
|
|
\edef\pgf@marshal{\noexpand\let\expandafter\noexpand\csname\string\color@#1\endcsname=%
|
|
\expandafter\noexpand\csname\string\color@#2\endcsname}%
|
|
\pgf@marshal%
|
|
\fi%
|
|
}
|
|
|
|
\def\pgfutil@emu@mix#1!#2!#3!#4\@nil{%
|
|
\expandafter\ifx\csname\string\color@#1\endcsname\relax%
|
|
\pgfutil@registerrgb{#1}%
|
|
\fi%
|
|
\expandafter\ifx\csname\string\color@#3\endcsname\relax%
|
|
\pgfutil@registerrgb{#3}%
|
|
\fi%
|
|
\expandafter\expandafter\expandafter\pgfutil@emu@unpack\csname\string\color@#1\endcsname%
|
|
\pgf@ya=\pgf@xa%
|
|
\pgf@yb=\pgf@xb%
|
|
\pgf@yc=\pgf@xc%
|
|
\expandafter\expandafter\expandafter\pgfutil@emu@unpack\csname\string\color@#3\endcsname%
|
|
\c@pgf@counta=#2\relax%
|
|
\c@pgf@countb=100\relax%
|
|
\advance\c@pgf@countb by-\c@pgf@counta\relax%
|
|
\pgf@xa=\c@pgf@countb\pgf@xa%
|
|
\advance\pgf@xa by\c@pgf@counta\pgf@ya%
|
|
\divide\pgf@xa by 100\relax%
|
|
\pgf@xb=\c@pgf@countb\pgf@xb%
|
|
\advance\pgf@xb by\c@pgf@counta\pgf@yb%
|
|
\divide\pgf@xb by 100\relax%
|
|
\pgf@xc=\c@pgf@countb\pgf@xc%
|
|
\advance\pgf@xc by\c@pgf@counta\pgf@yc%
|
|
\divide\pgf@xc by 100\relax%
|
|
}
|
|
|
|
\def\pgfutil@emu@unpack#1#2#3#4#5{%
|
|
\pgfutil@emu@@unpack#5\@nil%
|
|
}
|
|
|
|
\def\pgfutil@emu@@unpack#1,#2,#3\@nil{%
|
|
\pgf@xa=#1pt%
|
|
\pgf@xb=#2pt%
|
|
\pgf@xc=#3pt%
|
|
}
|
|
|
|
\def\pgfutil@emu@select#1#2#3#4#5{#5}
|
|
|
|
\def\XC@tgt@mod#1{#1}
|
|
\def\XC@sdef#1#2{\edef#1{#2}}
|
|
\def\XC@mod@cmyk{cmyk}
|
|
\def\XC@mod@rgb{rgb}
|
|
|
|
% goody
|
|
|
|
\let\colorlet=\pgfutil@colorlet
|
|
|
|
% latex stuff
|
|
|
|
\newskip\pgfutil@flushglue
|
|
\pgfutil@flushglue=0pt plus 1fil
|
|
|
|
|
|
% pgfutil@minipage
|
|
|
|
\def\pgfutil@minipage[#1]#2{%
|
|
\hbox to#2\bgroup
|
|
\hsize=#2\relax
|
|
\vbox\bgroup
|
|
\noindentation
|
|
}
|
|
|
|
\def\pgfutil@endminipage{%
|
|
\egroup
|
|
\egroup
|
|
}
|
|
|
|
% global colors
|
|
|
|
\let\pgfutil@globalcolorsfalse\relax
|
|
\let\pgfutil@globalcolorstrue \relax
|
|
|
|
% font stuff
|
|
|
|
\def\pgfutil@font@tiny {\tfxx}
|
|
\def\pgfutil@font@scriptsize {\tfxx}
|
|
\def\pgfutil@font@footnotesize{\tfx}
|
|
\def\pgfutil@font@small {\tfx}
|
|
\def\pgfutil@font@normalsize {\tf}
|
|
\def\pgfutil@font@large {\tfa}
|
|
\def\pgfutil@font@Large {\tfb}
|
|
\def\pgfutil@font@huge {\tfc}
|
|
\def\pgfutil@font@Huge {\tfc}
|
|
\def\pgfutil@font@itshape {\it}
|
|
\def\pgfutil@font@bfseries {\bf}
|
|
\def\pgfutil@font@normalfont {\tf}
|
|
\def\pgfutil@selectfont {\tf}
|
|
|
|
% registers
|
|
|
|
\newcount\pgfutil@tempcnta
|
|
\newcount\pgfutil@tempcntb
|
|
|
|
\newbox \pgfutil@tempboxa
|
|
|
|
\newbox \pgfutil@voidb@x
|
|
\newtoks \pgfutil@toks@
|
|
|
|
\let\pgfmath@tempdima\pgfutil@tempdima
|
|
\let\pgfmath@tempdima\pgfutil@tempdima
|
|
\let\pgfmath@tempcnta\pgfutil@tempcnta
|
|
\let\pgfmath@tempcntb\pgfutil@tempcntb
|
|
|
|
% module stuff
|
|
|
|
\def\pgfutil@usemodule#1{\usemodule[#1]}
|
|
|
|
% more adaptions
|
|
|
|
\let\pgfutil@insertatbegincurrentpagefrombox\flushatshipout
|
|
\let\pgfutil@insertatbegincurrentpage \flushatshipout
|
|
\def\pgfutil@insertatbegineverypage #1{\appendtoks#1\to\everyshipout} % space removed after #1
|
|
|
|
\let\pgfutil@setuppdfresources \relax
|
|
|
|
\doifmodeelse {mkiv} {
|
|
|
|
\def\pgfutil@guessdriver{\def\pgfsysdriver{pgfsys-luatex.def}}
|
|
|
|
\def\pgfutil@driver@if@in#1#2{%
|
|
\edef\pgf@marshal{\noexpand\pgfutil@in@{#1}{\preloadedspecials}}%
|
|
\pgf@marshal
|
|
\ifpgfutil@in@
|
|
\def\pgfsysdriver{#2}%
|
|
\fi
|
|
}
|
|
|
|
\def\pgf@sys@pdf@pdfbackendset@one#1#2%
|
|
{\normalexpanded{\noexpand\pgf@sys@pdf@pdfbackendset@two\noexpand#1#2\relax}}
|
|
|
|
\def\pgf@sys@pdf@pdfbackendset@two#1/#2 #3\relax
|
|
{#1{#2}{#3}}
|
|
|
|
\def\pgf@sys@pdf@addtopageresource@pattern {\pgf@sys@pdf@pdfbackendset@one\pdfbackendsetpattern}
|
|
\def\pgf@sys@pdf@addtopageresource@colorspace{\pgf@sys@pdf@pdfbackendset@one\pdfbackendsetcolorspace}
|
|
\def\pgf@sys@pdf@addtopageresource@extgstate {\pgf@sys@pdf@pdfbackendset@one\pdfbackendsetextgstate}
|
|
\def\pgf@sys@pdf@possible@resources {\pdfbackendcurrentresources}
|
|
\def\pgf@sys@pdf@check@resources {}
|
|
|
|
\let\pgfutil@registercolor\pgf@context@registercolor
|
|
\let\pgfutil@registerrgb \pgf@context@registerrgb
|
|
\let\pgfutil@registercmyk \pgf@context@registercmyk
|
|
\let\pgfutil@registergray \pgf@context@registergray
|
|
|
|
} {
|
|
\def\pgf@sys@pdf@addtopageresource@extgstate {\appendtoPDFdocumentextgstates }
|
|
\def\pgf@sys@pdf@addtopageresource@colorspace {\appendtoPDFdocumentcolorspaces}
|
|
\def\pgf@sys@pdf@addtopageresource@pattern {\appendtoPDFdocumentpatterns }
|
|
\def\pgf@sys@pdf@possible@resources {\currentPDFresources}
|
|
\def\pgf@sys@pdf@check@resources {}
|
|
|
|
|
|
\ifx\pdfoutput\undefined\newcount\pdfoutput\fi
|
|
\ifx\pdfoutput\relax \newcount\pdfoutput\fi
|
|
|
|
\def\pgfutil@guessdriver{
|
|
\ifx\XeTeXversion\@undefined
|
|
\ifx\preloadedspecials\@undefined%
|
|
\ifcase\pdfoutput%
|
|
\def\pgfsysdriver{pgfsys-dvips.def}%
|
|
\else%
|
|
\def\pgfsysdriver{pgfsys-pdftex.def}% pdfTeX & LuaTeX
|
|
\fi%
|
|
\else%
|
|
\pgfutil@driver@if@in{postscript}{pgfsys-dvips.def}
|
|
\pgfutil@driver@if@in{tpd}{pgfsys-pdftex.def}
|
|
\pgfutil@driver@if@in{dpm}{pgfsys-dvipdfm.def}
|
|
\pgfutil@driver@if@in{dpx}{pgfsys-dvipdfmx.def}
|
|
\pgfutil@driver@if@in{xetex}{pgfsys-xetex.def}
|
|
\ifx\pgfsysdriver\relax%
|
|
\PackageWarning{pgf}{I was not able to discern the driver, the
|
|
preloaded specials were \preloadedspecials. I am going to use
|
|
pgfsys-dvips.def}%
|
|
\def\pgfsysdriver{pgfsys-dvips.def}
|
|
\fi%
|
|
\fi
|
|
\else
|
|
\def\pgfsysdriver{pgfsys-xetex.def}% should be right
|
|
\fi
|
|
}
|
|
|
|
\def\pgfutil@driver@if@in#1#2{%
|
|
\edef\pgf@marshal{\noexpand\pgfutil@in@{#1}{\preloadedspecials}}%
|
|
\pgf@marshal
|
|
\ifpgfutil@in@
|
|
\def\pgfsysdriver{#2}%
|
|
\fi
|
|
}
|
|
|
|
% The cmyk part is from Joseph Wright.
|
|
% See tex.stackexchange.com/questions/27952/cmyk-context-colors-in-tikz
|
|
\def\pgfutil@registercolor#1{%
|
|
\edef\pgf@temp{\PDFcolor{#1}}%
|
|
\edef\pgf@marshal{\noexpand\pgfutil@in@{rg}{\pgf@temp}}%
|
|
\pgf@marshal
|
|
\ifpgfutil@in@
|
|
\expandafter\pgfutil@context@parse@rgb\pgf@temp\pgf@stop{#1}%
|
|
\else
|
|
\edef\pgf@marshal{\noexpand\pgfutil@in@{g}{\pgf@temp}}%
|
|
\pgf@marshal
|
|
\ifpgfutil@in@
|
|
\expandafter\pgfutil@context@parse@gray\pgf@temp\pgf@stop{#1}%
|
|
\else
|
|
\edef\pgf@marshal{\noexpand\pgfutil@in@{k}{\pgf@temp}}%
|
|
\pgf@marshal
|
|
\ifpgfutil@in@
|
|
\expandafter\pgfutil@context@parse@cmyk\pgf@temp\pgf@stop{#1}%
|
|
\else
|
|
\pgferror{Color #1 has an unsupported color model.}%
|
|
\pgfutil@definecolor{#1}{gray}{0}%
|
|
\fi
|
|
\fi
|
|
\fi
|
|
}
|
|
|
|
\def\pgfutil@context@parse@gray#1 g#2\pgf@stop#3{%
|
|
\pgfutil@definecolor{#3}{gray}{#1}
|
|
}
|
|
|
|
\def\pgfutil@context@parse@rgb#1 #2 #3 rg#4\pgf@stop#5{%
|
|
\pgfutil@definecolor{#5}{rgb}{#1,#2,#3}
|
|
}
|
|
|
|
\def\pgfutil@context@parse@cmyk#1 #2 #3 #4k#5\pgf@stop #6{%
|
|
\pgfutil@definecolor{#6}{cmyk}{#1,#2,#3,#4}%
|
|
}
|
|
|
|
\def\pgfutil@emu@cmyk#1#2,#3,#4,#5\@nil{%
|
|
\expandafter\def\csname\string\color@#1\endcsname
|
|
{\xcolor@{}{}{cmyk}{#2,#3,#4,#5}}%
|
|
}
|
|
|
|
\let\pgfutil@registerrgb \pgfutil@registercolor
|
|
\let\pgfutil@registercmyk \pgfutil@registercolor
|
|
\let\pgfutil@registergray \pgfutil@registercolor
|
|
|
|
|
|
}
|
|
|
|
\let\pgf@sys@addpdfresource@extgs@plain \pgf@sys@pdf@addtopageresource@extgstate
|
|
\let\pgf@sys@addpdfresource@patterns@plain \pgf@sys@pdf@addtopageresource@pattern
|
|
\let\pgf@sys@addpdfresource@colorspaces@plain\pgf@sys@pdf@addtopageresource@colorspace
|
|
\let\pgf@sys@pdf@check@resources@plain \pgf@sys@pdf@check@resources
|
|
|
|
\pgf@sys@addpdfresource@colorspaces@plain{/pgfprgb [/Pattern /DeviceRGB]}
|
|
|
|
% do something at the end of a job
|
|
|
|
\appendtoks \the\pgfutil@everybye \to \everybye
|
|
|
|
\long\def\AtBeginDocument#1{\appendtoks#1\to\everystarttext}%
|
|
|
|
% pgfcalendar uses translations
|
|
|
|
\def\pgfutil@translate#1{#1} % \translate works very different in ConTeXt
|
|
|
|
% e-TeX primitives
|
|
|
|
\pgfutil@IfUndefined{normalprotected}{%
|
|
\def\pgfutil@protected{}%
|
|
}{%
|
|
\let\pgfutil@protected\normalprotected
|
|
}
|
|
|
|
\endinput
|
|
|