diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex | 95 |
1 files changed, 61 insertions, 34 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex b/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex index 707c1708789..2eebc7d6035 100644 --- a/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex @@ -1,10 +1,13 @@ -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfcoreshade.code.tex,v 1.3 2005/07/17 22:34:19 tantau Exp $ - -% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>. +% Copyright 2006 by Till Tantau +% +% This file may be distributed and/or modified % -% This program can be redistributed and/or modified under the terms -% of the GNU Public License, version 2. +% 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 $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfcoreshade.code.tex,v 1.6 2006/10/11 15:22:25 tantau Exp $ % % Parsing functions @@ -17,16 +20,16 @@ \edef\temp{{\pgf@rgbconv}}% \expandafter\pgf@@parsefunc\temp} \def\pgf@@parsefunc#1{% - \let\pgf@bounds=\@empty% - \let\pgf@funcs=\@empty% - \let\pgf@psfuncs=\@empty% - \let\pgf@encode=\@empty% - \let\pgf@sys@shading@ranges=\@empty% + \let\pgf@bounds=\pgf@empty% + \let\pgf@funcs=\pgf@empty% + \let\pgf@psfuncs=\pgf@empty% + \let\pgf@encode=\pgf@empty% + \let\pgf@sys@shading@ranges=\pgf@empty% \pgf@sys@shading@range@num=0\relax% \pgf@parsefirst[#1; ]% \pgf@parselastdom[#1; ]% \pgf@parsemid[#1; ]% - \ifx\pgf@bounds\@empty% + \ifx\pgf@bounds\pgf@empty% \edef\pgf@pdfparseddomain{0 1}% \edef\pgf@pdfparsedfunction{\pgf@singlefunc\space}% \else% @@ -51,7 +54,7 @@ \edef\pgf@prevcolor{\pgf@rgb}% \edef\pgf@firstcolor{\pgf@rgb}} \def\pgf@parselastdom[rgb(#1)=(#2,#3,#4); {% - \@ifnextchar]{% + \pgf@ifnextchar]{% \setlength\pgf@x{#1}% \edef\pgf@sys@shading@end@pos{\the\pgf@x}% \pgf@max=\pgf@x\relax% @@ -59,11 +62,11 @@ \edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}% \pgf@getrgbtuplewithmixin{#2}{#3}{#4}% \edef\pgf@sys@shading@end@rgb{\pgf@sys@rgb}% - \@gobble}{\pgf@parselastdom[}} + \pgf@gobble}{\pgf@parselastdom[}} \def\pgf@parsemid[rgb(#1)=(#2,#3,#4); {\pgf@parserest[} \def\pgf@parserest[rgb(#1)=(#2,#3,#4); {% \advance\pgf@sys@shading@range@num by1\relax% - \@ifnextchar]{% + \pgf@ifnextchar]{% \pgf@getrgbtuplewithmixin{#2}{#3}{#4}% \edef\pgf@singlefunc{\space% << /FunctionType 2 /Domain [0 1] /C0 @@ -76,7 +79,7 @@ \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@rgb}}}% \edef\pgf@sys@prevpos{\the\pgf@x}% \let\pgf@sys@prevcolor=\pgf@sys@rgb% - \@gobble}{% + \pgf@gobble}{% \setlength\pgf@x{#1}% \pgf@getrgbtuplewithmixin{#2}{#3}{#4}% \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@rgb}}}% @@ -98,7 +101,7 @@ \def\pgf@getrgbtuplewithmixin#1#2#3{% \definecolor{pgfshadetemp}{rgb}{#1,#2,#3}% - \@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}% + \pgf@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}% \extractcolorspec{pgfshadetemp}{\pgf@tempcolor}% \expandafter\convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}% \expandafter\pgf@getrgb@@\pgf@rgbcolor!} @@ -113,15 +116,15 @@ \pgf@converttorgb#1]% } \def\pgf@converttorgb{% - \@ifnextchar]{\@gobble}%done! + \pgf@ifnextchar]{\pgf@gobble}%done! {% - \@ifnextchar;{\pgf@grabsemicolor}% + \pgf@ifnextchar;{\pgf@grabsemicolor}% {% - \@ifnextchar r{\pgf@grabrgb}% + \pgf@ifnextchar r{\pgf@grabrgb}% {% - \@ifnextchar g{\pgf@grabgray}% + \pgf@ifnextchar g{\pgf@grabgray}% {% - \@ifnextchar c{\pgf@grabcolor}% + \pgf@ifnextchar c{\pgf@grabcolor}% {\PackageError{pgfshade}{Illformed shading specification}{}\pgf@converttorgb}% }% @@ -171,15 +174,15 @@ % The following bar is 2cm long: \pgfuseshading{redtogreentoblue}. % \end{document} -\def\pgfdeclarehorizontalshading{\@ifnextchar[\pgf@declarehorizontalshading{\pgf@declarehorizontalshading[]}}% +\def\pgfdeclarehorizontalshading{\pgf@ifnextchar[\pgf@declarehorizontalshading{\pgf@declarehorizontalshading[]}}% \def\pgf@declarehorizontalshading[#1]#2#3#4{% \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}% - \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\@empty% + \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgf@empty% \pgfsys@horishading{#2}{#3}{#4}% \else% \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@horishading}% \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}% - \expandafter\let\csname @pgfshading#2!\endcsname=\@empty% + \expandafter\let\csname @pgfshading#2!\endcsname=\pgf@empty% \fi} @@ -200,15 +203,15 @@ % The following bar is 2cm high: \pgfuseshading{redtogreentoblue}. % \end{document} -\def\pgfdeclareverticalshading{\@ifnextchar[\pgf@declareverticalshading{\pgf@declareverticalshading[]}}% +\def\pgfdeclareverticalshading{\pgf@ifnextchar[\pgf@declareverticalshading{\pgf@declareverticalshading[]}}% \def\pgf@declareverticalshading[#1]#2#3#4{% \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}% - \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\@empty% + \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgf@empty% \pgfsys@vertshading{#2}{#3}{#4}% \else% \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@vertshading}% \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}% - \expandafter\let\csname @pgfshading#2!\endcsname=\@empty% + \expandafter\let\csname @pgfshading#2!\endcsname=\pgf@empty% \fi} @@ -242,15 +245,15 @@ % The following ball has diameter 3cm: \pgfuseshading{redtogreentoblue}. % \end{document} -\def\pgfdeclareradialshading{\@ifnextchar[\pgf@declareradialshading{\pgf@declareradialshading[]}}% +\def\pgfdeclareradialshading{\pgf@ifnextchar[\pgf@declareradialshading{\pgf@declareradialshading[]}}% \def\pgf@declareradialshading[#1]#2#3#4{% \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}% - \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\@empty% + \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgf@empty% \pgfsys@radialshading{#2}{#3}{#4}% \else% \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@radialshading}% \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}% - \expandafter\let\csname @pgfshading#2!\endcsname=\@empty% + \expandafter\let\csname @pgfshading#2!\endcsname=\pgf@empty% \fi} @@ -266,19 +269,19 @@ \def\pgfuseshading#1{% \edef\pgf@shadingname{@pgfshading#1}% \pgf@tryextensions{\pgf@shadingname}{\pgfalternateextension}% - \expandafter\@ifundefined\expandafter{\pgf@shadingname}% + \expandafter\pgf@ifundefined\expandafter{\pgf@shadingname}% {\PackageError{pgfshade}{Undefined shading "#1"}{}}% {% {% \globalcolorsfalse% \def\pgf@shade@adds{}% - \@ifundefined{pgf@deps\pgf@shadingname}% + \pgf@ifundefined{pgf@deps\pgf@shadingname}% {}% {% \edef\@list{\csname pgf@deps\pgf@shadingname\endcsname}% \@for\@temp:=\@list\do{% {% - \@ifundefined{applycolormixins}{}{\applycolormixins{\@temp}}% + \pgf@ifundefined{applycolormixins}{}{\applycolormixins{\@temp}}% \extractcolorspec{\@temp}{\pgf@tempcolor}% \expandafter\convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}% \xdef\pgf@shade@adds{\pgf@shade@adds,\pgf@rgbcolor}% @@ -286,7 +289,7 @@ }% }% \expandafter\pgf@strip@shadename\pgf@shadingname!!% - \@ifundefined{@pgfshading\pgf@basename\pgf@shade@adds!}% + \pgf@ifundefined{@pgfshading\pgf@basename\pgf@shade@adds!}% {% {% \expandafter\def\expandafter\@temp\expandafter{\csname pgf@func\pgf@shadingname\endcsname}% @@ -352,6 +355,9 @@ % completely covers the path. Then the path will be used (locally) for % clipping and the shading is drawn. % +% In addition to the rotation, any transformation set by the +%\pgfsetadditionalshadetransform will also be applied. +% % After all this, the path can still be used for the normal % stroking/clipping operations. % @@ -400,10 +406,31 @@ \pgfsys@transformcm% {\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@x}}% {\pgf@sys@tonumber{\pgf@xa}}{\pgf@sys@tonumber{\pgf@y}}{0pt}{0pt}% + \ifx\pgf@shade@extra@transform\pgf@empty% + \else% + \pgflowlevel{\pgf@shade@extra@transform}% + \fi% \pgfuseshading{#1}% \pgfsys@endscope% \endgroup% \fi% } + +% Additionally transform shade paths +% +% #1 = Transformation code that is used in addition to the normal +% shading transformation. +% +% Example: +% +% \pgfsetadditionalshadetransform{\pgftransformrotate{30}} + +\def\pgfsetadditionalshadetransform#1{\def\pgf@shade@extra@transform{#1}} +\let\pgf@shade@extra@transform=\pgf@empty + + + + + \endinput |