summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex506
1 files changed, 0 insertions, 506 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex b/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
deleted file mode 100644
index 072585ba3a8..00000000000
--- a/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
+++ /dev/null
@@ -1,506 +0,0 @@
-% 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.
-
-\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex,v 1.6 2007/03/09 17:49:32 tantau Exp $
-
-
-
-% Cleanup path
-%
-% #1 = a macro name that stores a path
-%
-% Description:
-%
-% This command will remove superfluous parts from a path. Movetos with
-% a moveto following are removed.
-%
-% Example:
-%
-% \pgfsyssoftpath@moveto{0}{0}
-% \pgfsyssoftpath@moveto{10}{10}
-% \pgfsyssoftpath@lineto{0}{0}
-% \pgfsyssoftpath@getcurrentpath\mypath
-% \pgfprocesspathcleanup\mypath
-
-\def\pgfprocesspathcleanup#1{%
- {%
- \let\pgf@newpath=\pgfutil@empty%
- \expandafter\pgf@cleanupprocessor#1\pgf@stop%
- }%
- \let#1=\pgf@newpath%
-}
-
-\def\pgf@cleanupprocessor#1{%
- \ifx#1\pgf@stop%
- \let\next=\pgfutil@gobble% ok, done
- \else%
- \ifx#1\pgfsyssoftpath@movetotoken%
- \let\next=\pgf@cleanupmoveto%
- \else%
- \let\next=\pgf@cleanupredo%
- \fi%
- \fi%
- \next#1%
-}
-
-\def\pgf@cleanupredo#1#2#3{%
- \pgfutil@g@addto@macro\pgf@newpath{#1{#2}{#3}}%
- \pgf@cleanupprocessor%
-}
-
-\def\pgf@cleanupmoveto#1#2#3#4{%
- \ifx#4\pgfsyssoftpath@movetotoken%
- % Ok, skip
- \else%
- \pgfutil@g@addto@macro\pgf@newpath{#1{#2}{#3}}%
- \fi%
- \pgf@cleanupprocessor#4%
-}
-
-
-
-% Extract start and end vectors of a path
-%
-% #1 = a macro that stores a path
-%
-% Description:
-%
-% This command will extract the first and second coordinate on the
-% path as well as the last and second-last. These coordinates will be
-% put in the pgfpoint-macros \pgfpointfirstonpath,
-% \pgfpointsecondonpath, \pgfpointsecondlastonpath, and
-% \pgfpointlastonpath. If the path is empty, these macros are set to
-% \pgfpointorigin.
-%
-% Example:
-%
-% \pgfsyssoftpath@moveto{0}{0}
-% \pgfsyssoftpath@lineto{10}{10}
-% \pgfsyssoftpath@curveto{20}{20}{30}{30}{40}{40}
-% \pgfsyssoftpath@getcurrentpath\mypath
-% \pgfprocesspathextractpoints\mypath
-%
-% % \pgfpointfirstonpath is now \pgfpoint{0}{0}
-% % \pgfpointsecondonpath is now \pgfpoint{10bp}{10bp}
-% % \pgfpointsecondlastonpath is now \pgfpoint{30bp}{30bp}
-% % \pgfpointlastonpath is now \pgfpoint{40bp}{40bp}
-
-\def\pgfprocesspathextractpoints#1{%
- \ifx#1\pgfutil@empty%
- \let\pgfpointfirstonpath=\pgfpointorigin%
- \let\pgfpointsecondonpath=\pgfpointorigin%
- \let\pgfpointsecondlastonpath=\pgfpointorigin%
- \let\pgfpointlastonpath=\pgfpointorigin%
- \else%
- \expandafter\pgf@extractprocessorfirst#1\pgf@stop%
- \fi%
-}
-
-\def\pgf@extractprocessorfirst#1#2#3#4{%
- \def\pgfpointfirstonpath{\pgfqpoint{#2}{#3}}%
- \ifx#4\pgf@stop%
- % pretty short path...
- \let\pgfpointsecondonpath=\pgfpointfirstonpath%
- \let\pgfpointsecondlastonpath=\pgfpointfirstonpath%
- \let\pgfpointlastonpath=\pgfpointfirstonpath%
- \let\next=\pgfutil@gobble%
- \else
- \let\next=\pgf@extractprocessorsecond%
- \fi%
- \next#4%
-}
-
-\def\pgf@extractprocessorsecond#1{%
- \ifx#1\pgfsyssoftpath@movetotoken%
- % Reset things...
- \let\pgf@next=\pgf@extractprocessorfirst%
- \else%
- \let\pgf@next=\pgf@@extractprocessorsecond%
- \fi%
- \pgf@next#1%
-}
-\def\pgf@@extractprocessorsecond#1#2#3#4{%
- \def\pgfpointsecondonpath{\pgfqpoint{#2}{#3}}%
- \let\pgfpointsecondlastonpath=\pgfpointfirstonpath%
- \let\pgfpointlastonpath=\pgfpointsecondonpath%
- \ifx#4\pgf@stop%
- % short path...
- \let\next=\pgfutil@gobble%
- \else
- \let\next=\pgf@extractprocessorother%
- \fi%
- \next#4%
-}
-
-\def\pgf@extractprocessorother#1{%
- \ifx#1\pgfsyssoftpath@movetotoken%
- % Reset things...
- \let\pgf@next=\pgf@extractprocessorfirst%
- \else%
- \let\pgf@next=\pgf@@extractprocessorother%
- \fi%
- \pgf@next#1%
-}
-\def\pgf@@extractprocessorother#1#2#3#4{%
- \let\pgfpointsecondlastonpath=\pgfpointlastonpath%
- \def\pgfpointlastonpath{\pgfqpoint{#2}{#3}}%
- \ifx#4\pgf@stop%
- % end!
- \let\next=\pgfutil@gobble%
- \fi%
- \next#4%
-}
-
-
-
-% Check for closepath and rectangles
-%
-% #1 = a macro that stores a path
-% #2 = command to be executed when a closepath or a rectangle is encountered
-%
-% Example:
-%
-% \pgfsyssoftpath@moveto{0}{0}
-% \pgfsyssoftpath@lineto{10}{10}
-% \pgfsyssoftpath@curveto{20}{20}{30}{30}{40}{40}
-% \pgfsyssoftpath@getcurrentpath\mypath
-% \pgfprocesscheckclosed{\mypath}{\pgf@drawarrowsfalse}
-
-\def\pgfprocesscheckclosed#1#2{%
- {%
- \global\let\pgf@proc@todo=\relax%
- \let\pgfsyssoftpath@movetotoken=\pgfutil@gobbletwo%
- \let\pgfsyssoftpath@linetotoken=\pgfutil@gobbletwo%
- \let\pgfsyssoftpath@curvetosupportatoken=\pgfutil@gobbletwo%
- \let\pgfsyssoftpath@curvetosupportbtoken=\pgfutil@gobbletwo%
- \let\pgfsyssoftpath@curvetotoken=\pgfutil@gobbletwo%
- \def\pgfsyssoftpath@rectcornertoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
- \def\pgfsyssoftpath@rectsizetoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
- \def\pgfsyssoftpath@closepathtoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
- #1%
- }%
- \pgf@proc@todo%
-}
-
-
-% Resolve specialround
-%
-% #1 = a macro that stores a path
-% #2 = a macro that stores the new path
-%
-% Description:
-%
-% Resolves all specialround tokens. When such a token is encountered,
-% the objective is to replace the next corner by a rounded corner.
-%
-
-\def\pgfprocessround#1#2{%
- % first, check whether #1 contains \pgfsyssoftpath@specialroundtoken.
- % if not, do quick assignment!
- \expandafter\pgf@processroundcheck\expandafter#1\expandafter#2#1\pgfsyssoftpath@specialroundtoken\pgf@stop%
-}
-
-\def\pgf@processroundcheck#1#2#3\pgfsyssoftpath@specialroundtoken#4\pgf@stop{%
- \def\pgf@test{#4}%
- \ifx\pgf@test\pgfutil@empty%
- % ok, nothing to be done!
- \let#2=#1%
- \else%
- % very well...
- \pgf@@processround#1#2%
- \fi%
-}
-
-
-\def\pgf@@processround#1#2{%
- \let\pgfprocess@newpath\pgfutil@empty%
- \let\pgfprocess@moveto\pgfutil@empty%
- \let\pgfprocess@firstto\pgfutil@empty%
- \let\pgfprocess@segment\pgfutil@empty%
- \pgf@xa=0pt%
- \pgf@ya=0pt%
- \expandafter\pgfprocess@round#1\pgf@stop{0pt}{0pt}%
- \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@moveto}%
- \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@segment}%
- \let#2=\pgfprocess@newpath%
-}
-
-\def\pgfprocess@round#1#2#3{%
- \ifx#1\pgf@stop%
- \let\next=\relax%
- \else%
- \ifx#1\pgfsyssoftpath@specialroundtoken%
- \def\pgfprocess@savex{#2}%
- \def\pgfprocess@savey{#3}%
- \let\next=\pgfprocess@specialround%
- \ifdim#2=0pt%
- \ifdim#3=0pt%
- \let\next=\pgfprocess@round% skip!
- \fi%
- \fi%
- \else%
- \ifx\pgfprocess@firstto\pgfutil@empty%
- \def\pgfprocess@firstto{{#2}{#3}}%
- \fi%
- \pgf@xa=#2%
- \pgf@ya=#3%
- \ifx#1\pgfsyssoftpath@movetotoken%
- % ok, move old segment to newpath
- \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@moveto}%
- \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@segment}%
- \def\pgfprocess@moveto{#1{#2}{#3}}%
- \let\pgfprocess@firstto=\pgfutil@empty%
- \let\pgfprocess@segment=\pgfutil@empty%
- \else%
- \pgfutil@g@addto@macro\pgfprocess@segment{#1{#2}{#3}}%
- \fi%
- \let\next=\pgfprocess@round%
- \fi%
- \fi%
- \next%
-}
-
-\def\pgfprocess@specialround#1#2#3{%
- \ifx\pgfprocess@firstto\pgfutil@empty%
- \def\pgfprocess@firstto{{#2}{#3}}%
- \fi%
- \let\next=\pgfprocess@round% default: do nothing
- \ifx#1\pgfsyssoftpath@linetotoken%
- % Ok, round a lineto
- \let\next=\pgfprocess@specialroundcope%
- \else%
- \ifx#1\pgfsyssoftpath@curvetosupportatoken%
- % Ok, round a curveto.
- \let\next=\pgfprocess@specialroundcurveto%
- \else%
- \ifx#1\pgfsyssoftpath@closepathtoken%
- % Ok, round a closepath (this is tricky...)
- \let\next=\pgfprocess@specialroundclose%
- \fi%
- \fi%
- \fi%
- \next#1{#2}{#3}%
-}%
-
-\def\pgfprocess@specialroundcope#1#2#3#4#5#6{%
- \let\next=\pgfprocess@round% do nothing by default
- \let\pgfprocess@continueafterrounding=\pgfprocess@round%
- \ifx#4\pgfsyssoftpath@linetotoken%
- % ok, let's get kicking...
- \pgf@xc=#5%
- \pgf@yc=#6%
- \let\next=\pgfprocess@@specialround%
- \else%
- \ifx#4\pgfsyssoftpath@curvetosupportatoken%
- \pgf@xc=#5%
- \pgf@yc=#6%
- \let\next=\pgfprocess@@specialround%
- \else%
- \ifx#4\pgfsyssoftpath@closepathtoken%
- \pgf@xc=#5%
- \pgf@yc=#6%
- \let\next=\pgfprocess@@specialround%
- \else
- \ifx#4\pgfsyssoftpath@specialroundtoken%
- \let\next=\pgfprocess@@findrightcoordinates%
- \fi%
- \fi%
- \fi%
- \fi%
- \next#1{#2}{#3}#4{#5}{#6}%
-}
-
-\def\pgfprocess@@findrightcoordinates#1#2#3#4#5#6#7#8#9{%
- \pgf@xc=#8%
- \pgf@yc=#9%
- \pgfprocess@@specialround#1{#2}{#3}#4{#5}{#6}#7{#8}{#9}%
-}
-
-\def\pgfprocess@@specialround#1#2#3{%
- \pgfutil@g@addto@macro\pgfprocess@segment{#1}%
- % calculate start coordinate of the curve
- \pgf@xb=#2%
- \pgf@yb=#3%
- %
- \edef\pgf@marshal%
- {\noexpand\pgfpointlineatdistance{\pgfprocess@savex}%
- {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
- {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}%
- \pgf@process{\pgf@marshal}%
- \pgf@xa=\pgf@x% save start point of added curve
- \pgf@ya=\pgf@y%
- \edef\pgfprocess@addition{{\the\pgf@x}{\the\pgf@y}}%
- \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
- %
- % now add curve
- %
- \edef\pgf@marshal%
- {\noexpand\pgfpointlineatdistance{\pgfprocess@savey}%
- {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
- {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}}%
- \pgf@process{\pgf@marshal}%
- \pgf@xc=\pgf@x% save end point of added curve
- \pgf@yc=\pgf@y%
- % calculate first support:
- {%
- \pgf@x=\pgf@xb%
- \pgf@y=\pgf@yb%
- \advance\pgf@x by-\pgf@xa%
- \advance\pgf@y by-\pgf@ya%
- \advance\pgf@xa by 0.555\pgf@x%
- \advance\pgf@ya by 0.555\pgf@y%
- \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetosupportatoken{\the\pgf@xa}{\the\pgf@ya}}%
- \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
- }%
- % calculate second support:
- {%
- \pgf@x=\pgf@xb%
- \pgf@y=\pgf@yb%
- \advance\pgf@x by-\pgf@xc%
- \advance\pgf@y by-\pgf@yc%
- \advance\pgf@xc by 0.555\pgf@x%
- \advance\pgf@yc by 0.555\pgf@y%
- \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetosupportbtoken{\the\pgf@xc}{\the\pgf@yc}}%
- \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
- }%
- % add end:
- \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetotoken{\the\pgf@xc}{\the\pgf@yc}}%
- \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
- %
- % continue!
- %
- \pgf@xa=#2%
- \pgf@ya=#3%
- \pgfprocess@continueafterrounding%
-}
-
-\def\pgfprocess@specialroundcurveto#1#2#3#4#5#6{%
- \pgfutil@g@addto@macro\pgfprocess@segment{#1{#2}{#3}#4{#5}{#6}}% supports
- \pgf@xa=#5%
- \pgf@ya=#6%
- \pgfprocess@specialroundcope}
-
-\def\pgfprocess@specialroundclose{%
- \let\next=\pgfprocess@round%
- \ifx\pgfprocess@moveto\pgfutil@empty%
- \else%
- \ifx\pgfprocess@firstto\pgfutil@empty%
- \else%
- \expandafter\pgfprocess@@specialclosetarget\pgfprocess@firstto%
- \let\pgfprocess@continueafterrounding=\pgfprocess@cleanupafterclose%
- \edef\next{%
- \noexpand\pgfprocess@@specialround%
- \expandafter\expandafter\expandafter\noexpand\expandafter\pgfprocess@@specialclosemoveto\pgfprocess@moveto%
- }%
- \fi%
- \fi%
- \next%
-}
-
-\def\pgfprocess@@specialclosetarget#1#2{%
- \pgf@xc=#1%
- \pgf@yc=#2%
-}
-
-\def\pgfprocess@@specialclosemoveto#1#2#3{%
- \pgfsyssoftpath@linetotoken{#2}{#3}%
-}
-
-
-\def\pgfprocess@cleanupafterclose#1#2#3{%
- \edef\pgfprocess@moveto{\noexpand\pgfsyssoftpath@movetotoken{\the\pgf@xc}{\the\pgf@yc}}%
- \edef\pgf@marshal{\noexpand\pgfprocess@round\noexpand\pgfsyssoftpath@closepathtoken{\the\pgf@xc}{\the\pgf@yc}}%
- \pgf@marshal%
-}
-
-
-% Replace start and end coordinates of a path
-%
-% #1 = new start coordinate
-% #2 = new end coordinate
-%
-% Description:
-%
-% This command will replace the first and last coordinates on a path
-% by the given coordinates.
-%
-% Example:
-%
-% \pgfsyssoftpath@moveto{0}{0}
-% \pgfsyssoftpath@lineto{10}{10}
-% \pgfsyssoftpath@curveto{20}{20}{30}{10}{40}{0}
-% \pgfsyssoftpath@getcurrentpath\mypath
-% \pgfsetlinewidth{2pt}
-% \pgfusepath{stroke}
-% \pgfprocesspathextractpoints{\mypath}
-% \pgfprocesspathreplacestartandend{\mypath}
-% {\pgfpointlineatdistance{2pt}{\pgfpointfirstonpath}{\pgfpointsecondonpath}}%
-% {\pgfpointlineatdistance{2pt}{\pgfpointlastonpath}{\pgfpointsecondlastonpath}}%
-% \pgfsyssoftpath@setcurrentpath\mypath
-% \pgfsetlinewidth{1pt}
-% \color{red}
-% \pgfusepath{stroke}
-
-\def\pgfprocesspathreplacestartandend#1#2#3{%
- {%
- \let\pgf@newpath=\pgfutil@empty%
- \let\pgf@prepath=\pgfutil@empty%
- \ifx#1\pgfutil@empty%
- \else%
- \pgf@process{#3}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgf@process{#2}%
- \expandafter\pgf@replaceprocessfirst#1\pgf@stop%
- \fi%
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\pgf@newpath
- \expandafter\expandafter\expandafter{\expandafter\pgf@prepath\pgf@newpath}%
- \global\let#1=\pgf@newpath%
- }%
-}
-
-\def\pgf@replaceprocessfirst#1#2#3#4{%
- \def\pgf@temppath{#1{#2}{#3}}%
- \edef\pgf@newpath{\noexpand#1{\the\pgf@x}{\the\pgf@y}}%
- \ifx#4\pgf@stop%
- \let\next=\pgfutil@gobble%
- \else%
- \let\next=\pgf@replaceprocessother%
- \fi%
- \next#4%
-}
-
-\def\pgf@replaceprocessother#1{%
- \ifx#1\pgfsyssoftpath@movetotoken%
- % Arggghh! Must reset everything!
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\pgf@prepath
- \expandafter\expandafter\expandafter{\expandafter\pgf@prepath\pgf@temppath}%
- % Redo first.
- \let\pgf@next=\pgf@replaceprocessfirst%
- \else%
- \let\pgf@next=\pgf@@replaceprocessother%
- \fi%
- \pgf@next#1%
-}
-\def\pgf@@replaceprocessother#1#2#3#4{%
- \ifx#4\pgf@stop%
- \edef\pgf@newpathaddition{{\noexpand#1{\the\pgf@xa}{\the\pgf@ya}}}%
- \expandafter\pgfutil@g@addto@macro\expandafter\pgf@newpath\pgf@newpathaddition%
- \let\next=\pgfutil@gobble%
- \else%
- \pgfutil@g@addto@macro\pgf@temppath{#1{#2}{#3}}%
- \pgfutil@g@addto@macro\pgf@newpath{#1{#2}{#3}}%
- \let\next=\pgf@replaceprocessother%
- \fi%
- \next#4%
-}
-
-\endinput