summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-02-27 00:01:50 +0000
committerKarl Berry <karl@freefriends.org>2014-02-27 00:01:50 +0000
commit90ae413a94da014dbf7a6a8ab584f7c668483a5a (patch)
tree4e0528a2b2fb2004988e7fc804ea2f1354f1f5d5 /Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
parent800cc56380d1edfe567a6a66bef13e8950eb2b0c (diff)
pgf 3.0.0
git-svn-id: svn://tug.org/texlive/trunk@33057 c570f23f-e606-0410-a88d-b1316a301751
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.tex100
1 files changed, 99 insertions, 1 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
index 9bcfc739f56..b9c47231afa 100644
--- a/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
+++ b/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
@@ -7,9 +7,107 @@
%
% See the file doc/generic/pgf/licenses/LICENSE for more details.
-\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex,v 1.8 2008/10/09 16:46:56 tantau Exp $
+\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex,v 1.9 2013/09/09 10:05:41 tantau Exp $
+% Split a path at the last subpath of a path
+%
+% #1 = a macro that stores a path
+%
+% Description:
+%
+% This command will split the path into two parts:
+%
+% \pgfprocessresultpathprefix
+% The part of the path before the last subpath.
+%
+% \pgfprocessresultpathsuffix
+% The last subpath on the path.
+%
+% #1 will always be equal to the contents of the two above macros
+% concatenated. Normally, your objective will be to modify the
+% \pgfprocessresultpathsuffix and then concatenate the result.
+
+\def\pgfprocesssplitpath#1{%
+ \let\pgfprocessresultpathprefix\pgfutil@empty%
+ \let\pgfprocessresultpathsuffix\pgfutil@empty%
+ \let\pgf@next\pgf@process@split%
+ \expandafter\pgf@process@split#1\pgfsyssoftpath@movetotoken{}{}\pgf@stop%
+}
+
+\def\pgf@process@split#1\pgfsyssoftpath@movetotoken#2#3#4{%
+ \ifx#4\pgf@stop% ok, end reached!
+ \expandafter\def\expandafter\pgfprocessresultpathsuffix\expandafter{\pgfprocessresultpathsuffix#1}%
+ \let\pgf@next\pgfutil@gobble%
+ \else%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\pgfprocessresultpathprefix%
+ \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix#1}%
+ \def\pgfprocessresultpathsuffix{\pgfsyssoftpath@movetotoken{#2}{#3}}%
+ \fi%
+ \pgf@next#4%
+}
+
+
+
+% Split a subpath at the end
+%
+% #1 = a macro that stores an open subpath that contains at least two
+% path commands (so, not just a moveto);
+%
+% Description:
+%
+% Splits the supath into two parts:
+%
+% \pgfprocessresultsubpathsuffix
+% This macro contains the last two "relevant" path commands: The end
+% of the path command that led to the last path command and this
+% last path command. In essence, this macro contains everything you
+% "need to modify" if you wish to modify the end of the path.
+%
+% \pgfprocessresultsubpathprefix
+% Everything before the previous macro on the subpath.
+
+\def\pgfprocesssplitsubpath#1{%
+ % First, we need to find the end:
+ \let\pgf@tempa\pgfutil@emtpy%
+ \let\pgf@tempb\pgfutil@emtpy%
+ \let\pgf@tempc\pgfutil@emtpy%
+ \let\pgf@tempd\pgfutil@emtpy%
+ \let\pgfprocessresultsubpathprefix\pgfutil@empty%
+ \let\pgfprocessresultsubpathsuffix\pgfutil@empty%
+ \let\pgf@next\pgf@split@subpath%
+ \expandafter\pgf@split@subpath#1\pgf@stop%
+}
+
+\newif\ifpgf@split@move
+
+\def\pgf@split@subpath#1#2#3#4{%
+ \ifx#4\pgf@stop%
+ \expandafter\def\expandafter\pgfprocessresultsubpathsuffix\expandafter{\pgfprocessresultsubpathsuffix#1{#2}{#3}}%
+ \let\pgf@next\pgfutil@gobble%
+ \else%
+ \pgf@split@movetrue%
+ \ifx#1\pgfsyssoftpath@curvetosupportatoken%
+ \pgf@split@movefalse%
+ \else
+ \ifx#1\pgfsyssoftpath@curvetosupportbtoken%
+ \pgf@split@movefalse%
+ \fi%
+ \fi%
+ \ifpgf@split@move%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\expandafter\pgfprocessresultsubpathprefix%
+ \expandafter\expandafter\expandafter{%
+ \expandafter\pgfprocessresultsubpathprefix\pgfprocessresultsubpathsuffix}%
+ \def\pgfprocessresultsubpathsuffix{#1{#2}{#3}}%
+ \else%
+ \expandafter\def\expandafter\pgfprocessresultsubpathsuffix\expandafter{\pgfprocessresultsubpathsuffix#1{#2}{#3}}%
+ \fi%
+ \fi%
+ \pgf@next#4%
+}
+