\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/libraries/pgflibraryshapes.code.tex,v 1.5 2005/10/13 10:12:31 tantau Exp $ % Copyright 2005 by Till Tantau . % % This program can be redistributed and/or modified under the terms % of the GNU Public License, version 2. \pgfdeclareshape{ellipse} % % Draws a circle around the text % { \savedanchor\centerpoint{% \pgf@x=.5\wd\pgfnodeparttextbox% \pgf@y=.5\ht\pgfnodeparttextbox% \advance\pgf@y by-.5\dp\pgfnodeparttextbox% } \savedanchor\radius{% % % Caculate ``height radius'' % \pgf@y=.5\ht\pgfnodeparttextbox% \advance\pgf@y by.5\dp\pgfnodeparttextbox% \setlength\pgf@yb{\pgfshapeinnerysep}% \advance\pgf@y by\pgf@yb% % % Caculate ``width radius'' % \pgf@x=.5\wd\pgfnodeparttextbox% \setlength\pgf@xb{\pgfshapeinnerxsep}% \advance\pgf@x by\pgf@xb% % % Adjust % \pgf@x=1.4142136\pgf@x% \pgf@y=1.4142136\pgf@y% % % Adjust hieght, if necessary % \setlength\pgf@yc{\pgfshapeminheight}% \ifdim\pgf@y<.5\pgf@yc% \pgf@y=.5\pgf@yc% \fi% % % Adjust width, if necessary % \setlength\pgf@xc{\pgfshapeminwidth}% \ifdim\pgf@x<.5\pgf@xc% \pgf@x=.5\pgf@xc% \fi% % % Add outer sep % \setlength{\pgf@xb}{\pgfshapeouterxsep}% \setlength{\pgf@yb}{\pgfshapeouterysep}% \advance\pgf@x by\pgf@xb% \advance\pgf@y by\pgf@yb% } % % Anchors % \anchor{center}{\centerpoint} \anchor{mid}{\centerpoint\setlength\pgf@y{.5ex}} \anchor{base}{\centerpoint\pgf@y=0pt} \anchor{north} { \pgf@process{\radius} \pgf@ya=\pgf@y% \pgf@process{\centerpoint} \advance\pgf@y by\pgf@ya } \anchor{south} { \pgf@process{\radius} \pgf@ya=\pgf@y% \pgf@process{\centerpoint} \advance\pgf@y by-\pgf@ya } \anchor{west} { \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@process{\centerpoint} \advance\pgf@x by-\pgf@xa } \anchor{mid west} {% \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@process{\centerpoint} \advance\pgf@x by-\pgf@xa% \setlength\pgf@y{.5ex} } \anchor{base west} {% \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@process{\centerpoint} \advance\pgf@x by-\pgf@xa% \pgf@y=0pt } \anchor{north west} { \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@ya=\pgf@y% \pgf@process{\centerpoint} \advance\pgf@x by-0.707107\pgf@xa \advance\pgf@y by0.707107\pgf@ya } \anchor{south west} { \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@ya=\pgf@y% \pgf@process{\centerpoint} \advance\pgf@x by-0.707107\pgf@xa \advance\pgf@y by-0.707107\pgf@ya } \anchor{east} {% \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@process{\centerpoint} \advance\pgf@x by\pgf@xa } \anchor{mid east} {% \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@process{\centerpoint} \advance\pgf@x by\pgf@xa% \setlength\pgf@y{.5ex} } \anchor{base east} {% \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@process{\centerpoint} \advance\pgf@x by\pgf@xa% \pgf@y=0pt } \anchor{north east} { \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@ya=\pgf@y% \pgf@process{\centerpoint} \advance\pgf@x by0.707107\pgf@xa \advance\pgf@y by0.707107\pgf@ya } \anchor{south east} { \pgf@process{\radius} \pgf@xa=\pgf@x% \pgf@ya=\pgf@y% \pgf@process{\centerpoint} \advance\pgf@x by0.707107\pgf@xa \advance\pgf@y by-0.707107\pgf@ya } \anchorborder{ \edef\pgf@marshal{% \noexpand\pgfpointborderellipse {\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}} {\noexpand\radius}% }% \pgf@marshal% \pgf@xa=\pgf@x% \pgf@ya=\pgf@y% \centerpoint% \advance\pgf@x by\pgf@xa% \advance\pgf@y by\pgf@ya% } % % Background path % \backgroundpath { \pgf@process{\radius}% \@tempdima=\pgf@x% \@tempdimb=\pgf@y% \setlength{\pgf@xb}{\pgfshapeouterxsep}% \setlength{\pgf@yb}{\pgfshapeouterysep}% \advance\@tempdima by-\pgf@xb% \advance\@tempdimb by-\pgf@yb% \pgfpathellipse{\centerpoint}{\pgfpoint{\@tempdima}{0pt}}{\pgfpoint{0pt}{\@tempdimb}}% } } \pgfdeclareshape{cross out} { \inheritsavedanchors[from=rectangle] % this is nearly a rectangle \inheritanchorborder[from=rectangle] \inheritanchor[from=rectangle]{north} \inheritanchor[from=rectangle]{north west} \inheritanchor[from=rectangle]{north east} \inheritanchor[from=rectangle]{center} \inheritanchor[from=rectangle]{west} \inheritanchor[from=rectangle]{east} \inheritanchor[from=rectangle]{mid} \inheritanchor[from=rectangle]{mid west} \inheritanchor[from=rectangle]{mid east} \inheritanchor[from=rectangle]{base} \inheritanchor[from=rectangle]{base west} \inheritanchor[from=rectangle]{base east} \inheritanchor[from=rectangle]{south} \inheritanchor[from=rectangle]{south west} \inheritanchor[from=rectangle]{south east} \foregroundpath{ % store lower right in xa/ya and upper right in xb/yb \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}} \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@yb}} \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} } } \pgfdeclareshape{strike out} { \inheritsavedanchors[from=rectangle] % this is nearly a rectangle \inheritanchorborder[from=rectangle] \inheritanchor[from=rectangle]{north} \inheritanchor[from=rectangle]{north west} \inheritanchor[from=rectangle]{north east} \inheritanchor[from=rectangle]{center} \inheritanchor[from=rectangle]{west} \inheritanchor[from=rectangle]{east} \inheritanchor[from=rectangle]{mid} \inheritanchor[from=rectangle]{mid west} \inheritanchor[from=rectangle]{mid east} \inheritanchor[from=rectangle]{base} \inheritanchor[from=rectangle]{base west} \inheritanchor[from=rectangle]{base east} \inheritanchor[from=rectangle]{south} \inheritanchor[from=rectangle]{south west} \inheritanchor[from=rectangle]{south east} \foregroundpath{ \pgfpathmoveto{\southwest} \pgfpathlineto{\northeast} } } \pgfdeclareshape{forbidden sign} { \inheritsavedanchors[from=circle] % this is nearly a circle \inheritanchorborder[from=circle] \inheritanchor[from=circle]{north} \inheritanchor[from=circle]{north west} \inheritanchor[from=circle]{north east} \inheritanchor[from=circle]{center} \inheritanchor[from=circle]{west} \inheritanchor[from=circle]{east} \inheritanchor[from=circle]{mid} \inheritanchor[from=circle]{mid west} \inheritanchor[from=circle]{mid east} \inheritanchor[from=circle]{base} \inheritanchor[from=circle]{base west} \inheritanchor[from=circle]{base east} \inheritanchor[from=circle]{south} \inheritanchor[from=circle]{south west} \inheritanchor[from=circle]{south east} \inheritbackgroundpath[from=circle] \foregroundpath{ \centerpoint% \pgf@xc=\pgf@x% \pgf@yc=\pgf@y% \@tempdima=\radius% \setlength{\pgf@xb}{\pgfshapeouterxsep}% \setlength{\pgf@yb}{\pgfshapeouterysep}% \ifdim\pgf@xb<\pgf@yb% \advance\@tempdima by-\pgf@yb% \else% \advance\@tempdima by-\pgf@xb% \fi% \pgfpathmoveto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}{\pgfpoint{-0.707107\@tempdima}{-0.707107\@tempdima}}} \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}}{\pgfpoint{0.707107\@tempdima}{0.707107\@tempdima}}} } } \endinput