%% $Id: xy16textures.doc,v 3.3 1996/12/18 14:21:23 ross Exp $ %% %% Xy-pic ``Textures v1.6'' driver interface 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{16textures}{Textures v1.6 driver}{\stripRCS$Revision: 3.3 $}% {Ross Moore}{ross@mpce.mq.edu.au}% {Mathematics Department, Macquarie University, NSW~2109, Australia} \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This driver provides support for versions 1.5b and 1.6 of Blue Sky Research's \Textures\ application for Macintosh\footnote{Macintosh is a trademark of Apple Computer Inc.}. It incorporates support for \PS\ colour and the \Xy-ps \PS\ back-end. This will {\em not} work with versions 1.7 and later; these require the option |\xyoption{textures}|. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \paragraph*{Header:}\leavevmode \DOCHEADER \DOCMODE( \xydef@\oldTextures@@#1{\dvimessage@{Textures v1.6}{#1}} \newdriver{% \xyaddsupport{color}\oldtexturesColor@@ \xyaddsupport{crayon}\oldtexturesCrayon@@ \xyaddsupport{ps}\oldtexturesPS@@ \xyaddsupport{rotate}\oldtexturesRotate@@ \xyaddsupport{line}\oldtexturesLine@@ \xyaddsupport{frame}\oldtexturesFrames@@ \xyaddsupport{tile}\oldtexturesTiles@@ \xyaddsupport{cmtip}\relax } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Supported |\special| effects are... % \begin{itemize} \item colour, using \PS\ \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textures v1.6 cannot manage colours, except within imported graphics. It can put colours into the \PS\ output. \DOCMODE( \xydef@\oldTexturesColours@{\oldtexturesPStypes@ \let\xylocalColor@=\xyNoColor@@ \def\xycolor@{\xycolor@@}% \expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{% \xyinputorelse@{xyps-c}{\xydrivernoload@{ps-c}}% \installPScolor@ }\else\DN@{}\fi \next@ \ifx\xycolor@@\xyNoColor@ \let\xycolor@@=\xycolor@raw@@\fi \ifx\xycrayolaloaded\empty \DN@{\xystandardcolors@\oldtexturesCrayon@@{}}% \else\let\next@=\xystandardcolors@ \fi \next@ \let\xycolorwarning@=\relax \let\oldtexturesColor@@=\relax \let\UnloadColor@@=\NooldTexturesColor@ } \xydef@\oldtexturesColor@@{\oldTexturesColours@} \xydef@\NooldTexturesColor@{% \let\xylocalColor@=\xyNoColor@@ \let\xycolor@=\xyNoColor@ \let\xycolorwarning@=\xycolorwarning@@ \let\oldtexturesColor@@=\oldTexturesColours@ \let\UnloadColor@@=\UnloadColor@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item crayon colours. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The 68 colours are those that |dvips| recognizes by name, thanks to Tomas Rokicki. \DOCMODE( \xydef@\oldtexturesCrayon@@{\oldtexturesColor@@\oldtexturesCrayon@} \xydef@\oldtexturesCrayon@{\installCrayolaColors@}% \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item \PS\ back-end. \DOCMODE( \xydef@\oldtexturesPS@@{\oldtexturesPS@} \xydef@\oldtexturesPSunload@{\UnloadPS@ \ifx\xyrealshipout@\undefined\else \ifx\shipout\xyrealshipout@ \else \let\shipout=\xyrealshipout@\fi\fi \let\installxyps@@=\relax \let\UnloadPS@@=\UnloadPS@ \let\oldtexturesPS@@=\oldtexturesPS@ } \DOCMODE) \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% We must return the binding of |\shipout| to its initial value. \medskip Early versions (1.5--1.6) of \Textures\ have two kinds of |\special|, for inserting \PS\ code into the dvi-file and two more for reading such code from a file: % \begin{itemize} \item |\special{rawpostscript #1}| puts code directly into the \PS\ file. \item |\special{postscript #1}| wraps the code within |sps|...|eps|, which involves graphics state changes within a |gsave/grestore| pair. \end{itemize} Each of these has a corresponding version for reading the \PS\ commands from a file. \DOCMODE( \xydef@\oldTexturesSpecial@#1{\firstPS@@\special{postscript #1}} \xydef@\oldTexturesMacro@#1{\special{postscript {#1}xy}} \xydef@\oldTexturesInclude@#1{\firstPS@@\special{rawpostscriptfile #1}} \xydef@\oldTexturesRaw@#1{\firstPS@@\special{rawpostscript #1}} \xydef@\oldtexturesPStypes@{% \xyinputorelse@{xyps-ps}{\xydrivernoload@{ps-ps}}% \ifx\PSspecial@@\oldTexturesSpecial@\else \let\PSspecial@@=\oldTexturesSpecial@ \let\PSmacro@@=\oldTexturesMacro@ \let\PSdict@@=\oldTexturesRaw@ \let\PSraw@@=\oldTexturesRaw@ \let\PSinclude@@=\oldTexturesInclude@ \let\PSspecialdict@@=\oldTexturesRaw@ \let\xyPSobeylines@@=\obeyoldTextureslines@ \oldTextures@@{PostScript}% \fi % \xyinputorelse@{xyps-ps}{\xydrivernoload@{ps-ps}}% \oldtexturesCurrpt@ \@PSshipout } {\catcode`\^^M=\active % \gdef\next{\catcode`\^^M=\active \let^^M=\par \obeyspaces}} \xylet@\obeyoldTextureslines@=\next \DOCMODE) The |currentpoint| is defined for the ``raw'' specials. For Textures this is the same as |\xyPScurrpt@@@|, in |xyps-ps.doc|. \DOCMODE( \xydef@\oldtexturesCurrpt@{\let\xyPScurrpt@@=\oldtexturesCurrpt@@}% \xydef@\oldtexturesCurrpt@@{\PSspecial@@{xyi}\PSraw@@{userdict begin xyx end}} \DOCMODE) The \PS\ operator called |xyx| is defined in |xyps-ps| for storing the location placed on the stack by |xyi|. \medskip \Textures~v1.6 requires the \PS\ dictionary to be shipped-out with every page. To achieve this efficiently we rebind |\shipout|, as described in |xyps-ps.doc|. Next set the flag |\UsePSdict@@true| after having rebound |\includePSmessage@| to gobble the attempt to load the dictionary directly into the dvi-file. This installs the \PS\ backend. \DOCMODE( \xydef@\oldtexturesPS@{\oldtexturesPStypes@ \let\oldtexturesPS@@=\relax \let\UnloadPS@@=\oldtexturesPSunload@ \let\installxyps@@=\@PSshipout \installxyps@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item rotated/scaled diagrams and text, using \PS. \DOCMODE( \xydef@\oldtexturesRotate@@{\oldtexturesRotate@} \xydef@\oldtexturesRotate@{\oldtexturesPStypes@ \expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{% \xyinputorelse@{xyps-r}{\xydrivernoload@{ps-r}}% \xyRotScale@@ \installPSrotscale@ }% \else\DN@{\xydriverfail@{rotations are}\UnloadRotate@\relax}\fi \next@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item variable line-widths and poly-lines, using \PS. \DOCMODE( \xydef@\oldtexturesLine@@{\oldtexturesLine@} \xydef@\oldtexturesLine@{\oldtexturesPStypes@ \expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{% \xyinputorelse@{xyps-l}{\xydrivernoload@{ps-l}}% \installPSline@ }% \else\DN@{\xydriverfail@{line-styles are}\UnloadLine@\relax}\fi \next@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item extra frames and fills, using \PS. \DOCMODE( \xydef@\oldtexturesFrames@@{\oldtexturesFrames@} \xydef@\oldtexturesFrames@{\oldtexturesPStypes@ \expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{% \xyinputorelse@{xyps-f}{\xydrivernoload@{ps-f}}% \installPSframes@ }% \else\DN@{\xydriverfail@{frames are}\UnloadPSFrames@\relax}\fi \next@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item patterns and tiles, using \PS. \DOCMODE( \xydef@\oldtexturesTiles@@{\oldtexturesTiles@} \xydef@\oldtexturesTiles@{\oldtexturesPStypes@ \expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{% \xyinputorelse@{xyps-t}{\xydrivernoload@{ps-t}}% \installPSpatterns@ \xystandardpatterns@}% \else\DN@{\xydriverfail@{Patterns are}\UnloadPSpatterns@\relax}\fi \next@ } \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{itemize} \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \paragraph*{The end \& Log}\leavevmode \DOCMODE( \xyendinput % $Log: xy16textures.doc,v $ % Revision 3.3 1996/12/18 14:21:23 ross % Ross's version % % Revision 3.3.1.1 1996/12/18 08:45:28 ross % *** empty log message *** % % Revision 3.2 1995/09/19 18:20:20 ross % Bug fix release. % % Revision 3.1 1995/09/05 20:36:33 ross % Release! % % Revision 3.0 1995/07/07 20:13:19 ross % Major release w/new User's Guide! % % Revision 2.13 1995/07/04 15:04:51 ross % Ready for release of v3. % % NEW for version 3. \DOCMODE) \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput % Tell Emacs that this is a LaTeX document and how it is formatted: % Local Variables: % mode:latex % fill-column:77 % End: