diff options
author | Karl Berry <karl@freefriends.org> | 2008-02-23 00:49:54 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-02-23 00:49:54 +0000 |
commit | 4fc1af1461e934c39f8f5e10d5d8788681d82223 (patch) | |
tree | 7716e8a3e8787a3d11c5ce728d21b808f786ce7d /Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex | |
parent | 6f5a4edf390b6e05291d7a4b816782b14122a205 (diff) |
tikz/pgf 2.0 first attempt (22feb08)
git-svn-id: svn://tug.org/texlive/trunk@6741 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex | 589 |
1 files changed, 0 insertions, 589 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex b/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex deleted file mode 100644 index 4a9a23f0d2c..00000000000 --- a/Master/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +++ /dev/null @@ -1,589 +0,0 @@ -% Copyright 2006 by Till Tantau -% -% This file may be distributed and/or modified -% -% 1. under the LaTeX Project Public License and/or -% 2. under the GNU Public License. -% -% See the file doc/generic/pgf/licenses/LICENSE for more details. - -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfcoretransformations.code.tex,v 1.6 2007/06/07 07:41:10 tantau Exp $ - - -% Position transformations - -\newdimen\pgf@pt@x -\newdimen\pgf@pt@y - -\newdimen\pgf@pt@temp - -\newif\ifpgf@pt@identity -\pgf@pt@identitytrue - -\def\pgf@pt@aa{1.0} \def\pgf@pt@ab{0.0} -\def\pgf@pt@ba{0.0} \def\pgf@pt@bb{1.0} - - - -% Store the current transformation matrix in a macro. -% -% #1 = macro name -% -% Example: -% -% \pgfgettransform\mytransform - -\def\pgfgettransform#1{% - \edef#1{{\pgf@pt@aa}{\pgf@pt@ab}{\pgf@pt@ba}{\pgf@pt@bb}{\the\pgf@pt@x}{\the\pgf@pt@y}} -} - - -% Restore the current transformation matrix from a macro. -% -% #1 = macro name, previously used with \pgfgettransform -% -% Example: -% -% \pgfsettransform\mytransform - -\def\pgfsettransform#1{% - \edef\pgf@temp{#1}% - \expandafter\pgf@settransform\pgf@temp% -} -\def\pgf@settransform#1#2#3#4#5#6{% - \def\pgf@pt@aa{#1}% - \def\pgf@pt@ab{#2}% - \def\pgf@pt@ba{#3}% - \def\pgf@pt@bb{#4}% - \pgf@pt@x=#5% - \pgf@pt@y=#6% - \edef\pgf@idtest{#1,#2,#3,#4}% - \ifx\pgf@idtest\pgf@idmatrixtext% - \pgf@pt@identitytrue% - \else% - \pgf@pt@identityfalse% - \fi% -} - -\def\pgf@idmatrixtext{1.0,0.0,0.0,1.0} - - -% Transformation command -% -% #1 = x dimension -% #2 = y dimension -% -% Description: -% -% Applies the pgfs transformation matrix to the point (#1,#2). The -% result is once more stored in the point. -% -% -% Example: -% -% \pgf@pos@transform{\pgf@x}{\pgf@y} - -\def\pgf@pos@transform#1#2{% - \ifpgf@pt@identity% - \else% - \pgf@pt@temp=#1% - #1=\pgf@pt@aa#1% - \advance#1 by\pgf@pt@ba#2% - #2=\pgf@pt@bb#2% - \advance#2 by\pgf@pt@ab\pgf@pt@temp% - \fi% - \advance#1 by\pgf@pt@x% - \advance#2 by\pgf@pt@y% -} - - -% Invert the current transformation matrix -% -% Description: -% -% This command replaces the current transformation matrix by its -% inverse. The inversion is not very exact if the matrix is nearly -% singular. -% -% Example: -% -% \pgftransforminvert - -\def\pgftransforminvert{% - % First, invert the shift. That's easy - \pgf@pt@x=-\pgf@pt@x - \pgf@pt@y=-\pgf@pt@y - \ifpgf@pt@identity% - \else% - % Sigh. Have to calculate the inverse of the matrix. - % Start with determinant - % Matrix = (aa ab - % ba bb) - {% - \pgfutil@tempdima=\pgf@pt@aa pt% - \pgfutil@tempdima=\pgf@pt@bb\pgfutil@tempdima% aa * bb - \pgfutil@tempdimb=\pgf@pt@ba pt% - \pgfutil@tempdimb=\pgf@pt@ab\pgfutil@tempdimb% ba * ab - \advance\pgfutil@tempdima by -\pgfutil@tempdimb% aa*bb - ba*ab - % Invert - \pgfutil@tempdima=.125\pgfutil@tempdima% - \c@pgf@counta=\pgfutil@tempdima\relax% 8192*determinant - \pgfutil@tempdima=8192pt% - \divide\pgfutil@tempdima by\c@pgf@counta% - \pgf@x=\pgf@pt@bb\pgfutil@tempdima% bb/(det A) - \xdef\pgf@new@pt@aa{\pgf@sys@tonumber{\pgf@x}}% - \pgf@x=\pgf@pt@aa\pgfutil@tempdima% aa/(det A) - \xdef\pgf@new@pt@bb{\pgf@sys@tonumber{\pgf@x}}% - \pgfutil@tempdima=-\pgfutil@tempdima% - \pgf@x=\pgf@pt@ba\pgfutil@tempdima% -ba/(det A) - \xdef\pgf@new@pt@ba{\pgf@sys@tonumber{\pgf@x}}% - \pgf@x=\pgf@pt@ab\pgfutil@tempdima% -ab/(det A) - \xdef\pgf@new@pt@ab{\pgf@sys@tonumber{\pgf@x}}% - }% - \expandafter\def\expandafter\pgf@pt@aa\expandafter{\pgf@new@pt@aa}% - \expandafter\def\expandafter\pgf@pt@ab\expandafter{\pgf@new@pt@ab}% - \expandafter\def\expandafter\pgf@pt@ba\expandafter{\pgf@new@pt@ba}% - \expandafter\def\expandafter\pgf@pt@bb\expandafter{\pgf@new@pt@bb}% - \pgf@pt@temp=\pgf@pt@x% - \pgf@pt@x=\pgf@pt@aa\pgf@pt@x% - \advance\pgf@pt@x by\pgf@pt@ba\pgf@pt@y% - \pgf@pt@y=\pgf@pt@bb\pgf@pt@y% - \advance\pgf@pt@y by\pgf@pt@ab\pgf@pt@temp% - \fi% -} - - - - -% PGF-Level concatenation of the transformation matrix with a given -% matrix. -% -% #1 - #5 = a concatenation matrix (see pdf spec). Entry #5 is a -% translation point. -% -% Description: -% -% All coordinates given to subsequent path construction commands will -% be transformed additionally by the given transformation matrix. If -% the command is followed by a 6th argument, the transformation is -% only applied to this argument. -% -% -% Example: -% -% \pgftransformcm{1}{0}{0}{1}{\pgfpoint{100pt}{0pt}} % 100pt to the right. -% -% \pgftransformcm{2}{0}{0}{2}{\pgfpointorigin} % double in in size -% \pgfpathmoveto{\pgfpoint{0cm}{0cm}} -% \pgfpathlineto{\pgflineto{1cm}{1cm}} % actually 2cm/2cm - -\def\pgftransformcm#1#2#3#4#5{% - \edef\pgf@marshal{\noexpand\pgf@transformcm{#1}{#2}{#3}{#4}}% - \pgf@marshal{#5}% -} -\def\pgf@transformcm#1#2#3#4#5{% - {% - \pgf@process{#5}% - \pgf@xc=\pgf@x% - \pgf@yc=\pgf@y% - % - \pgf@x=#1pt% - \pgf@y=#2pt% - % - \pgf@xa=\pgf@pt@aa\pgf@x% - \advance\pgf@xa by \pgf@pt@ba\pgf@y% - % - \pgf@ya=\pgf@pt@ab\pgf@x% - \advance\pgf@ya by \pgf@pt@bb\pgf@y% - % - \pgf@x=#3pt% - \pgf@y=#4pt% - % - \pgf@xb=\pgf@pt@aa\pgf@x% - \advance\pgf@xb by \pgf@pt@ba\pgf@y% - % - \pgf@yb=\pgf@pt@ab\pgf@x% - \advance\pgf@yb by \pgf@pt@bb\pgf@y% - % - \pgf@x=\pgf@pt@aa\pgf@xc% - \advance\pgf@x by\pgf@pt@ba\pgf@yc% - \advance\pgf@x by\pgf@pt@x% - % - \pgf@y=\pgf@pt@ab\pgf@xc% - \advance\pgf@y by\pgf@pt@bb\pgf@yc% - \advance\pgf@y by\pgf@pt@y% - % - \global\pgf@x=\pgf@x% - \global\pgf@y=\pgf@y% - \xdef\pgf@tempaa{\pgf@sys@tonumber{\pgf@xa}}% - \xdef\pgf@tempab{\pgf@sys@tonumber{\pgf@ya}}% - \xdef\pgf@tempba{\pgf@sys@tonumber{\pgf@xb}}% - \xdef\pgf@tempbb{\pgf@sys@tonumber{\pgf@yb}}% - }% - \pgf@pt@x=\pgf@x% - \pgf@pt@y=\pgf@y% - \let\pgf@pt@aa=\pgf@tempaa% - \let\pgf@pt@ba=\pgf@tempba% - \let\pgf@pt@ab=\pgf@tempab% - \let\pgf@pt@bb=\pgf@tempbb% - \def\pgf@trans@idtest{#1,#2,#3,#4}% - \ifx\pgf@trans@idtest\pgf@trans@idtext% - \else% - \pgf@pt@identityfalse% - \fi% -} -\def\pgf@trans@idtext{1.0,0,0,1.0} - - - -% Transformation into a given triangle. The three corners of the -% triangle are called "origin", "x" and "y" are given. After this -% transformation has been applied, the canvas origin is at "origin", -% the vector (1pt,0pt) lies at "x" and the vector (0pt,1pt) lies at -% "y". -% -% #1 = origin -% #2 = x -% #3 = y -% -% Example: -% -% \pgftransformtriangle{\pgfpointorigin}{\pgfpoint{1cm}{1cm}}{\pgfpoint{-1cm}{1cm}} - -\def\pgftransformtriangle#1#2#3{% - \pgf@process{#2}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \pgf@process{#3}% - \pgf@xb=\pgf@x% - \pgf@yb=\pgf@y% - \pgf@process{#1}% - \advance\pgf@xa by-\pgf@x% - \advance\pgf@ya by-\pgf@y% - \advance\pgf@xb by-\pgf@x% - \advance\pgf@yb by-\pgf@y% - \pgftransformcm% - {\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}% - {\pgf@sys@tonumber\pgf@xb}{\pgf@sys@tonumber\pgf@yb}% - {\pgfpoint{\pgf@x}{\pgf@y}}% -} - - - -% Undo all transformations -% -% Example: -% -% \pgftansformreset - -\def\pgftransformreset{% - \pgf@pt@x=0pt% - \pgf@pt@y=0pt% - \def\pgf@pt@aa{1.0}% - \def\pgf@pt@ba{0.0}% - \def\pgf@pt@ab{0.0}% - \def\pgf@pt@bb{1.0}% - \pgf@pt@identitytrue% -} - - -% Undo all slanting/rotation, but not translations -% -% Example: -% -% \pgftansformreset - -\def\pgftransformresetnontranslations{% - \def\pgf@pt@aa{1.0}% - \def\pgf@pt@ba{0.0}% - \def\pgf@pt@ab{0.0}% - \def\pgf@pt@bb{1.0}% - \pgf@pt@identitytrue% -} - - - - -% Shifting command and environment -% -% #1 = vector by which all subsequent points should be moved. -% -% Example: -% -% \pgftansformshift{\pgfpoint{1cm}{1cm}} - -\def\pgftransformshift#1{\pgftransformcm{1.0}{0}{0}{1.0}{#1}} -\def\pgftransformxshift#1{\pgftransformcm{1.0}{0}{0}{1.0}{\pgfpoint{#1}{0pt}}} -\def\pgftransformyshift#1{\pgftransformcm{1.0}{0}{0}{1.0}{\pgfpoint{0pt}{#1}}} - - - - -% Scaling commands -% -% #1 = scaling for all subsequent points. -% -% Example: -% -% \pgftransformscale{2} -% \pgftransformxscale{2} -% \pgftransformyscale{2} - -\def\pgftransformscale#1{\pgftransformcm{#1}{0}{0}{#1}{\pgfpointorigin}} -\def\pgftransformxscale#1{\pgftransformcm{#1}{0}{0}{1.0}{\pgfpointorigin}} -\def\pgftransformyscale#1{\pgftransformcm{1.0}{0}{0}{#1}{\pgfpointorigin}} - - - -% Slanting commands -% -% #1 = slanting in x-direction. 1 means 45 degrees. -% -% Example: -% -% \pgftransformxslant{2} -% \pgftransformyslant{2} - -\def\pgftransformxslant#1{\pgftransformcm{1.0}{0}{#1}{1.0}{\pgfpointorigin}} -\def\pgftransformyslant#1{\pgftransformcm{1.0}{#1}{0}{1.0}{\pgfpointorigin}} - - - -% Rotation commands -% -% #1 = degrees for the rotation -% -% Example: -% -% \pgftransformrotate{30} - -\def\pgftransformrotate#1{% - \pgfmathparse{#1}% - \let\pgftransform@angle=\pgfmathresult% - \pgfmathsin@{\pgftransform@angle}% - \let\pgftransform@sin=\pgfmathresult% - \pgfmathcos@{\pgftransform@angle}% - \let\pgftransform@cos=\pgfmathresult% - \pgf@x=\pgftransform@sin pt% - \pgf@xa=-\pgf@x% - \pgftransformcm{\pgftransform@cos}{\pgftransform@sin}{\pgf@sys@tonumber{\pgf@xa}}{\pgftransform@cos}{\pgfpointorigin}% -} - - - -% The following if's have the following effect: -% -% \ifpgfslopedattime decides whether the coordinate system of an -% xxxattime transformation command should be rotated such that text -% drawn on the line should be tangent to the line -% -% \ifpgfallowupsidedowattime decides whether the transformation should -% be done in such a way that the text is always ``upright,'' that is, -% text drawn in this coordiante system is never upside-down. -% -% \ifpgfresetnontranslationattime decides whether the coordinate -% system of an xxxattime transformation command should be reset -% (concerning the non-translations) before a possible rotation is -% applied. This is useful, for example, if the main coordinate system -% is scaled by, say, a factor of 2 and you do not want that to apply -% to the text, but you do want the rotation to applyu. - -\newif\ifpgfslopedattime -\newif\ifpgfallowupsidedownattime -\newif\ifpgfresetnontranslationattime - - -% Transform to the coordinate system of a point on a line -% -% #1 = a time fraction of line where to put the label, where 0 means start, -% 1 means end, and for example 0.5 means the middle. -% #2 = start of line -% #3 = end of line -% -% Example: -% -% { -% \pgftransformlineattime{.5}{\pgfxy(0,0)}{\pgfxy(3,2)} -% \pgftext{Hi!} -% } -% -% { -% \pgftransformlineattime{.75}{\pgfxy(0,0)}{\pgfxy(3,2)} -% \pgftransformresetnontranslations -% \pgftext{Hi!} -% } -% -\def\pgftransformlineattime#1#2#3{% - \pgftransformshift{\pgfpointlineattime{#1}{#2}{#3}}% - \ifpgfresetnontranslationattime% - \pgftransformresetnontranslations% - \fi% - \ifpgfslopedattime% - \pgf@process{#2}% - \pgf@xa=\pgf@x% xb/yb = start point - \pgf@ya=\pgf@y% - \pgf@process{#3}% - \advance\pgf@x by-\pgf@xa% - \advance\pgf@y by-\pgf@ya% - \ifpgfallowupsidedownattime% - \else% - \ifdim\pgf@x<0pt% - \pgf@x=-\pgf@x% - \pgf@y=-\pgf@y% - \fi% - \fi% - \pgfpointnormalised{}% x/y = normalised vector - \pgf@ya=-\pgf@y% - \pgftransformcm% - {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}% - {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}% - \fi% -} - - - - -% Transform to the coordinate system of a point on a curve -% -% #1 = a time fraction of line where to put the label, where 0 means start, -% 1 means end, and for example 0.5 means the middle. -% #2 = start of line -% #3 = first control -% #4 = second control -% #5 = end of line -% -% Example: -% -% { -% \pgftransformlabel{.5}{\pgfxy(0,0)}{\pgfxy(3,2)} -% \pgftext{Hi!} -% } -% -% { -% \pgftransformlabel{.75}{\pgfxy(0,0)}{\pgfxy(3,2)} -% \pgftransformresetnontranslations -% \pgftext{Hi!} -% } -% -\def\pgftransformcurveattime#1#2#3#4#5{% - \pgfpointcurveattime{#1}{#2}{#3}{#4}{#5}% - \pgftransformshift{\pgfqpoint{\pgf@x}{\pgf@y}}% - \ifpgfresetnontranslationattime% - \pgftransformresetnontranslations% - \fi% - \ifpgfslopedattime% - \pgf@x=\pgf@xa% - \pgf@y=\pgf@ya% - \advance\pgf@x by-\pgf@xb% - \advance\pgf@y by-\pgf@yb% - \ifpgfallowupsidedownattime% - \else% - \ifdim\pgf@x<0pt% - \pgf@x=-\pgf@x% - \pgf@y=-\pgf@y% - \fi% - \fi% - \pgfpointnormalised{}% x/y = normalised vector - \pgf@ya=-\pgf@y% - \pgftransformcm% - {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}% - {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}% - \fi% -} - - - - - -% Transform to the coordinate system of an arrow at the end of the -% line going from point #1 to point #2 with the correct rotation. -% -% #1 = a start point an (invisible) line -% #2 = an end point an (invisible) line -% -% Example: -% -% \pgftransformarrow{\pgfpointorigin}{\pgfpoint{1cm}{0cm}} - -\def\pgftransformarrow#1#2{% - \pgftransformshift{#2}% - \pgf@process{#2}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \pgf@process{#1}% - \advance\pgf@xa by-\pgf@x% - \advance\pgf@ya by-\pgf@y% - \pgf@x=\pgf@xa% - \pgf@y=\pgf@ya% - \pgfpointnormalised{}% - \pgf@ya=-\pgf@y% - \pgftransformcm% - {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}% - {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfqpoint{0pt}{0pt}}% -} - - - -% Low-level transformations - -% Causes the current high-level transformation command to be applied -% to the low-level. -% -% Description: -% -% All subsequent drawing will be transformed additionally by the -% current high-level transformation. Thus, the high-level -% transformation becomes the low-level transformation. The high-level -% transformation is reset at this point. - -\def\pgflowlevelsynccm{% - \pgfsys@transformcm% - {\pgf@pt@aa}{\pgf@pt@ab}% - {\pgf@pt@ba}{\pgf@pt@bb}% - {\pgf@pt@x}{\pgf@pt@y}% - \pgftransformreset% - \pgf@relevantforpicturesizefalse% -} - - - -% Causes a transformation command to be applied to the ``lowlevel'' -% transformation matrix. -% -% #1 - a high-level transformation command -% -% Description: -% -% All subsequent drawing will be transformed additionally by the given -% transformation matrix. Note that PGF will no longer be able to -% ``keep track'' of the coordinates. Also, transformations are applied -% to *everything*, including line thickness and line endings. Most -% often, this is not desirable. -% -% Example: -% -% \pgflowlevel{\pgftransformcm{1}{0}{0}{1}{\pgfpoint{100pt}{0pt}}} % 100bp to the right. -% -% \begin{pgflowlevelscope}{\pgftransformcm{2}{0}{0}{2}{\pgfpointorigin}} % double in in size -% \pgfmoveto{\pgfpoint{0cm}{0cm}} -% \pgflineto{\pgflineto{1cm}{1cm}} % actually 2cm/2cm -% \end{pgflowlevelscope} - -\def\pgflowlevel#1{% - {% - \pgftransformreset% - #1% - \pgflowlevelsynccm% - }% - \pgf@relevantforpicturesizefalse% -} - -\def\pgflowlevelscope#1{\pgfscope\pgflowlevel{#1}} -\def\endpgflowlevelscope{\endpgfscope} - -\long\def\pgflowlevelobj#1#2{\pgfscope{\pgflowlevel{#1}#2}\endpgfscope} - - - - -\endinput |