summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarysvg.path.code.tex
diff options
context:
space:
mode:
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.tex376
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}}%