diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex b/Master/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex new file mode 100644 index 00000000000..e618ac996cf --- /dev/null +++ b/Master/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex @@ -0,0 +1,227 @@ +% Copyright 2008 by Mark Wibrow and 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. + +\usepgfmodule{decorations} + + +% +% Path replacing decorations +% +% These decorations change the path by replacing it by another path. +% For instance, a line in the path might be replaced by small +% ticks or unconnected curves or crosses. Applying a chopping +% decoration to a path means that the path can no longer be used for +% filling in the original manner. +% + + + +% +% +% Kind 1: Path chopping with open subpaths +% +% + + +% ticks decoration +% +% Parameters: \pgfdecorationsegmentlength, \pgfdecorationsegmentamplitude + +\pgfdeclaredecoration{ticks}{ticks} +{ + \state{ticks}[width=+\pgfdecorationsegmentlength] + { + \pgfpathmoveto{\pgfqpoint{0pt}{\pgfdecorationsegmentamplitude}} + \pgfpathlineto{\pgfqpoint{0pt}{-\pgfdecorationsegmentamplitude}} + } + \state{final} + { + \pgfpathmoveto{\pgfqpoint{0pt}{\pgfdecorationsegmentamplitude}} + \pgfpathlineto{\pgfqpoint{0pt}{-\pgfdecorationsegmentamplitude}} + \pgfpathmoveto{\pgfpointdecoratedpathlast} + } +} + + + +% expanding waves decoration +% +% Parameters: \pgfdecorationsegmentangle, \pgfdecorationsegmentlength + +\pgfdeclaredecoration{expanding waves}{initial} +{ + \state{initial}[width=+\pgfdecorationsegmentlength,next state=wave] + {} + + \state{wave}[switch if less than=+\pgfdecorationsegmentlength to last, + width=+\pgfdecorationsegmentlength] + { + \pgfpathmoveto{ + \pgfpointadd + {\pgfqpoint{-\pgfdecoratedcompleteddistance}{0pt}}% + {\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}}}% + \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}% + } + \state{last}[width=+0pt,next state=final] + { + \pgfpathmoveto{ + \pgfpointadd + {\pgfqpoint{-\pgfdecoratedcompleteddistance}{0pt}}% + {\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}}}% + \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}% + } + \state{final} + { + \pgfpathmoveto{\pgfpointdecoratedpathlast} + } +} + + + +% waves decoration + +\pgfdeclaredecoration{waves}{wave} +{ + \state{wave}[width=\pgfdecorationsegmentlength] + { + \pgftransformxshift{+\pgfdecorationsegmentlength} + \pgfpathmoveto{ + \pgfpointadd + {\pgfqpoint{-\pgfkeysvalueof{/pgf/decoration/start radius}}{0pt}}% + {\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}}}% + \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}% + } + \state{final} + { + \pgfpathmoveto{\pgfpointdecoratedpathlast} + } +} + + + +% border decoration +% +% Parameters: \pgfdecorationsegmentlength, \pgfdecorationsegmentamplitude, \pgfdecorationsegmentangle + +\pgfdeclaredecoration{border}{tick} +{ + \state{tick}[switch if less than=+\pgfdecorationsegmentlength to last, + width=+\pgfdecorationsegmentlength] + { + \pgfpathmoveto{\pgfpointorigin} + \pgfpathlineto{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecorationsegmentamplitude}} + } + \state{last}[width=+\pgfdecorationsegmentamplitude,next state=final] + { + \pgfpathmoveto{\pgfpointorigin} + \pgfpathlineto{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecorationsegmentamplitude}} + } + \state{final} + { + \pgfpathmoveto{\pgfpointdecoratedpathlast} + } +} + + + + + + +% brace decorations +% +% Parameters: \pgfdecorationsegmentamplitude + +\pgfdeclaredecoration{brace}{brace} +{ + \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final] + { + \pgfpathmoveto{\pgfpointorigin} + \pgfpathcurveto + {\pgfqpoint{.15\pgfdecorationsegmentamplitude}{.3\pgfdecorationsegmentamplitude}} + {\pgfqpoint{.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + {\pgfqpoint{\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + { + \pgftransformxshift{+\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance} + \pgfpathlineto{\pgfqpoint{-\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + \pgfpathcurveto + {\pgfqpoint{-.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + {\pgfqpoint{-.15\pgfdecorationsegmentamplitude}{.7\pgfdecorationsegmentamplitude}} + {\pgfqpoint{0\pgfdecorationsegmentamplitude}{1\pgfdecorationsegmentamplitude}} + \pgfpathcurveto + {\pgfqpoint{.15\pgfdecorationsegmentamplitude}{.7\pgfdecorationsegmentamplitude}} + {\pgfqpoint{.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + {\pgfqpoint{\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + } + { + \pgftransformxshift{+\pgfdecoratedremainingdistance} + \pgfpathlineto{\pgfqpoint{-\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + \pgfpathcurveto + {\pgfqpoint{-.5\pgfdecorationsegmentamplitude}{.5\pgfdecorationsegmentamplitude}} + {\pgfqpoint{-.15\pgfdecorationsegmentamplitude}{.3\pgfdecorationsegmentamplitude}} + {\pgfqpoint{0pt}{0pt}} + } + } + \state{final} + {} +} + + + + +% show path construction decoration +% +\pgfdeclaredecoration{show path construction}{check for moveto}{ + \state{check for moveto}[width=0pt, next state=segment, + persistent precomputation={% + \begingroup% + \pgf@lib@decoraions@installinputsegmentpoints% + \ifx\pgfdecorationpreviousinputsegment\pgfdecorationinputsegmentmoveto% + \pgfdecoratedinputsegmentmovetocode% + \fi% + \endgroup% + }]{} + \state{segment}[width=\pgfdecoratedinputsegmentremainingdistance, next state=check for moveto, + persistent precomputation={% + \begingroup% + \pgf@lib@decoraions@installinputsegmentpoints% + \csname pgfdecoratedinputsegment\pgfdecorationcurrentinputsegment code\endcsname% + \endgroup% + }]{} + \state{final}{% + \egroup% + \begingroup% + \pgf@lib@decoraions@installinputsegmentpoints% + \csname pgfdecoratedinputsegment\pgfdecorationcurrentinputsegment code\endcsname% + \endgroup% + \bgroup% + } +} + +\pgfkeys{ + /pgf/decoration/.cd, + moveto code/.code=\def\pgfdecoratedinputsegmentmovetocode{#1}, + lineto code/.code=\def\pgfdecoratedinputsegmentlinetocode{#1}, + curveto code/.code=\def\pgfdecoratedinputsegmentcurvetocode{#1}, + closepath code/.code=\def\pgfdecoratedinputsegmentclosepathcode{#1} +} + +\let\pgfdecoratedinputsegmentmovetocode\pgfutil@empty% +\let\pgfdecoratedinputsegmentlinetocode\pgfutil@empty% +\let\pgfdecoratedinputsegmentcurvetocode\pgfutil@empty% +\let\pgfdecoratedinputsegmentclosepathcode\pgfutil@empty% + +\def\pgf@lib@decoraions@installinputsegmentpoints{% + \let\pgfpointdecoratedinputsegmentfirst\pgf@decorate@inputsegment@first% + \let\pgfpointdecoratedinputsegmentlast\pgf@decorate@inputsegment@last% + \let\pgfpointdecoratedinputsegmentsupporta\pgf@decorate@inputsegment@supporta% + \let\pgfpointdecoratedinputsegmentsupportb\pgf@decorate@inputsegment@supportb% +} + + +\endinput
\ No newline at end of file |