diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex | 376 |
1 files changed, 262 insertions, 114 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex b/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex index 59ea0915460..208b42de704 100644 --- a/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex @@ -1,4 +1,5 @@ % Copyright 2009 by Till Tantau +% Copyright 2019 by Jonathan P. Spratte % % This file may be distributed and/or modified % @@ -13,8 +14,6 @@ \usepgfmodule{parser}% - - % Scan an SVG-Path % % #1 = the path @@ -46,11 +45,12 @@ \let\pgf@lib@svg@finish@prev\relax% {% \pgftransforminvert% - \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@path@lastx}{\pgf@path@lasty}}} - } + \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@path@lastx}{\pgf@path@lasty}}}% + }% \pgf@lib@svg@last@x\pgf@x% \pgf@lib@svg@last@y\pgf@y% \let\pgf@lib@svg@num=\pgfutil@empty% + \let\pgf@lib@svg@exp=\pgfutil@empty% \pgfparserparse{svgpath}#1"% }% @@ -87,9 +87,9 @@ % Handle a moveto: \pgfparserdef{svgpath}{all}{the letter M} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@moveto} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@moveto}% }% \def\pgf@lib@svg@moveto{% @@ -97,16 +97,16 @@ \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{0}pt% \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{1}pt% \pgfpathmoveto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto}% }% % Handle a relative moveto: \pgfparserdef{svgpath}{all}{the letter m} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@moveto@rel} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@moveto@rel}% }% \def\pgf@lib@svg@moveto@rel{% @@ -114,16 +114,16 @@ \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{0}pt% \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{1}pt% \pgfpathmoveto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto@rel} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto@rel}% }% % Handle a lineto: \pgfparserdef{svgpath}{all}{the letter L} -{ +{% \pgf@lib@svg@finish@prev% - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto}% }% \def\pgf@lib@svg@lineto{% @@ -141,9 +141,9 @@ % Handle a relative lineto: \pgfparserdef{svgpath}{all}{the letter l} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto@rel} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@lineto@rel}% }% \def\pgf@lib@svg@lineto@rel{% @@ -161,16 +161,16 @@ % Handle a closepath: \pgfparserdef{svgpath}{all}{the letter Z} -{ +{% \pgf@lib@svg@closepath }% \pgfparserdef{svgpath}{all}{the letter z} -{ +{% \pgf@lib@svg@closepath }% -\def\pgf@lib@svg@closepath{ +\def\pgf@lib@svg@closepath{% \pgf@lib@svg@finish@prev \pgfpathclose \let\pgf@lib@svg@finish@prev=\relax @@ -189,9 +189,9 @@ % Handle a horizontal lineto: \pgfparserdef{svgpath}{all}{the letter H} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto} + \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto}% }% \def\pgf@lib@svg@hlineto{% @@ -200,14 +200,14 @@ \pgf@lib@svg@clear@bezier@quad% \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{0}pt% \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% - \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto} + \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto}% \fi }% \pgfparserdef{svgpath}{all}{the letter h} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto@rel} + \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto@rel}% }% \def\pgf@lib@svg@hlineto@rel{% @@ -216,7 +216,7 @@ \pgf@lib@svg@clear@bezier@quad% \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{0}pt% \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% - \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto@rel} + \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@hlineto@rel}% \fi }% @@ -224,9 +224,9 @@ % Handle a horizontal lineto: \pgfparserdef{svgpath}{all}{the letter V} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto} + \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto}% }% \def\pgf@lib@svg@vlineto{% @@ -235,14 +235,14 @@ \pgf@lib@svg@clear@bezier@quad% \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{0}pt% \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% - \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto} + \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto}% \fi }% \pgfparserdef{svgpath}{all}{the letter v} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto@rel} + \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto@rel}% }% \def\pgf@lib@svg@vlineto@rel{% @@ -251,7 +251,7 @@ \pgf@lib@svg@clear@bezier@quad% \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{0}pt% \pgfpathlineto{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% - \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto@rel} + \pgf@lib@svg@read@nums{1}{\pgf@lib@svg@vlineto@rel}% \fi }% @@ -261,9 +261,9 @@ % Handle a Bezier curve: \pgfparserdef{svgpath}{all}{the letter C} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto} + \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto}% }% \def\pgf@lib@svg@curveto{% @@ -281,15 +281,15 @@ {\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}% {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% % Go on - \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto} + \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto}% \fi }% \pgfparserdef{svgpath}{all}{the letter c} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto@rel} + \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto@rel}% }% \def\pgf@lib@svg@curveto@rel{% @@ -297,7 +297,7 @@ \else% % Clear quadratic last point and save new last control point: \let\pgf@lib@svg@quad@last=\pgfutil@empty% - \pgf@process{\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}} + \pgf@process{\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}}% \edef\pgf@lib@svg@bezier@last{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}% % Draw curve \pgfpathcurveto @@ -306,7 +306,7 @@ {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{4}pt}{\pgf@lib@svg@get@num{5}pt}}}% \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{4}pt% \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{5}pt% - \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto@rel} + \pgf@lib@svg@read@nums{6}{\pgf@lib@svg@curveto@rel}% \fi }% @@ -315,9 +315,9 @@ \pgfparserdef{svgpath}{all}{the letter S} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@smooth} + \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@smooth}% }% \def\pgf@lib@svg@curveto@smooth{% @@ -326,19 +326,19 @@ % Draw curve % Compute first control point \ifx\pgf@lib@svg@bezier@last\pgfutil@empty% - \def\pgf@lib@svg@first@cp{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} + \def\pgf@lib@svg@first@cp{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% \else - \def\pgf@lib@svg@first@cp{ + \def\pgf@lib@svg@first@cp{% \pgfpointadd - {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} + {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% {\pgfpointdiff - {\pgf@lib@svg@bezier@last} - {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} - } - } + {\pgf@lib@svg@bezier@last}% + {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% + }% + }% \fi \pgfpathcurveto - {\pgf@lib@svg@first@cp} + {\pgf@lib@svg@first@cp}% {\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}% {\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}% % Clear quadratic last point and save new last control point: @@ -349,15 +349,15 @@ \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{2}pt% \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{3}pt% % Go on - \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@smooth} + \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@smooth}% \fi }% \pgfparserdef{svgpath}{all}{the letter s} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@rel@smooth} + \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@rel@smooth}% }% \def\pgf@lib@svg@curveto@rel@smooth{% @@ -366,30 +366,30 @@ % Draw curve % Compute first control point \ifx\pgf@lib@svg@bezier@last\pgfutil@empty% - \def\pgf@lib@svg@first@cp{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} + \def\pgf@lib@svg@first@cp{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% \else - \def\pgf@lib@svg@first@cp{ + \def\pgf@lib@svg@first@cp{% \pgfpointadd - {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} + {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% {\pgfpointdiff - {\pgf@lib@svg@bezier@last} - {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} - } - } + {\pgf@lib@svg@bezier@last}% + {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% + }% + }% \fi \pgfpathcurveto - {\pgf@lib@svg@first@cp} + {\pgf@lib@svg@first@cp}% {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}% {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}}% % Clear quadratic last point and save new last control point: \let\pgf@lib@svg@quad@last=\pgfutil@empty% - \pgf@process{\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}} + \pgf@process{\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}% \edef\pgf@lib@svg@bezier@last{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}% % update \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{2}pt% \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{3}pt% % Go on - \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@rel@smooth} + \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@curveto@rel@smooth}% \fi }% @@ -399,9 +399,9 @@ % Handle a quadratic curve: \pgfparserdef{svgpath}{all}{the letter Q} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto} + \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto}% }% \def\pgf@lib@svg@quad@curveto{% @@ -418,15 +418,15 @@ {\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}% {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% % Go on - \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto} + \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto}% \fi }% \pgfparserdef{svgpath}{all}{the letter q} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto@rel} + \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto@rel}% }% \def\pgf@lib@svg@quad@curveto@rel{% @@ -434,7 +434,7 @@ \else% % Clear quadratic last point and save new last control point: \let\pgf@lib@svg@bezier@last=\pgfutil@empty% - \pgf@process{\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}} + \pgf@process{\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}% \edef\pgf@lib@svg@quad@last{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}% % Draw curve \pgfpathquadraticcurveto @@ -442,7 +442,7 @@ {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{2}pt}{\pgf@lib@svg@get@num{3}pt}}}% \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{2}pt% \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{3}pt% - \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto@rel} + \pgf@lib@svg@read@nums{4}{\pgf@lib@svg@quad@curveto@rel}% \fi }% @@ -450,9 +450,9 @@ \pgfparserdef{svgpath}{all}{the letter T} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@smooth} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@smooth}% }% \def\pgf@lib@svg@quad@curveto@smooth{% @@ -460,21 +460,21 @@ \else% % Draw curve % Compute first control point - \pgf@process{ + \pgf@process{% \ifx\pgf@lib@svg@quad@last\pgfutil@empty% - \pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y} + \pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}% \else \pgfpointadd - {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} + {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% {\pgfpointdiff - {\pgf@lib@svg@quad@last} - {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} - } + {\pgf@lib@svg@quad@last}% + {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% + }% \fi - } + }% \edef\pgf@lib@svg@first@cp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}% \pgfpathquadraticcurveto - {\pgf@lib@svg@first@cp} + {\pgf@lib@svg@first@cp}% {\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}% % Clear quadratic last point and save new last control point: \let\pgf@lib@svg@bezier@last=\pgfutil@empty% @@ -483,15 +483,15 @@ \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{0}pt% \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{1}pt% % Go on - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@smooth} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@smooth}% \fi }% \pgfparserdef{svgpath}{all}{the letter t} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@rel@smooth} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@rel@smooth}% }% \def\pgf@lib@svg@quad@curveto@rel@smooth{% @@ -499,21 +499,21 @@ \else% % Draw curve % Compute first control point - \pgf@process{ + \pgf@process{% \ifx\pgf@lib@svg@quad@last\pgfutil@empty% - \pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y} + \pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}% \else \pgfpointadd - {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} + {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% {\pgfpointdiff - {\pgf@lib@svg@quad@last} - {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}} - } + {\pgf@lib@svg@quad@last}% + {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% + }% \fi - } + }% \edef\pgf@lib@svg@first@cp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}% \pgfpathquadraticcurveto - {\pgf@lib@svg@first@cp} + {\pgf@lib@svg@first@cp}% {\pgfpointadd{\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}{\pgfqpoint{\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}}}% % Clear quadratic last point and save new last control point: \let\pgf@lib@svg@bezier@last=\pgfutil@empty% @@ -522,7 +522,7 @@ \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{0}pt% \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{1}pt% % Go on - \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@rel@smooth} + \pgf@lib@svg@read@nums{2}{\pgf@lib@svg@quad@curveto@rel@smooth}% \fi }% @@ -531,9 +531,9 @@ % Handle an arcto: \pgfparserdef{svgpath}{all}{the letter A} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto} + \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto}% }% \def\pgf@lib@svg@arcto{% @@ -545,20 +545,20 @@ \pgf@lib@svg@last@x=\pgf@lib@svg@get@num{5}pt% \pgf@lib@svg@last@y=\pgf@lib@svg@get@num{6}pt% \pgfpatharcto - {\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt} - {\pgf@lib@svg@get@num{2}} - {\pgf@lib@svg@get@num{3}} - {\pgf@lib@svg@get@num{4}} + {\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}% + {\pgf@lib@svg@get@num{2}}% + {\pgf@lib@svg@get@num{3}}% + {\pgf@lib@svg@get@num{4}}% {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% % Go on - \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto} + \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto}% \fi }% \pgfparserdef{svgpath}{all}{the letter a} -{ +{% \pgf@lib@svg@finish@prev - \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto@rel} + \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto@rel}% }% \def\pgf@lib@svg@arcto@rel{% @@ -570,13 +570,13 @@ \advance\pgf@lib@svg@last@x by\pgf@lib@svg@get@num{5}pt% \advance\pgf@lib@svg@last@y by\pgf@lib@svg@get@num{6}pt% \pgfpatharcto - {\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt} - {\pgf@lib@svg@get@num{2}} - {\pgf@lib@svg@get@num{3}} - {\pgf@lib@svg@get@num{4}} + {\pgf@lib@svg@get@num{0}pt}{\pgf@lib@svg@get@num{1}pt}% + {\pgf@lib@svg@get@num{2}}% + {\pgf@lib@svg@get@num{3}}% + {\pgf@lib@svg@get@num{4}}% {\pgfqpoint{\pgf@lib@svg@last@x}{\pgf@lib@svg@last@y}}% % Go on - \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto@rel} + \pgf@lib@svg@read@nums{7}{\pgf@lib@svg@arcto@rel}% \fi }% @@ -587,9 +587,9 @@ % Handle to end of the world \pgfparserdef{svgpath}{all}{the character "} -{ +{% \pgf@lib@svg@finish@prev - \pgfparserswitch{final} + \pgfparserswitch{final}% }% @@ -600,55 +600,203 @@ \def\pgf@lib@svg@read@nums#1#2{% get #1 number symbols, then do #2 \pgf@lib@svg@count=0\relax \pgf@lib@svg@max@num=#1\relax - \pgfparserswitch{num} - \def\pgf@lib@svg@finish@prev{ + \pgfparserswitch{num}% + \def\pgf@lib@svg@finish@prev{% \ifx\pgf@lib@svg@num\pgfutil@empty% \else% + \ifx\pgf@lib@svg@exp\pgfutil@empty + \else + \pgfmathfloatparsenumber{\pgf@lib@svg@num e\pgf@lib@svg@exp}% + \pgfmathfloattofixed{\pgfmathresult}% + \let\pgf@lib@svg@num=\pgfmathresult + \fi \expandafter\let\csname pgf@lib@svg@num@\the\pgf@lib@svg@count\endcsname=\pgf@lib@svg@num \advance\pgf@lib@svg@count by1\relax% \let\pgf@lib@svg@num=\pgfutil@empty% + \let\pgf@lib@svg@exp=\pgfutil@empty% \fi - #2 - } + #2% + }% }% \def\pgf@lib@svg@get@num#1{\csname pgf@lib@svg@num@#1\endcsname}% \pgfparserdef{svgpath}{num}{the character ,} -{ +{% \pgf@lib@svg@handle@spacer }% +\pgfparserlet{svgpath}{after.}{the character ,}[num]{the character ,} +\pgfparserlet{svgpath}{exp},[num], +\pgfparserlet{svgpath}{exp sign},[num], \pgfparserdef{svgpath}{num}{\meaning\pgfutil@sptoken} -{ +{% \pgf@lib@svg@handle@spacer }% +\pgfparserlet{svgpath}{after.}{blank space}[num]{blank space} +\pgfparserlet{svgpath}{exp}{blank space}, +\pgfparserlet{svgpath}{exp sign}{blank space}, \pgfparserdef{svgpath}{num}{the character -} -{ +{% \pgf@lib@svg@handle@spacer \def\pgf@lib@svg@num{-}% }% +\pgfparserlet{svgpath}{after.}{the character -}[num]{the character -} +\pgfparserlet{svgpath}{exp}-[num]- +\pgfparserdef{svgpath}{num}{the character +} +{% + \pgf@lib@svg@handle@spacer + \def\pgf@lib@svg@num{+}% +} +\pgfparserlet{svgpath}{after.}{the character +}[num]{the character +} +\pgfparserlet{svgpath}{exp}+[num]+ -\def\pgf@lib@svg@handle@spacer{ +\def\pgf@lib@svg@handle@spacer{% \ifx\pgf@lib@svg@num\pgfutil@empty% % ignore \else + \ifx\pgf@lib@svg@exp\pgfutil@empty + \else + \pgfmathfloatparsenumber{\pgf@lib@svg@num e\pgf@lib@svg@exp}% + \pgfmathfloattofixed{\pgfmathresult}% + \let\pgf@lib@svg@num=\pgfmathresult + \fi \expandafter\let\csname pgf@lib@svg@num@\the\pgf@lib@svg@count\endcsname=\pgf@lib@svg@num \advance\pgf@lib@svg@count by1\relax% \ifnum\pgf@lib@svg@count=\pgf@lib@svg@max@num\relax% \pgf@lib@svg@finish@prev% \fi \let\pgf@lib@svg@num=\pgfutil@empty% + \let\pgf@lib@svg@exp=\pgfutil@empty% + \pgfparserswitch{num}% \fi }% % Handle digits -\pgfparserdef{svgpath}{all}{the character .} -{\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num.}}% +\pgfparserdef{svgpath}{num}e + {% + \pgfparserswitch{exp sign}% + \let\pgf@lib@svg@exp=\pgfutil@empty + } +\pgfparserlet{svgpath}{after.}e[num]e +\pgfparserdef{svgpath}{exp sign}- + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp-}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}+ + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp+}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}0 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp0}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}1 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp1}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}2 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp2}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}3 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp3}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}4 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp4}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}5 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp5}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}6 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp6}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}7 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp7}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}8 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp8}% + \pgfparserswitch{exp}% + } +\pgfparserdef{svgpath}{exp sign}9 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp9}% + \pgfparserswitch{exp}% + } + +\pgfparserdef{svgpath}{exp}0 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp0}% + } +\pgfparserdef{svgpath}{exp}1 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp1}% + } +\pgfparserdef{svgpath}{exp}2 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp2}% + } +\pgfparserdef{svgpath}{exp}3 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp3}% + } +\pgfparserdef{svgpath}{exp}4 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp4}% + } +\pgfparserdef{svgpath}{exp}5 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp5}% + } +\pgfparserdef{svgpath}{exp}6 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp6}% + } +\pgfparserdef{svgpath}{exp}7 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp7}% + } +\pgfparserdef{svgpath}{exp}8 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp8}% + } +\pgfparserdef{svgpath}{exp}9 + {% + \expandafter\def\expandafter\pgf@lib@svg@exp\expandafter{\pgf@lib@svg@exp9}% + } + +\pgfparserdef{svgpath}{num}{the character .} + {% + \expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num.}% + \pgfparserswitch{after.}% + }% +\pgfparserdef{svgpath}{after.}{the character .} + {% + \pgf@lib@svg@handle@spacer + \def\pgf@lib@svg@num{.}% + \pgfparserswitch{after.}% + }% +\pgfparserlet{svgpath}{exp}{the character .}[after.]{the character .} \pgfparserdef{svgpath}{all}{the character 0} {\expandafter\def\expandafter\pgf@lib@svg@num\expandafter{\pgf@lib@svg@num0}}% |