% Copyright 2009 by Till Tantau
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Free Documentation License.
%
% See the file doc/generic/pgf/licenses/LICENSE for more details.


\section{SVG-Path Library}
\label{section-library-svg-path}

\begin{pgflibrary}{svg.path}
  This library defines a command that allows you to specify a path
  using the \textsc{svg}-syntax.
\end{pgflibrary}

\begin{command}{\pgfpathsvg\marg{path}}
  This command extends the current path by a \meta{path} given in the
  \textsc{svg}-path-data syntax. This syntax is described in detail in
  Section~8.3 of the \textsc{svg}-specification, Version 1.1. 

  In principle, the complete syntax is supported and the library just
  provides a parser and a mapping to basic layer commands. For
  instance, |M 0 10| is mapped to
  |\pgfpathmoveto{\pgfpoint{0pt}{10pt}}|. There are, however, a few things
  to be aware of:
  \begin{itemize}
  \item The computation underlying the arc commands |A| and |a|
    are not numerically stable, which may result in quite imprecise
    arcs. B\'ezier curves, both quadratic and cubic, are not affected,
    neither are arcs spanning degrees that are multiples of
    $90^{\circ}$.
  \item The dimensionless units of \textsc{svg} are always interpreted
    as points (|pt|). This is a problem with paths like |M 20000 0|,
    which will raise an error message since \TeX\ cannot handle
    dimensions larger than about 16000 points.
  \item
    All coordinate and canvas transformations apply to the path in the
    usual fashion.
  \item
    The |\pgfpathsvg| command can be freely intermixed with other path
    commands. 
  \end{itemize}
\begin{codeexample}[]
\begin{pgfpicture}
  \pgfpathsvg{M 0 0 l 20 0 0 20 -20 0 q 10 0 10 10
              t 10 10 10 10 h -50 z}
  \pgfusepath{stroke}
\end{pgfpicture}
\end{codeexample}
\end{command}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "pgfmanual-pdftex-version"
%%% End: 
