%% xyline.tex from $Id: xyline.doc,v 2.12 1994/10/25 03:01:14 ross Exp $
%%
%% XY-pic ``Line Styles'' extension.
%% Copyright (c) 1993-1994 Ross Moore <ross@mpce.mq.edu.au>
%%
%% This file is part of the XY-pic package for graphs and diagrams in TeX.
%% See the companion README and INSTALL files for further information.
%% Copyright (c) 1991-1994 Kristoffer H. Rose <kris@diku.dk>
%%
%% The XY-pic package is free software; you can redistribute it and/or modify
%% it under the terms of the GNU General Public License as published by the
%% Free Software Foundation; either version 2 of the License, or (at your
%% option) any later version.
%%
%% The XY-pic package is distributed in the hope that it will be useful, but
%% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
%% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
%% for more details.
%%
%% You should have received a copy of the GNU General Public License along
%% with this package; if not, write to the Free Software Foundation, Inc.,
%% 675 Mass Ave, Cambridge, MA 02139, USA.
%%
\ifx\xyloaded\undefined \input xy \fi
\xyprovide{line}{Line styles extension}{\stripRCS$Revision: 2.12 $}%
 {Ross Moore}{ross@mpce.mq.edu.au}%
 {Mathematics Department, Macquarie University, NSW~2109, Australia}
\xydefcsname@{*shapechar@|@}#1{\xyFN@\xywidthchar@#1@@}%
\xydefcsname@{*shape@thinner@}{\xyshape@thinner@}
\xydefcsname@{*shape@thicker@}{\xyshape@thicker@}
\xydef@\preXYstyle@{}
\xydef@\postXYstyle@{}
\xywarnifdefined\preXYstyle@@
\xywarnifdefined\postXYstyle@@
 \gdef\preXYstyle@@{}
 \gdef\postXYstyle@@{}
\xydef@\xy@style@{}
\xydef@\preStyle@@{}
\xydef@\postStyle@@{}
\xydef@\styleDrop@{\let\xy@style@=\relax
 \expandafter\def\expandafter\Drop@@\expandafter{%
 \expandafter\preXYstyle@\Drop@@\postXYstyle@}}
\xydef@\styleConnect@{\let\xy@style@=\relax
 \expandafter\def\expandafter\Connect@@\expandafter{%
 \expandafter\preXYstyle@\Connect@@\postXYstyle@}}
\xydef@\modXYstyle@{%
 \ifx\xy@style@\empty\styleDrop@\styleConnect@\resetlineStyle@\fi
 \DN@##1{\expandafter\def\expandafter\tmp@\expandafter{##1}}%
 \expandafter\next@\expandafter{\preStyle@@}%
 \DN@##1{\expandafter\gdef\expandafter\preXYstyle@@\expandafter{%
 \preXYstyle@@ ##1}}\expandafter\next@\expandafter{\tmp@}%
 \DN@##1{\expandafter\def\expandafter\tmp@\expandafter{##1}}%
 \expandafter\next@\expandafter{\postStyle@@}%
 \DN@##1{\expandafter\gdef\expandafter\postXYstyle@@\expandafter{%
 \tmp@ ##1}}\expandafter\next@\expandafter{\postXYstyle@@}}%
\xydef@\resetlineStyle@{\gdef\preXYstyle@@{}\gdef\postXYstyle@@{}}
\xydef@\xynamestyle@#1{\styleDrop@\styleConnect@
 \expandafter\DNii@\expandafter{\csname *shape@#1@\endcsname}%
 \expandafter\ifx\nextii@\relax\xywarning@{Defining new style [#1]}%
 \else\xywarning@{Redefining style [#1]}\fi
 \expandafter\xynamestyle@@\csname *shape@#1@\endcsname }
\xydef@\xynamestyle@@#1{%
 \expandafter\def\expandafter\tmp@\expandafter{\preXYstyle@@}%
 \DN@##1{\def\tmp@{\styleDrop@\styleConnect@\gdef\preXYstyle@@{##1}}}%
 \expandafter\next@\expandafter{\preXYstyle@@}%
 \DN@##1{\expandafter\gdef\expandafter#1\expandafter{\tmp@
 \gdef\postXYstyle@@{##1}}}%
 \expandafter\next@\expandafter{\postXYstyle@@}\DN@{}}
\xynew@{dimen}\xylinethick@ \xylinethick@=\xydashw@
\xydef@\xyshape@thicker@{\multiply\xylinethick@\tw@ \xylinewidth@}
\xydef@\xyshape@thinner@{\divide \xylinethick@\tw@ \xylinewidth@}
\xydef@\xywidthchar@{%
 \ifx \space@\next \expandafter\DN@\space{\xyFN@\xywidthchar@}%
 \else\ifx @\next \DN@ @@{\styleDrop@\styleConnect@}%
 \else\ifx *\next \DN@ *@@{\styleDrop@\styleConnect@}%
 \else\addEQ@\ifx \next \addEQ@\DN@##1@@{\xynamestyle@{##1}}%
 \else \DN@##1@@{\xylinethick@=##1\relax \xylinewidth@}%
 \fi\fi\fi\fi \next@}
\xydef@\xyundefinedLine@#1#2@@{%
 \xywarning@{The #1 #2 effect is not implemented with the current driver.}}%
\xydef@\xylinewidth@{%
 \xyundefinedLine@{linewidth}{\the\xylinethick@}@@}%
\xydef@\newxystyle#1#2#3{%
 \DN@{#3}\ifx\next@\empty
 \xydefcsname@{*shape@#1@}{\csname xyshape@#1@\endcsname}%
 \else \expandafter\def\csname*shape@#1@\endcsname{%
 \csname xyshape@#1@\endcsname}\fi
 \DN@{#2}\ifx\next@\empty
 \expandafter\def\csname xyshape@#1@\endcsname{%
 \xyundefinedLine@{#1}{}@@}%
 \else \expandafter\def\csname xyshape@#1@\endcsname{#2}\fi }
\newxystyle{black}{\relax}{}
\newxystyle{white}{\xyundefinedLine@{`white'}{}@@}{}
\newxystyle{gray}{\xyundefinedLine@{`gray'}{}@@}{}
\newxystyle{red}{\xyundefinedLine@{`red'}{}@@}{}
\newxystyle{blue}{\xyundefinedLine@{`blue'}{}@@}{}
\newxystyle{green}{\xyundefinedLine@{`green'}{}@@}{}
\newxystyle{cyan}{\xyundefinedLine@{`cyan'}{}@@}{}
\newxystyle{magenta}{\xyundefinedLine@{`magenta'}{}@@}{}
\newxystyle{yellow}{\xyundefinedLine@{`yellow'}{}@@}{}
\xyendinput
