summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xypic/xyrotate.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-12 23:46:03 +0000
committerKarl Berry <karl@freefriends.org>2006-01-12 23:46:03 +0000
commit873660d1a83ece926fe7206288dda9c36b349c1b (patch)
treea48f77125c309a355b5d0eb58d6b24446abe9d62 /Master/texmf-dist/tex/generic/xypic/xyrotate.tex
parent2939242967231097459df0fc3150fabc2f639111 (diff)
generic 1
git-svn-id: svn://tug.org/texlive/trunk@613 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xypic/xyrotate.tex')
-rw-r--r--Master/texmf-dist/tex/generic/xypic/xyrotate.tex162
1 files changed, 162 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/xypic/xyrotate.tex b/Master/texmf-dist/tex/generic/xypic/xyrotate.tex
new file mode 100644
index 00000000000..0b9bb2f8b27
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/xypic/xyrotate.tex
@@ -0,0 +1,162 @@
+%% xyrotate.tex from $Id: xyrotate.doc,v 3.3 1996/12/18 09:40:16 ross Exp $
+%%
+%% Xy-pic ``Rotate and Scale extension'' option.
+%% Copyright (c) 1993-1996 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-1996 Kristoffer H. Rose <krisrose@brics.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{rotate}{Rotate and Scale extension}{\stripRCS$Revision: 3.3 $}%
+ {Ross Moore}{ross@mpce.mq.edu.au}%
+ {Mathematics Department, Macquarie University, NSW~2109, Australia}
+\xydef@\xyundefinedRotate@#1#2@@{%
+ \xywarning@{The #1 #2 effect is not implemented with the current driver.}}%
+\xydef@\NoResizing{\xyNoResizing@}
+\xydef@\UseResizing{\xyUseResizing@}
+\xydef@\xyNoResizing@{%
+ \global\let\origxyrescale@=\xyrescale@
+ \global\let\origxyrotSizeMod@=\xyrotateSizeMod@
+ \global\let\xyNoResizing@=\xyNoResizing@@
+ \global\let\xyUseResizing@=\xyUseResizing@@
+ \xyNoResizing@@ }
+\xydef@\xyNoResizing@@{%
+ \global\let\xyrescale@=\xyignorescale@
+ \global\let\xyrotateSizeMod@=\xyignoreSizeMod@
+ }
+\xylet@\xyUseResizing@=\relax
+\xydef@\xyUseResizing@@{%
+ \global\let\xyrescale@=\origxyrescale@
+ \global\let\xyrotateSizeMod@=\origxyrotSizeMod@
+ }
+\xydefcsname@{shape [@...]}#1{\xyrotatechar@#1@@}%
+\xydefcsname@{shape [<...]}#1{\xyshearchar@{#1}@@}%
+\xydefcsname@{shape [*...]}#1{\xyscalechar@{#1}@@}%
+\xydefcsname@{shape [left]}{\xyshape@left@}
+\xydefcsname@{shape [right]}{\xyshape@right@}
+\xydefcsname@{shape [flip]}{\xyshape@flip@}
+\xydefcsname@{shape [halfsize]}{\xyshape@halfsize@}
+\xydefcsname@{shape [dblsize]}{\xyshape@dblsize@}
+\xydefcsname@{shape [vflip]}{\xyshape@vflip@}
+\xydefcsname@{shape [hflip]}{\xyshape@hflip@}
+\xydef@\preXYtransform@{}
+\xydef@\postXYtransform@{}
+\xywarnifdefined\preXYtransform@@
+\xywarnifdefined\postXYtransform@@
+ \gdef\preXYtransform@@{}
+ \gdef\postXYtransform@@{}
+\xydef@\xy@transform@{}
+\xydef@\preShape@@{}
+\xydef@\postShape@@{}
+\xydef@\modXYtransform@{%
+ \ifx\xy@transform@\empty
+ \transformDrop@\transformConnect@\resetTransform@\fi
+ \DN@##1{\expandafter\def\expandafter\tmp@\expandafter{##1}}%
+ \expandafter\next@\expandafter{\preShape@@}%
+ \DN@##1{\expandafter\gdef\expandafter\preXYtransform@@\expandafter{%
+ \tmp@ ##1}}\expandafter\next@\expandafter{\preXYtransform@@}%
+ \DN@##1{\expandafter\def\expandafter\tmp@\expandafter{##1}}%
+ \expandafter\next@\expandafter{\postShape@@}%
+ \DN@##1{\expandafter\gdef\expandafter\postXYtransform@@\expandafter{%
+ \postXYtransform@@ ##1}}\expandafter\next@\expandafter{\tmp@}}%
+\xydef@\transformDrop@{\let\xy@transform@=\relax
+ \expandafter\def\expandafter\Drop@@\expandafter{%
+ \expandafter\preXYtransform@\Drop@@\postXYtransform@}}
+\xydef@\transformConnect@{\let\xy@transform@=\relax
+ \expandafter\def\expandafter\Connect@@\expandafter{%
+ \expandafter\preXYtransform@\Connect@@\postXYtransform@}}
+\xydef@\resetTransform@{\gdef\preXYtransform@@{}\gdef\postXYtransform@@{}}
+\xydef@\xynametransform@#1{%
+ \DN@{\expandafter\gdef\expandafter#1\expandafter{\the\toks@}}\next@ }
+\xydef@\xyscalechar@#1@@{\xyscalechars@#1,#1,@@}
+\xydef@\xyscalechars@#1,#2,#3@@{%
+ \DN@{\xyrescale@(#1,#2)}%
+ \dimen@=#1\p@
+ \ifdim\dimen@>\z@ \else \ifdim\dimen@<\z@ \else
+ \DN@{\xywarning@{invalid scaling factors #1, #2}}%
+ \fi\fi \dimen@=#2\p@
+ \ifdim\dimen@>\z@ \else \ifdim\dimen@<\z@ \else
+ \DN@{\xywarning@{invalid scaling factors #1, #2 }}%
+ \fi\fi \next@ }
+\xydef@\xyrescale@(#1,#2){%
+ \setboxz@h{\xyscale@@{#1}{#2}%
+ \dimen@=\ifx-#1\R@c\advance\dimen@-\R@c \dimen@=-\dimen@
+ \else#1\L@c \advance\dimen@-\L@c\fi
+ \kern\dimen@\boxz@\kern-\dimen@}%
+ \R@c=\if-#1\L@c\else#1\R@c\fi
+ \L@c=\if-#1\R@c\else#1\L@c\fi
+ \U@c=\if-#2\D@c\else#2\U@c\fi
+ \D@c=\if-#2\U@c\else#2\D@c\fi }
+\xydef@\xyignorescale@(#1,#2){\xywarning@{Ignoring rescale: #1,#2}%
+ \setboxz@h{\xyscale@@{#1}{#2}\boxz@}}%
+\xydef@\xyshape@halfsize@{\xyrescale@(.5,.5)}
+\xydef@\xyshape@dblsize@{\xyrescale@(2,2)}
+\xydef@\xyshape@flip@{\xyrescale@(-1,-1)}
+\xydef@\xyshape@vflip@{\xyrescale@(1,-1)}
+\xydef@\xyshape@hflip@{\xyrescale@(-1,1)}
+\xydef@\xyrotatechar@{\bgroup
+ \afterDIRECTIONorEMPTY{\xyrotateSizeMod@}{\xyFN@\xySpecialRotate@i}}
+\xydef@\xySpecialRotate@i{%
+ \ifx \space@\next \expandafter\DN@\space{\xyFN@\xySpecialRotate@i}%
+ \else\ifx @\next \let\next@=\xyrotateSizeMod@
+ \else\addEQ@\ifx \next
+ \addEQ@\DN@##1@@{%
+ \expandafter\xynametransform@\csname shape [##1]\endcsname\egroup}%
+ \else\ifx !\next \DN@!{\egroup\getSpecialRotate@}%
+ \else\ifx *\next \DN@*@@{\egroup\transformDrop@}%
+ \else \DN@{\xySpecialRotate@@}%
+ \fi\fi\fi\fi\fi \next@ }
+\xydef@\getSpecialRotate@{\doSpecialRotate@@}
+\xydef@\xyRotate@#1{\xyundefinedRotate@{rotate}{#1}@@}
+\xydef@\xySpecialRotate@#1@@{\xyundefinedRotate@{rotate}{#1}@@\egroup}
+\xydef@\doSpecialRotate@#1@@{\xyundefinedRotate@{special rotate}{#1}@@}
+\xydef@\xyscale@#1#2{\xyundefinedRotate@{scale}{#1,#2}@@}
+\xydef@\UnloadRotate@#1{%
+ \ifx#1\relax\else\xyunload@{rotation extension}\fi
+ \let\xyRotate@@=\xyRotate@
+ \let\xySpecialRotate@@=\xySpecialRotate@
+ \let\doSpecialRotate@@=\doSpecialRotate@
+ \let\xyscale@@=\xyscale@ }
+\UnloadRotate@\relax
+\xyaddunsupport{rotate}{\UnloadRotate@\relax}
+\xydef@\xyrotateSizeMod@ @@{%
+ \L@p=\L@c \R@p=\R@c \U@p=\U@c \D@p=\D@c
+ \ifdim\cosDirection\p@>\z@
+ \R@c=\cosDirection\R@p \L@c=\cosDirection\L@p
+ \U@c=\cosDirection\U@p \D@c=\cosDirection\D@p
+ \else
+ \R@c=\cosDirection\L@p \L@c=\cosDirection\R@p
+ \U@c=\cosDirection\D@p \D@c=\cosDirection\U@p
+ \fi
+ \advance\L@c \if-\sinDirection\D@p\else\sinDirection\U@p\fi
+ \advance\R@c \if-\sinDirection\U@p\else\sinDirection\D@p\fi
+ \advance\U@c \if-\sinDirection\L@p\else\sinDirection\R@p\fi
+ \advance\D@c \if-\sinDirection\R@p\else\sinDirection\L@p\fi
+ \dimen@ii=\L@c \advance\dimen@ii-\L@p
+ \edef\tmp@{\egroup \L@c=\the\L@c \R@c=\the\R@c \U@c=\the\U@c \D@c=\the\D@c
+ \dimen@ii=\the\dimen@ii \noexpand\setboxz@h\bgroup
+ \noexpand\xyRotate@@{\the\Direction}}\tmp@
+ \xydropRotated@ }
+\xydef@\xydropRotated@@{%
+ \kern\dimen@ii \boxz@ \kern-\dimen@ii \modXYtransform@ \egroup }
+\xylet@\xydropRotated@=\xydropRotated@@
+\xydef@\xyignoreSizeMod@ @@{\xywarning@{Ignoring rotation}}
+\xydef@\xyshape@left@{\xyrotatechar@ v(0,1)@@}
+\xydef@\xyshape@right@{\xyrotatechar@ v(0,-1)@@}
+\xydef@\xyshearchar@{\xyundefinedRotate@{shearing}}
+\xyendinput