%% xydvitops.tex from $Id: xydvitops.doc,v 3.3 1996/12/18 09:14:36 ross Exp $
%%
%% Xy-pic ``DVITOPS-driver'' option.
%% Copyright (c) 1995-1996 Ross Moore <[email protected]>
%%
%% 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-1996 Kristoffer H. Rose <[email protected]>
%%
%% 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{dvitops}{DVITOPS driver}{\stripRCS$Revision: 3.3 $}%
{Ross Moore}{[email protected]}%
{Mathematics Department, Macquarie University, NSW~2109, Australia}
\xydef@\dvitops@@#1{\dvimessage@{DVITOPS}{#1}}
\newdriver{%
\xyaddsupport{color}\dvitopsColor@@
\xyaddsupport{crayon}\dvitopsCrayon@@
\xyaddsupport{ps}\dvitopsPS@@
\xyaddsupport{rotate}\dvitopsRotate@@
\xyaddsupport{line}\dvitopsLine@@
\xyaddsupport{frame}\dvitopsFrames@@
\xyaddsupport{tile}\dvitopsTiles@@
\xyaddsupport{cmtip}\relax
}
\xydef@\dvitopsColor@@{\dvitops@Color@}
\xydef@\dvitops@Color@{\dvitopsPStypes@
\let\xylocalColor@=\xyDVITOPScolor@
\let\xycolor@push\xycolor@push@@
\def\xycolor@{\xycolor@@}\let\xycolorwarning@=\relax
\expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{%
\xyinputorelse@{xyps-c}{\xydrivernoload@{ps-c}}\xycatcodes
\installPScolor@ }\else\DN@{}\fi \next@
\ifx\xycolor@@\xyNoColor@ \let\xycolor@@=\xycolor@raw@@\fi
\ifx\xycrayolaloaded\empty \DN@{\xystandardcolors@\dvitopsCrayon@{}}%
\else\let\next@=\xystandardcolors@
\fi \next@
\let\dvitops@Color@@=\relax
\let\UnloadColor@@=\NoDVITOPScolor@
}%
\xydef@\NoDVITOPScolor@{%
\def\xycolor@{\xycolor@@}%
\let\xycolor@@=\xyNoColor@
\let\xylocalColor@=\xyNoColor@@
\let\xycolorwarning@=\xycolorwarning@@
\let\dvitops@Color@@=\dvitops@Color@
}
\xydef@\xyDVITOPScolor@{\bgroup \DN@##1##2{\egroup}%
\ifInvisible@\else\ifHidden@\else\DNii@{\no@@}\ifx\nextii@\Connect@@
\else\DN@{\xyDVITOPScolor@i}\fi\fi\fi \next@ }
\xydef@\xyDVITOPScolor@i#1#2{\checkXyStyle@
\DN@{#2}\ifx\next@\empty
\def\tmp@##1{\DN@{\xycolor@begin##1\xycolor@end{#1}}}%
\else\DNii@{gray}\ifx\next@\nextii@
\def\tmp@##1{\DN@{\xycolor@begin##1\xycolor@end{gray}{#1}}}%
\else\DNii@{rgb}\ifx\next@\nextii@
\def\tmp@##1{\DN@{\xycolor@begin##1\xycolor@end{rgbcolor}{#1}}}%
\else\DNii@{hsb}\ifx\next@\nextii@
\def\tmp@##1{\DN@{\xycolor@begin##1\xycolor@end{hsbcolor}{#1}}}%
\else \DN@{\xywarning@{DVITOPS cannot support color: #2 #1}}%
\fi\fi\fi\fi
\toks@={\egroup \let\xy@style@=\relax \def\Drop@@}%
\expandafter\tmp@\expandafter{\Drop@@}%
\expandafter\addtotoks@\expandafter{\expandafter{\next@}\def\Connect@@}%
\expandafter\tmp@\expandafter{\Connect@@}%
\expandafter\addtotoks@\expandafter{\expandafter{\next@}}%
\the\toks@ }%
\xydef@\xycolor@begin{\dvitopsBegin@{color}}
\xydef@\xycolor@end{\dvitopsEnd@{color}\dvitopsColor@x}
\xydef@\dvitopsCrayon@@{\dvitopsColor@@\dvitopsCrayon@}
\xydef@\dvitopsCrayon@{\installCrayolaColors@}%
\xydef@\dvitopsPS@@{\dvipsPS@}
\xydef@\dvitopsPS@unload{\UnloadPS@
\let\UnloadPS@@=\UnloadPS@
\let\dvitopsPS@@=\dvitopsPS@ }
\xydef@\dvitopsPStypes@{%
\xyinputorelse@{xyps-ps}{\xydrivernoload@{ps-ps}}%
\ifx\PSspecial@@\dvitopsSpecial@\else
\let\PSspecial@@=\dvitopsSpecial@
\let\PSmacro@@=\dvitopsMacro@
\let\PSdict@@=\dvitopsDict@
\let\PSspecialdict@@=\dvitopsDict@
\let\PSraw@@=\dvitopsRaw@
\let\PSinclude@@=\dvitopsInclude@
\let\xyPSobeylines@@=\obeyDVIPSlines@
\let\xyPScurrpt@@=\dvitopsCurrpt@@
\dvitops@@{PostScript}%
\fi
\XYpredict@ }
\xywarnifdefined\dvitopsSpecial@
\xywarnifdefined\dvitopsMacro@
\xywarnifdefined\dvitopsDict@
\xywarnifdefined\dvitopsInclude@
\xywarnifdefined\dvitopsRaw@
\xywarnifdefined\dvitopsOrigin@
\xywarnifdefined\dvitopsBegin@
\xywarnifdefined\dvitopsEnd@
\xywarnifdefined\dvitopsRotate@x
\xywarnifdefined\dvitopsTransform@x
\xywarnifdefined\dvitopsColor@x
{\catcode`\:=11
\gdef\dvitopsSpecial@#1{\special{dvitops: inline #1}}
\gdef\dvitopsMacro@#1{\special{dvitops: inline {#1}xy}}
\gdef\dvitopsDict@#1{\special{dvitops: inline #1}}
\gdef\dvitopsInclude@#1{\special{dvitops: prolog #1}}
\gdef\dvitopsRaw@#1{\special{dvitops: inline #1}}
\gdef\dvitopsOrigin@#1{\special{dvitops: origin #1}}
\gdef\dvitopsBegin@#1{\special{dvitops: begin #1}}
\gdef\dvitopsEnd@#1{\special{dvitops: end #1}}
\gdef\dvitopsRotate@x#1{\special{dvitops: rotate #1}}
\gdef\dvitopsTransform@x#1{\special{dvitops: transform #1}}
\gdef\dvitopsColor@x#1#2{\special{dvitops: #1 color #2}}
}
\catcode`\^^M=\active
\gdef\next{\catcode`\^^M=\active \let^^M=\space }}%
\xylet@\obeyDVIPSlines@=\next
\xydef@\dvitopsCurrpt@{\global\let\xyPScurrpt@@=\relax}%
\xydef@\dvitopsPS@{\dvitopsPStypes@
\let\installxyps@@=\relax \installxyps@ }
\xydef@\dvitopsRotate@@{\dvitopsRotate@}
\xydef@\dvitopsRotate@{\dvitopsPStypes@
\expandafter\ifx\csname xyps-psloaded\endcsname\empty
\DN@{\xyinputorelse@{xyps-r}{\xydrivernoload@{ps-r}}%
\installDVITOPSrotate@ }%
\else\DN@{\xydriverfail@{rotations are}\UnloadRotate@\relax}\fi
\next@ }
\xydef@\dvitopsRotScale@{%
\def\xyrot@start{\dvitopsBegin@{rot}\dvitopsOrigin@{rot}}%
\def\xyrot@end(##1){\dvitopsEnd@{rot}\dvitopsRotate@x{##1}}%
\def\xyscale@start{\dvitopsBegin@{scal}\dvitopsOrigin@{scal}}%
\def\xyscale@end(##1,##2){%
\dvitopsEnd@{scal}\dvitopsTransform@x{##1 0 ##2 0}}%
}
\xydef@\installDVITOPSrotate@{\installPSstyle@
\let\xyRotate@@=\dvitopsRotate@
\let\doSpecialRotate@@=\dvitopsSpecialRotate@
\let\xyscale@@=\dvitopsScale@
\dvitopsCurrpt@
\dvitopsRotScale@ \xyPSshapes@true }
\xydef@\UnloadDVITOPSrotate@{\UnloadRotate@\relax}
\xydef@\dvitopsRotate@#1{\xyPSsplitPS@
{\dvitopsBegin@{rot}\dvitopsOrigin@{rot}}%
{\dvitopsEnd@{rot}\dvitopsRotate@x{#1}}}%
\xydef@\dvitopsScale@#1#2{\xyPSsplitPS@
{\dvitopsBegin@{scal}\dvitopsOrigin@{scal}}%
{\dvitopsEnd@{scal}\dvitopsTransform@x{#1 0 #2 0}}}
\xydef@\dvitopsSpecialRotate@#1@@{\dvitopsRotate@{#1}}
\xydef@\dvitopsLine@@{\dvitopsLine@}
\xydef@\dvitopsLine@{\dvitopsPStypes@
\expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{%
\xyinputorelse@{xyps-l}{\xydrivernoload@{ps-l}}\installPSline@ }%
\else\DN@{\xydriverfail@{line-widths are}\UnloadLine@\relax}\fi
\next@ }
\xydef@\dvitopsFrames@@{\dvitopsFrames@}
\xydef@\dvitopsFrames@{\dvitopsPStypes@
\expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{%
\xyinputorelse@{xyps-f}{\xydrivernoload@{ps-f}}\installPSframes@ }%
\else\DN@{\xydriverfail@{frames are}\UnloadFrames@\relax}\fi
\next@ }
\xydef@\dvitopsTiles@{\dvitopsPStypes@
\expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{%
\xyinputorelse@{xyps-t}{\xydrivernoload@{ps-t}}\installPSpatterns@ }%
\else\DN@{\xydriverfail@{Patterns are}\UnloadPSpatterns@\relax}\fi
\next@ }
\xydef@\dvitopsTPIC@@{\dvitopsTPIC@}
\xydef@\dvitopsTPIC@{\setupxyTPIC@}
\xyendinput
|