summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex186
1 files changed, 186 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex b/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex
new file mode 100644
index 00000000000..62d1cbda803
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex
@@ -0,0 +1,186 @@
+% Copyright 2008 by Mark Wibrow
+%
+% 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.
+
+\usepgfmodule{decorations}
+
+% Define the basic decoration stuff for tikz. Load more libraries to
+% "actually use" decorations
+
+\tikzset{decorate/.is if=tikz@decoratepath,
+ /pgf/decoration/name/.store in=\tikz@decoration@name,
+ /pgf/decoration/.unknown/.code=%
+ \pgfifdecoration{\pgfkeyscurrentname}{\edef\tikz@decoration@name{\pgfkeyscurrentname}}
+ {\pgfifmetadecoration{\pgfkeyscurrentname}{\edef\tikz@decoration@name{\pgfkeyscurrentname}}
+ {\pgfkeys{/errors/unknown
+ key={/pgf/decoration/\pgfkeyscurrentname}{#1}}}},%
+ /pgf/decoration/raise/.code={\def\tikz@dec@shift{\pgftransformyshift{#1}}\tikz@dec@trans},
+ /pgf/decoration/mirror/.code={%
+ \csname if#1\endcsname
+ \def\tikz@dec@mirror{\pgftransformyscale{-1}}%
+ \else%
+ \let\tikz@dec@mirror=\relax%
+ \fi%
+ \tikz@dec@trans%
+ },
+ /pgf/decoration/mirror/.default=true,
+ /pgf/decoration/transform/.code={%
+ {%
+ \pgftransformreset%
+ \def\tikz@transform{}%
+ \pgfkeysalso{/tikz/.cd, #1}%
+ \expandafter\gdef\expandafter\tikz@g@temptransform\expandafter{\tikz@transform}%
+ }%
+ \let\tikz@dec@user@transform=\tikz@g@temptransform%
+ \tikz@dec@trans%
+ },%
+ /pgf/decoration/pre/.initial=lineto,
+ /pgf/decoration/post/.initial=lineto,
+ /pgf/decoration/pre length/.initial=0pt,
+ /pgf/decoration/post length/.initial=0pt,
+}
+
+\let\tikz@decoration@name=\tikz@nonetext
+
+\def\tikz@dec@trans{\pgfsetdecorationsegmenttransformation{\tikz@dec@user@transform\tikz@dec@mirror\tikz@dec@shift}}
+\let\tikz@dec@user@transform=\relax
+\let\tikz@dec@shift=\relax
+\let\tikz@dec@mirror=\relax
+
+\pgfdeclaremetadecoration{tikz@internal}{pre}{
+ \state{pre}[width=\pgfkeysvalueof{/pgf/decoration/pre length}, next state=main]
+ {
+ \decoration{\pgfkeysvalueof{/pgf/decoration/pre}}
+ }
+ \state{main}[width=\pgfmetadecoratedremainingdistance-\pgfkeysvalueof{/pgf/decoration/post length}, next state=final]
+ {
+ \decoration{\tikz@decoration@name}
+ }
+ \state{final}
+ {
+ \decoration{\pgfkeysvalueof{/pgf/decoration/post}}
+ }
+}
+
+
+\newif\iftikz@metadecoration
+
+\def\tikz@lib@dec@addtomacro#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
+
+\def\tikz@lib@decoration[#1]{%
+ \begingroup%
+ % Just to be on the save side...
+ %
+ % Now, let's parse the options:
+ \tikzset{#1}%
+ %
+ \ifx\tikz@decoration@name\tikz@nonetext%
+ % Ok, let's forget about this decoration stuff...
+ \else
+ \expandafter\tikz@lib@do@dec%
+ \fi%
+ % Now, we expect a brace.
+ \pgfutil@ifnextchar\bgroup{%
+ \begingroup%
+ \aftergroup\tikz@enddecoration%
+ \afterassignment\tikz@scan@next@command%
+ \let\tikz@lib@next% gobble \bgroup%
+ }%
+ {%
+ \PackageError{tikz}{A decoration must begin with a brace}{}%
+ \tikz@enddecoration%
+ }%
+}
+\def\tikz@lib@do@dec{%
+ % Ok, now what?
+ \pgfifmetadecoration{\tikz@decoration@name}%
+ {\expandafter\pgfmetadecoration\expandafter{\tikz@decoration@name}}%
+ {%
+ \pgfifdecoration{\tikz@decoration@name}%
+ {\tikz@lib@dec@startdecoration}%
+ {\PackageError{tikz}{Unknown (meta-)decoration '\tikz@decoration@name'. Perhaps you
+ misspelled it?}{}}%
+ }%
+ \ifx\pgfdecorateexistingpath\pgfutil@empty%
+ \pgfpathmoveto{\pgfqpoint{\the\tikz@lastxsaved}{\the\tikz@lastysaved}}%
+ \fi%
+}
+
+\def\tikz@enddecoration{%
+ \ifx\tikz@decoration@name\tikz@nonetext%
+ % ignore this.
+ \else
+ % Ok, now what?
+ \iftikz@metadecoration%
+ \endpgfmetadecoration%
+ \else%
+ \tikz@lib@dec@stopdecoration%
+ \fi%
+ \fi
+ \endgroup%
+}
+
+
+\def\tikz@lib@dec@decorate@path{%
+ \ifx\tikz@decoration@name\tikz@nonetext%
+ \else%
+ \pgfgetpath\tikz@lib@dec@currentpath%
+ \pgfsetpath\pgfutil@empty%
+ \pgfifmetadecoration{\tikz@decoration@name}
+ {
+ \expandafter\pgfmetadecoration\expandafter{\tikz@decoration@name}%
+ \pgfsetpath\tikz@lib@dec@currentpath%
+ \endpgfmetadecoration%
+ }
+ {
+ \pgfifdecoration{\tikz@decoration@name}
+ {
+ \tikz@lib@dec@startdecoration%
+ \pgfsetpath\tikz@lib@dec@currentpath%
+ \tikz@lib@dec@stopdecoration%
+ }
+ {
+ \PackageError{tikz}{Unknown (meta-)decoration '\tikz@decoration@name'. Perhaps
+ you misspelled it?}{}
+ }
+ }
+ \fi%
+}
+
+\def\tikz@lib@dec@zpttext{0pt}
+
+\newif\iftikz@lib@dec@temp
+\def\tikz@lib@dec@startdecoration{%
+ \pgfkeysgetvalue{/pgf/decoration/pre length}{\tikz@lib@pre}%
+ \pgfkeysgetvalue{/pgf/decoration/post length}{\tikz@lib@post}%
+ \tikz@lib@dec@tempfalse%
+ \ifx\tikz@lib@pre\tikz@lib@dec@zpttext%
+ \ifx\tikz@lib@post\tikz@lib@dec@zpttext%
+ \else%
+ \tikz@lib@dec@temptrue%
+ \fi%
+ \else%
+ \tikz@lib@dec@temptrue%
+ \fi%
+ \iftikz@lib@dec@temp%
+ \pgfmetadecoration{tikz@internal}%
+ \else%
+ \expandafter\pgfdecoration\expandafter{\expandafter{\tikz@decoration@name}{\pgfdecoratedpathlength}{}{}}%
+ \fi%
+}
+
+\def\tikz@lib@dec@stopdecoration{%
+ \iftikz@lib@dec@temp%
+ \endpgfmetadecoration%
+ \else%
+ \endpgfdecoration%
+ \fi%
+}
+
+
+\endinput