%% $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 %% %% 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 %% %% 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}{ross@mpce.mq.edu.au}% {Mathematics Department, Macquarie University, NSW~2109, Australia} \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\DVITOPS{{\sc dvitops}} This file provides support for the \DVITOPS\ driver by James Clark. As of September 1995, it has not been fully tested. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \paragraph*{Header:}\leavevmode \DOCHEADER \DOCMODE( \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{tpic}\dvitopsTPIC@@ \xyaddsupport{cmtip}\relax } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Supported |\special| effects are... % \begin{itemize} \item colour, using direct color specials for |gray|, |rgb| and |hsb| colour models; and \PS\ colour within diagrams; \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DVITOPS\ has a method for using colours locally, however it only colours ``regions'', which cannot be nested. To use this within \Xy-pic\ diagrams would be just asking for trouble. \DOCMODE( \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@ } \DOCMODE) \DOCMODE( \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} \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item crayon colours. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The 68 colours are those that |dvips| recognizes by name, thanks to Tomas Rokicki. \DOCMODE( \xydef@\dvitopsCrayon@@{\dvitopsColor@@\dvitopsCrayon@} \xydef@\dvitopsCrayon@{\installCrayolaColors@}% \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item \PS\ back-end. \DOCMODE( \xydef@\dvitopsPS@@{\dvipsPS@} \xydef@\dvitopsPS@unload{\UnloadPS@ \let\UnloadPS@@=\UnloadPS@ \let\dvitopsPS@@=\dvitopsPS@ } \DOCMODE) \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DVITOPS\ has two kinds of |\special| which can be used; `inline' and `prolog' for including header files. Also there are the `begin' and `end' types for defining regions. \DOCMODE( \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 % \xyinputorelse@{xyps-ps}{\xydrivernoload@{ps-ps}}% \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 \DOCMODE) Rotations and transformations use a different mechanism, so |\xyPScurrpt@@| can be set to |\relax|. \DOCMODE( \xydef@\dvitopsCurrpt@{\global\let\xyPScurrpt@@=\relax}% \DOCMODE) \medskip This installs the \PS\ backend. \DOCMODE( \xydef@\dvitopsPS@{\dvitopsPStypes@ \let\installxyps@@=\relax \installxyps@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item rotated/scaled diagrams and text, using \DVITOPS\ specials; however these may not be nested. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DOCMODE( \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} \DOCMODE) \DOCMODE( \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}} \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item variable line-widths and poly-lines, using \PS. \DOCMODE( \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@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item extra frames and fills, using \PS. \DOCMODE( \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@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item patterns and tiles, using \PS\ \DOCMODE( \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@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item \TPIC\ drawing commands. \DOCMODE( \xydef@\dvitopsTPIC@@{\dvitopsTPIC@} \xydef@\dvitopsTPIC@{\setupxyTPIC@} \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{itemize} \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \paragraph*{The end \& Log}\leavevmode \DOCMODE( \xyendinput % $Log: xydvitops.doc,v $ % Revision 3.3 1996/12/18 09:14:36 ross % minor improvements to file-loading commands % % Revision 3.2 1995/09/19 18:21:41 ross % Bug fix release. % % Revision 3.1 1995/09/05 20:28:57 ross % Releasing version 3.1! % % NEW for version 3. \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Tell Emacs that this is a LaTeX document and how it is formatted: % Local Variables: % mode:latex % fill-prefix:"\t" % fill-column:77 % paragraph-separate:"^[ \t\f]*$\\|^[^\t]\\|\\\\\\\\\\|\\$\\$\\|[^\n\\\\][%&]" % paragraph-start:"^[ \t\f]*$\\|^[^\t]\\|\\\\\\\\\\|\\$\\$\\|[^\n\\\\][%&]" % End: