% 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[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/libraries/pgflibraryarrows.code.tex,v 1.5 2006/10/11 15:22:26 tantau Exp $


% A square bracket shaped arrow

\pgfarrowsdeclare{[}{]}
{
  \@tempdima=1pt%
  \advance\@tempdima by1.25\pgflinewidth%
  \pgfarrowsleftextend{-\@tempdima}
  \pgfarrowsrightextend{.5\pgflinewidth}
}
{
  \@tempdima=2pt%
  \advance\@tempdima by1.5\pgflinewidth%
  \@tempdimb=\@tempdima%
  \advance\@tempdimb by\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfsetbuttcap
  \pgfpathmoveto{\pgfpoint{-.5\@tempdimb}{-\@tempdima}}
  \pgfpathlineto{\pgfpoint{0pt}{-\@tempdima}}
  \pgfpathlineto{\pgfpoint{0pt}{\@tempdima}}
  \pgfpathlineto{\pgfpoint{-.5\@tempdimb}{\@tempdima}}
  \pgfusepathqstroke
}

\pgfarrowsdeclarereversed{]}{[}{[}{]}


% A round bracket shaped arrow

\pgfarrowsdeclare{(}{)}
{
  \@tempdima=2pt%
  \advance\@tempdima by1.5\pgflinewidth%
  \@tempdimb=0.0625\@tempdima\advance\@tempdimb by.5\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
  \@tempdimb=0.5\@tempdima\advance\@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{-\@tempdimb}
}
{
  \@tempdima=2pt%
  \advance\@tempdima by1.5\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfpoint{-.5\@tempdima}{-\@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{.25\@tempdima}{-.5\@tempdima}}
  {\pgfpoint{.25\@tempdima}{.5\@tempdima}}
  {\pgfpoint{-.5\@tempdima}{\@tempdima}}
  \pgfusepathqstroke
}

\pgfarrowsdeclarereversed{)}{(}{(}{)}




% A pointed bracket shaped arrow

\pgfarrowsdeclare{angle 90}{angle 90}
{
  \@tempdima=0.3pt%
  \advance\@tempdima by.25\pgflinewidth%
  \@tempdimb=5.5\@tempdima\advance\@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{-\@tempdimb}
  \@tempdimb=.5\@tempdima\advance\@tempdimb by0.707\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.3pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpoint{-5.5\@tempdima}{-6\@tempdima}}
  \pgfpathlineto{\pgfpoint{0.5\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{-5.5\@tempdima}{6\@tempdima}}
  \pgfusepathqstroke
}

\pgfarrowsdeclarereversed{angle 90 reversed}{angle 90 reversed}{angle 90}{angle 90}


\pgfarrowsdeclare{angle 60}{angle 60}
{
  \@tempdima=0.3pt%
  \advance\@tempdima by.25\pgflinewidth%
  \@tempdimb=7.29\@tempdima\advance\@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{-\@tempdimb}
  \@tempdimb=.5\@tempdima\advance\@tempdimb by\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.3pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfpoint{0.5\@tempdima}{0pt}}{\pgfpointpolar{150}{9\@tempdima}}}
  \pgfpathlineto{\pgfpoint{0.5\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpointadd{\pgfpoint{0.5\@tempdima}{0pt}}{\pgfpointpolar{-150}{9\@tempdima}}}
  \pgfusepathqstroke
}

\pgfarrowsdeclarereversed{angle 60 reversed}{angle 60 reversed}{angle 60}{angle 60}



\pgfarrowsdeclare{angle 45}{angle 45}
{
  \@tempdima=0.3pt%
  \advance\@tempdima by.25\pgflinewidth%
  \@tempdimb=8.705\@tempdima\advance\@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{-\@tempdimb}
  \@tempdimb=.5\@tempdima\advance\@tempdimb by1.28\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.3pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfpoint{0.5\@tempdima}{0pt}}{\pgfpointpolar{157}{10\@tempdima}}}
  \pgfpathlineto{\pgfpoint{0.5\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpointadd{\pgfpoint{0.5\@tempdima}{0pt}}{\pgfpointpolar{-157}{10\@tempdima}}}
  \pgfusepathqstroke
}

\pgfarrowsdeclarereversed{angle 45 reversed}{angle 45 reversed}{angle 45}{angle 45}



% A dot shaped arrow

\pgfarrowsdeclare{*}{*}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \@tempdimb=5.5\@tempdima\advance\@tempdimb by\pgflinewidth
  \pgfarrowsleftextend{-\@tempdimb}
  \@tempdimb=1.5\@tempdima\advance\@tempdimb by.5\pgflinewidth
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfpathcircle{\pgfpoint{-3\@tempdima}{0pt}}{4.5\@tempdima}
  \pgfusepathqfillstroke
}


% An open dot shaped arrow

\pgfarrowsdeclare{o}{o}
{
  \pgfarrowsleftextend{-.5\pgflinewidth}
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \@tempdimb=9\@tempdima\advance\@tempdimb by.5\pgflinewidth
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfpathcircle{\pgfpoint{4.5\@tempdima}{0bp}}{4.5\@tempdima}
  \pgfusepathqstroke
}



% A diamond shaped arrow

\pgfarrowsdeclare{diamond}{diamond}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.275\pgflinewidth%
  \@tempdimb=13\@tempdima\advance\@tempdimb by.5\pgflinewidth
  \pgfarrowsleftextend{-\@tempdimb}
  \@tempdimb=1\@tempdima\advance\@tempdimb by.5\pgflinewidth
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.275\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfpoint{1\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{-6\@tempdima}{4\@tempdima}}
  \pgfpathlineto{\pgfpoint{-13\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{-6\@tempdima}{-4\@tempdima}}
  \pgfpathclose
  \pgfusepathqfillstroke
}

\pgfarrowsdeclare{open diamond}{open diamond}%{{-.5bp}{14.5bp}}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.275\pgflinewidth%
  \pgfarrowsleftextend{-.5\pgflinewidth}
  \@tempdimb=14\@tempdima\advance\@tempdimb by.5\pgflinewidth
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.275\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfpoint{14\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{7\@tempdima}{4\@tempdima}}
  \pgfpathlineto{\pgfpoint{0\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{7\@tempdima}{-4\@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}



% A triangle shaped arrow

\pgfarrowsdeclare{triangle 90}{triangle 90}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \@tempdimb=5.5\@tempdima\advance\@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{-\@tempdimb}
  \@tempdimb=.5\@tempdima\advance\@tempdimb by0.707\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpoint{-5.5\@tempdima}{-6\@tempdima}}
  \pgfpathlineto{\pgfpoint{0.5\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{-5.5\@tempdima}{6\@tempdima}}
  \pgfpathclose
  \pgfusepathqfillstroke
}

\pgfarrowsdeclarereversed{triangle 90 reversed}{triangle 90 reversed}{triangle 90}{triangle 90}


\pgfarrowsdeclare{triangle 60}{triangle 60}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \@tempdimb=7.29\@tempdima\advance\@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{-\@tempdimb}
  \@tempdimb=.5\@tempdima\advance\@tempdimb by\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfpoint{0.5\@tempdima}{0pt}}{\pgfpointpolar{150}{9\@tempdima}}}
  \pgfpathlineto{\pgfpoint{0.5\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpointadd{\pgfpoint{0.5\@tempdima}{0pt}}{\pgfpointpolar{-150}{9\@tempdima}}}
  \pgfpathclose
  \pgfusepathqfillstroke
}

\pgfarrowsdeclarereversed{triangle 60 reversed}{triangle 60 reversed}{triangle 60}{triangle 60}




\pgfarrowsdeclare{triangle 45}{triangle 45}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \@tempdimb=8.705\@tempdima\advance\@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{-\@tempdimb}
  \@tempdimb=.5\@tempdima\advance\@tempdimb by1.28\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfpoint{0.5\@tempdima}{0pt}}{\pgfpointpolar{157}{10\@tempdima}}}
  \pgfpathlineto{\pgfpoint{0.5\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpointadd{\pgfpoint{0.5\@tempdima}{0pt}}{\pgfpointpolar{-157}{10\@tempdima}}}
  \pgfpathclose
  \pgfusepathqfillstroke
}

\pgfarrowsdeclarereversed{triangle 45 reversed}{triangle 45 reversed}{triangle 45}{triangle 45}




\pgfarrowsdeclare{open triangle 90}{open triangle 90}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{-.5\pgflinewidth}
  \@tempdimb=6\@tempdima\advance\@tempdimb by0.707\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpoint{0\@tempdima}{-6\@tempdima}}
  \pgfpathlineto{\pgfpoint{6\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{0\@tempdima}{6\@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}

\pgfarrowsdeclare{open triangle 90 reversed}{open triangle 90 reversed}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{-.707\pgflinewidth}
  \@tempdimb=6\@tempdima\advance\@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpoint{6\@tempdima}{-6\@tempdima}}
  \pgfpathlineto{\pgfpoint{0\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{6\@tempdima}{6\@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}



\pgfarrowsdeclare{open triangle 60}{open triangle 60}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{-.5\pgflinewidth}
  \@tempdimb=7.794\@tempdima\advance\@tempdimb by\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfpoint{7.794\@tempdima}{0pt}}{\pgfpointpolar{150}{9\@tempdima}}}
  \pgfpathlineto{\pgfpoint{7.794\@tempdima}{0pt}}
  \pgfpathlineto{\pgfpointadd{\pgfpoint{7.794\@tempdima}{0pt}}{\pgfpointpolar{-150}{9\@tempdima}}}
  \pgfpathclose
  \pgfusepathqstroke
}



\pgfarrowsdeclare{open triangle 60 reversed}{open triangle 60 reversed}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{-\pgflinewidth}
  \@tempdimb=7.794\@tempdima\advance\@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointpolar{30}{9\@tempdima}}
  \pgfpathlineto{\pgfpointorigin}
  \pgfpathlineto{\pgfpointpolar{-30}{9\@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}



\pgfarrowsdeclare{open triangle 45}{open triangle 45}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{-.5\pgflinewidth}
  \@tempdimb=9.205\@tempdima\advance\@tempdimb by1.28\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointadd{\pgfpoint{9.205\@tempdima}{0pt}}{\pgfpointpolar{157}{10\@tempdima}}}
  \pgfpathlineto{\pgfpoint{9.205\@tempdima}{0pt}}
  \pgfpathlineto{\pgfpointadd{\pgfpoint{9.205\@tempdima}{0pt}}{\pgfpointpolar{-157}{10\@tempdima}}}
  \pgfpathclose
  \pgfusepathqstroke
}



\pgfarrowsdeclare{open triangle 45 reversed}{open triangle 45 reversed}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfarrowsleftextend{-1.28\pgflinewidth}
  \@tempdimb=9.205\@tempdima\advance\@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.5pt%
  \advance\@tempdima by.25\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetmiterjoin
  \pgfpathmoveto{\pgfpointpolar{23}{10\@tempdima}}
  \pgfpathlineto{\pgfpointorigin}
  \pgfpathlineto{\pgfpointpolar{-23}{10\@tempdima}}
  \pgfpathclose
  \pgfusepathqstroke
}



% A less fleshy variant of LaTeX's orginal arrow type

\pgfarrowsdeclare{latex'}{latex'}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \pgfarrowsleftextend{-4\@tempdima}
  \pgfarrowsrightextend{6\@tempdima}
}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \pgfpathmoveto{\pgfpoint{6\@tempdima}{0\@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{3.5\@tempdima}{.5\@tempdima}}
  {\pgfpoint{-1\@tempdima}{1.5\@tempdima}}
  {\pgfpoint{-4\@tempdima}{3.75\@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{-1.5\@tempdima}{1\@tempdima}}
  {\pgfpoint{-1.5\@tempdima}{-1\@tempdima}}
  {\pgfpoint{-4\@tempdima}{-3.75\@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{-1\@tempdima}{-1.5\@tempdima}}
  {\pgfpoint{3.5\@tempdima}{-.5\@tempdima}}
  {\pgfpoint{6\@tempdima}{0\@tempdima}}
  \pgfusepathqfill
}

\pgfarrowsdeclarereversed{latex' reversed}{latex' reversed}{latex'}{latex'}


% A rounded variant of the stealth arrow

\pgfarrowsdeclare{stealth'}{stealth'}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \@tempdimb=6\@tempdima\advance\@tempdimb by.5\pgflinewidth%
  \pgfarrowsleftextend{-\@tempdimb}
  \@tempdimb=2\@tempdima\advance\@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfpoint{2\@tempdima}{0\@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{-.5\@tempdima}{.5\@tempdima}}
  {\pgfpoint{-3\@tempdima}{1.5\@tempdima}}
  {\pgfpoint{-6\@tempdima}{3.25\@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{-3\@tempdima}{1\@tempdima}}
  {\pgfpoint{-3\@tempdima}{-1\@tempdima}}
  {\pgfpoint{-6\@tempdima}{-3.25\@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{-3\@tempdima}{-1.5\@tempdima}}
  {\pgfpoint{-.5\@tempdima}{-.5\@tempdima}}
  {\pgfpoint{2\@tempdima}{0\@tempdima}}
  \pgfpathclose
  \pgfusepathqfillstroke
}

\pgfarrowsdeclarereversed{stealth' reversed}{stealth' reversed}{stealth'}{stealth'}



% The two half of the $\to$ arrow

\pgfarrowsdeclare{left to}{left to}
{
  \@tempdima=-0.84pt%
  \advance\@tempdima by-1.3\pgflinewidth%
  \@tempdimb=0.21pt%
  \advance\@tempdimb by.625\pgflinewidth%
  \pgfarrowsleftextend{\@tempdima}
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \pgfsetlinewidth{0.8\pgflinewidth}
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfpoint{-3\@tempdima}{4\@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{-2.75\@tempdima}{2.5\@tempdima}}
  {\pgfpoint{0pt}{0.25\@tempdima}}
  {\pgfpoint{0.75\@tempdima}{0pt}}
  \pgfpathcurveto
  {\pgfpoint{0.55\@tempdima}{-0.125\pgflinewidth}}
  {\pgfpoint{0.5\@tempdima}{-0.125\pgflinewidth}}
  {\pgfpoint{0.5\@tempdima}{-0.125\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{0pt}{-0.125\pgflinewidth}}
  \pgfusepathqstroke
}


\pgfarrowsdeclare{right to}{right to}
{
  \@tempdima=-0.84pt%
  \advance\@tempdima by-1.3\pgflinewidth%
  \@tempdimb=0.21pt%
  \advance\@tempdimb by.625\pgflinewidth%
  \pgfarrowsleftextend{\@tempdima}
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \pgfsetlinewidth{0.8\pgflinewidth}
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfpoint{-3\@tempdima}{-4\@tempdima}}
  \pgfpathcurveto
  {\pgfpoint{-2.75\@tempdima}{-2.5\@tempdima}}
  {\pgfpoint{0pt}{-0.25\@tempdima}}
  {\pgfpoint{0.75\@tempdima}{0pt}}
  \pgfpathcurveto
  {\pgfpoint{0.55\@tempdima}{0.125\pgflinewidth}}
  {\pgfpoint{0.5\@tempdima}{0.125\pgflinewidth}}
  {\pgfpoint{0.5\@tempdima}{0.125\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{0pt}{0.125\pgflinewidth}}
  \pgfusepathqstroke
}



% The halfs of the $\to$ arrow reversed

\pgfarrowsdeclare{left to reversed}{left to reversed}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \pgfarrowsleftextend{-.1\pgflinewidth}
  \@tempdimb=3.75\@tempdima\advance\@tempdimb by0.9\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundjoin
  \pgfsetbuttcap
  \pgfpathmoveto{\pgfpoint{0.5\pgflinewidth}{0pt}}
  \pgfpathlineto{\pgfpoint{-0.1\pgflinewidth}{0pt}}
  \pgfusepathqstroke
  \pgfsetroundcap
  \pgfsetlinewidth{.8\pgflinewidth}
  {\pgftransformxshift{0.625\pgflinewidth}
    \pgfpathmoveto{\pgfpoint{3.75\@tempdima}{4\@tempdima}}
    \pgfpathcurveto{\pgfpoint{3.5\@tempdima}{2.5\@tempdima}}{\pgfpoint{0.75\@tempdima}{0.25\@tempdima}}{\pgfpoint{0pt}{0.125\pgflinewidth}}
    \pgfpathmoveto{\pgfpoint{3.75\@tempdima}{4\@tempdima}}
    \pgfpathcurveto{\pgfpoint{3.5\@tempdima}{2.5\@tempdima}}{\pgfpoint{0.75\@tempdima}{0.25\@tempdima}}{\pgfpoint{0pt}{-0.125\pgflinewidth}}
  }
  \pgfusepathqstroke%
}

\pgfarrowsdeclare{right to reversed}{right to reversed}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \pgfarrowsleftextend{-.1\pgflinewidth}
  \@tempdimb=3.75\@tempdima\advance\@tempdimb by0.9\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.28pt%
  \advance\@tempdima by.3\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundjoin
  \pgfsetbuttcap
  \pgfpathmoveto{\pgfpoint{0.5\pgflinewidth}{0pt}}
  \pgfpathlineto{\pgfpoint{-0.1\pgflinewidth}{0pt}}
  \pgfusepathqstroke
  \pgfsetroundcap
  \pgfsetlinewidth{.8\pgflinewidth}
  {\pgftransformxshift{0.625\pgflinewidth}
    \pgfpathmoveto{\pgfpoint{3.75\@tempdima}{-4\@tempdima}}
    \pgfpathcurveto{\pgfpoint{3.5\@tempdima}{-2.5\@tempdima}}{\pgfpoint{0.75\@tempdima}{-0.25\@tempdima}}{\pgfpoint{0pt}{-0.125\pgflinewidth}}
    \pgfpathmoveto{\pgfpoint{3.75\@tempdima}{-4\@tempdima}}
    \pgfpathcurveto{\pgfpoint{3.5\@tempdima}{-2.5\@tempdima}}{\pgfpoint{0.75\@tempdima}{-0.25\@tempdima}}{\pgfpoint{0pt}{0.125\pgflinewidth}}
  }
  \pgfusepathqstroke%
}



% A left hook

\pgfarrowsdeclare{left hook}{left hook}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \pgfarrowsleftextend{-.5\pgflinewidth}
  \@tempdimb=3.75\@tempdima\advance\@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfpoint{0\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{0.75\@tempdima}{0\@tempdima}}
  \pgfpathcurveto{\pgfpoint{2.415\@tempdima}{0\@tempdima}}{\pgfpoint{3.75\@tempdima}{1.665\@tempdima}}{\pgfpoint{3.75\@tempdima}{3\@tempdima}}
  \pgfpathcurveto{\pgfpoint{3.75\@tempdima}{4.665\@tempdima}}{\pgfpoint{2.415\@tempdima}{6\@tempdima}}{\pgfpoint{0.75\@tempdima}{6\@tempdima}}
  \pgfusepathqstroke%
}

\pgfarrowsdeclarereversed{left hook reversed}{left hook reversed}{left hook}{left hook}



% A right hook

\pgfarrowsdeclare{right hook}{right hook}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \pgfarrowsleftextend{-.5\pgflinewidth}
  \@tempdimb=3.75\@tempdima\advance\@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfpoint{0\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{0.75\@tempdima}{0\@tempdima}}
  \pgfpathcurveto{\pgfpoint{2.415\@tempdima}{0\@tempdima}}{\pgfpoint{3.75\@tempdima}{-1.665\@tempdima}}{\pgfpoint{3.75\@tempdima}{-3\@tempdima}}
  \pgfpathcurveto{\pgfpoint{3.75\@tempdima}{-4.665\@tempdima}}{\pgfpoint{2.415\@tempdima}{-6\@tempdima}}{\pgfpoint{0.75\@tempdima}{-6\@tempdima}}
  \pgfusepathqstroke%
}

\pgfarrowsdeclarereversed{right hook reversed}{right hook reversed}{right hook}{right hook}


% Hooks in both directions

\pgfarrowsdeclare{hooks}{hooks}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \pgfarrowsleftextend{-.5\pgflinewidth}
  \@tempdimb=3.75\@tempdima\advance\@tempdimb by0.5\pgflinewidth%
  \pgfarrowsrightextend{\@tempdimb}
}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.2\pgflinewidth%
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfpoint{0\@tempdima}{0\@tempdima}}
  \pgfpathlineto{\pgfpoint{0.75\@tempdima}{0\@tempdima}}
  \pgfpathcurveto{\pgfpoint{2.415\@tempdima}{0\@tempdima}}{\pgfpoint{3.75\@tempdima}{1.665\@tempdima}}{\pgfpoint{3.75\@tempdima}{3\@tempdima}}
  \pgfpathcurveto{\pgfpoint{3.75\@tempdima}{4.665\@tempdima}}{\pgfpoint{2.415\@tempdima}{6\@tempdima}}{\pgfpoint{0.75\@tempdima}{6\@tempdima}}
  \pgfpathmoveto{\pgfpoint{0.75\@tempdima}{0\@tempdima}}
  \pgfpathcurveto{\pgfpoint{2.415\@tempdima}{0\@tempdima}}{\pgfpoint{3.75\@tempdima}{-1.665\@tempdima}}{\pgfpoint{3.75\@tempdima}{-3\@tempdima}}
  \pgfpathcurveto{\pgfpoint{3.75\@tempdima}{-4.665\@tempdima}}{\pgfpoint{2.415\@tempdima}{-6\@tempdima}}{\pgfpoint{0.75\@tempdima}{-6\@tempdima}}
  \pgfusepathqstroke%
}

\pgfarrowsdeclarereversed{hooks reversed}{hooks reversed}{hooks}{hooks}


% An arrow that looks like a serif of the computer modern font

\pgfarrowsdeclare{serif cm}{serif cm}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.45\pgflinewidth%
  \pgfarrowsleftextend{-.75\@tempdima}
  \pgfarrowsrightextend{.04\pgflinewidth}
}
{
  \@tempdima=0.4pt%
  \advance\@tempdima by.45\pgflinewidth%
  \pgftransformxshift{.04\pgflinewidth}
  \pgfpathmoveto{\pgfpoint{-.75\@tempdima}{.5\pgflinewidth}}
  \pgfpathcurveto
    {\pgfpoint{-.375\@tempdima}{.5\pgflinewidth}}
    {\pgfpoint{-.375\@tempdima}{.7\pgflinewidth}}
    {\pgfpoint{-.375\@tempdima}{1.95\@tempdima}}
  \pgfpathlineto{\pgfpoint{0pt}{1.95\@tempdima}}
  \pgfpathcurveto
    {\pgfpoint{-.04\pgflinewidth}{.5\@tempdima}}
    {\pgfpoint{-.04\pgflinewidth}{-.5\@tempdima}}
    {\pgfpoint{0pt}{-1.95\@tempdima}}  
  \pgfpathlineto{\pgfpoint{-.375\@tempdima}{-1.95\@tempdima}}  
  \pgfpathcurveto
    {\pgfpoint{-.375\@tempdima}{-.7\pgflinewidth}}
    {\pgfpoint{-.375\@tempdima}{-.5\pgflinewidth}}
    {\pgfpoint{-.75\@tempdima}{-.5\pgflinewidth}}
  \pgfpathclose
  \pgfusepathqfill
}



% Round cap

\pgfarrowsdeclare{round cap}{round cap}
{\pgfarrowsleftextend{0pt}\pgfarrowsrightextend{\pgflinewidth}}
{
  \pgfsetdash{}{0pt}
  \pgfsetroundcap
  \pgfpathmoveto{\pgfpointorigin}
  \pgfpathlineto{\pgfpoint{0.5\pgflinewidth}{0pt}}
  \pgfusepathqstroke
}


% Butt cap

\pgfarrowsdeclare{butt cap}{butt cap}
{\pgfarrowsleftextend{-.1\pgflinewidth}\pgfarrowsrightextend{.5\pgflinewidth}}
{
  \pgfsetdash{}{0pt}
  \pgfsetbuttcap
  \pgfpathmoveto{\pgfpoint{-.1\pgflinewidth}{0pt}}
  \pgfpathlineto{\pgfpoint{0.5\pgflinewidth}{0pt}}
  \pgfusepathqstroke
}



% 90 degrees cap

\pgfarrowsdeclare{triangle 90 cap}{triangle 90 cap}
{\pgfarrowsleftextend{-.1\pgflinewidth}\pgfarrowsrightextend{1\pgflinewidth}}
{
  \pgfpathmoveto{\pgfpoint{-.1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{.5\pgflinewidth}{.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{\pgflinewidth}{0pt}}
  \pgfpathlineto{\pgfpoint{.5\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{-.1\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfusepathqfill
}


% reversed 90 degrees cap

\pgfarrowsdeclare{triangle 90 cap reversed}{triangle 90 cap reversed}
{\pgfarrowsleftextend{-.1\pgflinewidth}\pgfarrowsrightextend{1\pgflinewidth}}
{
  \pgfpathmoveto{\pgfpoint{1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{-.1\pgflinewidth}{.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{-.1\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{0.5\pgflinewidth}{0\pgflinewidth}}
  \pgfusepathqfill
}



% fast

\pgfarrowsdeclare{fast cap}{fast cap}
{\pgfarrowsleftextend{-.1\pgflinewidth}\pgfarrowsrightextend{2\pgflinewidth}}
{
  \pgfpathmoveto{\pgfpoint{-.1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{.5\pgflinewidth}{.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1\pgflinewidth}{0\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{.5\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{-.1\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfpathclose
  \pgfpathmoveto{\pgfpoint{1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1.5\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{2\pgflinewidth}{0\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1.5\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1.5\pgflinewidth}{0\pgflinewidth}}
  \pgfpathclose
  \pgfusepathqfill
}


\pgfarrowsdeclare{fast cap reversed}{fast cap reversed}
{\pgfarrowsleftextend{-.1\pgflinewidth}\pgfarrowsrightextend{2\pgflinewidth}}
{
  \pgfpathmoveto{\pgfpoint{-.1\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1\pgflinewidth}{.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{.5\pgflinewidth}{0\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{-.1\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfpathclose
  \pgfpathmoveto{\pgfpoint{1.5\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{2\pgflinewidth}{0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1.5\pgflinewidth}{0\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{2\pgflinewidth}{-.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1.5\pgflinewidth}{-0.5\pgflinewidth}}
  \pgfpathlineto{\pgfpoint{1\pgflinewidth}{0\pgflinewidth}}
  \pgfpathclose
  \pgfusepathqfill
}


\endinput
