diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex | 2100 |
1 files changed, 1050 insertions, 1050 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex b/Master/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex index 5466b1a27f2..fe64c707c1a 100644 --- a/Master/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex @@ -7,28 +7,28 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex,v 1.5 2013/07/18 14:15:25 tantau Exp $ +\ProvidesFileRCS{pgflibraryshapes.misc.code.tex} \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} +{% + \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 @@ -39,440 +39,440 @@ \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@ya}} \pgfsetarrowsstart{} \pgfsetarrowsend{} - } -} + }% +}% \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} +{% + \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} \pgfsetarrowsstart{} \pgfsetarrowsend{} - } -} + }% +}% % Rounded rectangle \pgfkeys{/pgf/.cd, - rounded rectangle west arc/.initial=convex, - rounded rectangle east arc/.initial=convex, - rounded rectangle left arc/.style={/pgf/rounded rectangle west arc=#1},% - rounded rectangle right arc/.style={/pgf/rounded rectangle east arc=#1},% - rounded rectangle arc length/.initial=180% + rounded rectangle west arc/.initial=convex, + rounded rectangle east arc/.initial=convex, + rounded rectangle left arc/.style={/pgf/rounded rectangle west arc=#1},% + rounded rectangle right arc/.style={/pgf/rounded rectangle east arc=#1},% + rounded rectangle arc length/.initial=180% }% \def\pgf@lib@sh@misc@rr@text@concave{concave}% \def\pgf@lib@sh@misc@rr@text@convex{convex}% \pgfdeclareshape{rounded rectangle}{% - \savedmacro\westarc{% - \edef\westarc{\pgfkeysvalueof{/pgf/rounded rectangle west arc}}% - } - \savedmacro\eastarc{% - \edef\eastarc{\pgfkeysvalueof{/pgf/rounded rectangle east arc}}% - } - \savedmacro\roundedrectanglepoints{% - % - % Get half the arc angle, a. - % - \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/rounded rectangle arc length}}% - \pgf@x=.5\pgf@x% - \edef\halfarcangle{\pgfmath@tonumber{\pgf@x}}% - \addtosavedmacro\halfarcangle% - % - % Get the (half) node dimensions x & y. - % - \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}% - \edef\innerxsep{\the\pgf@x}% - \pgf@xa=0.5\wd\pgfnodeparttextbox% - \edef\halftextwidth{\the\pgf@xa}% - \addtosavedmacro\halftextwidth% - \advance\pgf@x by\pgf@xa% - % - \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}% - \edef\innerysep{\the\pgf@y}% - \pgf@ya=.5\ht\pgfnodeparttextbox% - \advance\pgf@ya by.5\dp\pgfnodeparttextbox% - \edef\halftextheight{\the\pgf@ya}% - \addtosavedmacro\halftextheight% - \advance\pgf@y by\pgf@ya% - % - % Adjust for minimum height - % - \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}% - \ifdim\pgf@y<.5\pgf@yb% - \pgf@y=.5\pgf@yb% - \fi% - \edef\halfheight{\the\pgf@y}% - \addtosavedmacro\halfheight% - % - % Calculate the radius of the arc ends. - % - \pgfmathcosec@{\halfarcangle}% - \pgf@ya=\pgfmathresult\pgf@y% - \edef\radius{\the\pgf@ya}% - \addtosavedmacro\radius% - % - % Arc width = r - r*cos(a/2). - % - \pgfmathcos@{\halfarcangle}% - \pgf@xa=\pgf@ya% - \advance\pgf@xa by-\pgfmathresult\pgf@ya% - % - % When the node contents are pushed inside a convex arc, - % the resulting chord has a height r - r*cos(asin(0.5*h/r)). - % - \pgfmathdivide{\halftextheight}{\radius}% - \pgfmathasin@{\pgfmathresult}% - \pgfmathcos@{\pgfmathresult}% - \pgf@xb=\pgf@ya% - \advance\pgf@xb by-\pgfmathresult\pgf@ya% - % - % Adjust for minimum width. - % - \edef\westarc{\pgfkeysvalueof{/pgf/rounded rectangle west arc}}% - \edef\eastarc{\pgfkeysvalueof{/pgf/rounded rectangle east arc}}% - % - \pgfutil@tempdima=2.0\pgf@x% x still holds the half width. - \ifx\westarc\pgf@lib@sh@misc@rr@text@concave% - \advance\pgfutil@tempdima by\pgf@xa% - \else% - \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% - \advance\pgfutil@tempdima by\pgf@xb% - \fi% - \fi% - % - \ifx\eastarc\pgf@lib@sh@misc@rr@text@concave% - \advance\pgfutil@tempdima by\pgf@xa% - \else% - \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% - \advance\pgfutil@tempdima by\pgf@xb% - \fi% - \fi% - % - \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum width}}% - \ifdim\pgfutil@tempdima<\pgfutil@tempdimb% - \advance\pgfutil@tempdimb by-\pgfutil@tempdima% - \divide\pgfutil@tempdimb by2\relax% - \edef\xoffset{\the\pgfutil@tempdimb}% - \else% - \let\xoffset=\innerxsep% - \fi% - % - % The node is made wider if convex arcs overlap. - % - \pgf@x=\halftextwidth\relax% - \advance\pgf@x by\xoffset\relax% - \pgf@xc=\pgf@ya% - \advance\pgf@xc by-\pgf@xb% - \ifdim\pgf@xc>\pgf@x\relax% - \advance\pgf@xc by-\pgf@x% - \advance\pgf@xc by\xoffset\relax% - \edef\xoffset{\the\pgf@xc}% - \fi% - \addtosavedmacro\xoffset% - % - \pgf@x=\halftextwidth\relax% - \advance\pgf@x by\xoffset\relax% - \edef\halfwidth{\the\pgf@x}% - \addtosavedmacro\halfwidth% - % - \edef\arcwidth{\the\pgf@xa}% - \addtosavedmacro\arcwidth% - % - \edef\chordwidth{\the\pgf@xb}% - \addtosavedmacro\chordwidth% - % - \pgfmathsetlengthmacro\outerxsep{\pgfkeysvalueof{/pgf/outer xsep}}% - \pgfmathsetlengthmacro\outerysep{\pgfkeysvalueof{/pgf/outer ysep}}% - \addtosavedmacro\outerxsep% - \addtosavedmacro\outerysep% - % - % calculate some horizontal adjustments made for the default miter - % drawn when an arc meets the north or south side of the node path. - % - \ifdim\halfarcangle pt=90pt\relax% Avoid division by zero. - \def\concavexshift{0pt}% - \else% - % For a concave arc: outer xsep * cosec((90-a/2)/2)*cos((90-a/2)/2). - \pgfmathsubtract@{90}{\halfarcangle}% - \pgfmathdivide@{\pgfmathresult}{2}% - \let\angletemp=\pgfmathresult% - \pgf@x=\outerxsep\relax% - \pgfmathcosec@{\angletemp}% - \pgf@x=\pgfmathresult\pgf@x% - \pgfmathcos@{\angletemp}% - \pgf@x=\pgfmathresult\pgf@x% - \edef\concavexshift{\the\pgf@x}% - \fi% - \addtosavedmacro\concavexshift% - % - \ifdim\halfarcangle pt=90pt\relax% Avoid division by zero. - \def\convexxshift{0pt}% - \else% - % For a convex arc: outer xsep * cosec((90+a/2)/2)*cos((90+a/2)/2). - \pgfmathadd@{90}{\halfarcangle}% - \pgfmathdivide@{\pgfmathresult}{2}% - \let\angletemp=\pgfmathresult% - \pgf@x=\outerxsep\relax% - \pgfmathcosec@{\angletemp}% - \pgf@x=\pgfmathresult\pgf@x% - \pgfmathcos@{\angletemp}% - \pgf@x=\pgfmathresult\pgf@x% - \edef\convexxshift{\the\pgf@x}% - \fi% - \addtosavedmacro\convexxshift% - }% - \saveddimen\halflinewidth{\pgf@x.5\pgflinewidth}% - \savedanchor\centerpoint{% - \pgf@x=.5\wd\pgfnodeparttextbox% - \pgf@y=.5\ht\pgfnodeparttextbox% - \advance\pgf@y by-.5\dp\pgfnodeparttextbox% - } - \savedanchor\midpoint{% - \pgf@x=.5\wd\pgfnodeparttextbox% - \pgfmathsetlength\pgf@y{+0.5ex}% - } - \savedanchor\basepoint{% - \pgf@x=.5\wd\pgfnodeparttextbox% - \pgf@y=0pt\relax% - } - \anchor{center}{\centerpoint}% - \anchor{mid}{\midpoint}% - \anchor{mid west}{% - \csname pgf@anchor@rounded rectangle@west\endcsname% - \pgf@xc=\pgf@x% - \midpoint% - \pgf@x=\pgf@xc% - }% - \anchor{mid east}{% - \csname pgf@anchor@rounded rectangle@east\endcsname% - \pgf@xc=\pgf@x% - \midpoint% - \pgf@x=\pgf@xc% - }% - \anchor{base}{\basepoint}% - \anchor{base west}{% - \csname pgf@anchor@rounded rectangle@west\endcsname% - \pgf@xc=\pgf@x% - \basepoint% - \pgf@x=\pgf@xc% - }% - \anchor{base east}{% - \csname pgf@anchor@rounded rectangle@east\endcsname% - \pgf@xc=\pgf@x% - \basepoint% - \pgf@x=\pgf@xc% - }% - \anchor{north}{% - \roundedrectanglepoints% - \pgfpointadd{\centerpoint}{\pgfpoint{+0pt}{\halfheight+\outerysep}}% - }% - \anchor{south}{% - \roundedrectanglepoints% - \pgfpointadd{\centerpoint}{\pgfpoint{+0pt}{-\halfheight-\outerysep}}% - }% - \anchor{west}{% - \roundedrectanglepoints% - \pgfpointadd{\centerpoint}{% - \ifx\westarc\pgf@lib@sh@misc@rr@text@concave% - \pgfpoint{-\halfwidth-\arcwidth-\concavexshift}{+0pt}% - \else% - \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% - \pgfpoint{-\halfwidth-\chordwidth-\outerxsep}{+0pt}% - \else% - \pgfpoint{-\halfwidth-\outerxsep}{+0pt}% - \fi% - \fi% - }% - }% - \anchor{north west}{% - \roundedrectanglepoints% - \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% - \pgfpointadd{\centerpoint}{\pgfpoint{-\halfwidth-\chordwidth+\arcwidth-\convexxshift}{+0pt}}% - \else% - \csname pgf@anchor@rounded rectangle@west\endcsname% - \fi% - \pgf@xc=\pgf@x% - \csname pgf@anchor@rounded rectangle@north\endcsname% - \pgf@x=\pgf@xc% - }% - \anchor{south west}{% - \roundedrectanglepoints% - \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% - \pgfpointadd{\centerpoint}{\pgfpoint{-\halfwidth-\chordwidth+\arcwidth-\convexxshift}{+0pt}}% - \else% - \csname pgf@anchor@rounded rectangle@west\endcsname% - \fi% - \pgf@xc=\pgf@x% - \csname pgf@anchor@rounded rectangle@south\endcsname% - \pgf@x=\pgf@xc% - }% - \anchor{east}{% - \roundedrectanglepoints% - \pgfpointadd{\centerpoint}{% - \ifx\eastarc\pgf@lib@sh@misc@rr@text@concave% - \pgfpoint{\halfwidth+\arcwidth+\concavexshift}{+0pt}% - \else% - \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% - \pgfpoint{\halfwidth+\chordwidth+\outerxsep}{+0pt}% - \else% - \pgfpoint{\halfwidth+\outerxsep}{+0pt}% - \fi% - \fi% - }% - }% - \anchor{north east}{% - \roundedrectanglepoints% - \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% - \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\arcwidth+\convexxshift}{+0pt}}% - \else% - \csname pgf@anchor@rounded rectangle@east\endcsname% - \fi% - \pgf@xc=\pgf@x% - \csname pgf@anchor@rounded rectangle@north\endcsname% - \pgf@x=\pgf@xc% - }% - \anchor{south east}{% - \roundedrectanglepoints% - \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% - \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\arcwidth+\convexxshift}{+0pt}}% - \else% - \csname pgf@anchor@rounded rectangle@east\endcsname% - \fi% - \pgf@xc=\pgf@x% - \csname pgf@anchor@rounded rectangle@south\endcsname% - \pgf@x=\pgf@xc% - }% - \backgroundpath{% - {% - \roundedrectanglepoints% - \pgftransformshift{\centerpoint}% - \pgfpathmoveto{\pgfpoint{0pt}{\halfheight}}% - \ifx\eastarc\pgf@lib@sh@misc@rr@text@concave% - \pgfpathlineto{\pgfpoint{\halfwidth+\arcwidth}{+\halfheight}}% - \pgfpatharc{180-\halfarcangle}{180+\halfarcangle}{+\radius}% - \else% - \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% - \pgfpathlineto{\pgfpoint{\halfwidth+\chordwidth-\arcwidth}{+\halfheight}}% - \pgfpatharc{+\halfarcangle}{+-\halfarcangle}{+\radius}% - \else% - \pgfpathlineto{\pgfqpoint{\halfwidth}{\halfheight}}% - \pgfpathlineto{\pgfqpoint{\halfwidth}{-\halfheight}}% - \fi% - \fi% - \ifx\westarc\pgf@lib@sh@misc@rr@text@concave% - \pgfpathlineto{\pgfpoint{-\halfwidth-\arcwidth}{+-\halfheight}}% - \pgfpatharc{+-\halfarcangle}{+\halfarcangle}{+\radius}% - \else% - \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% - \pgfpathlineto{\pgfpoint{-\halfwidth-\chordwidth+\arcwidth}{+-\halfheight}}% - \pgfpatharc{180+\halfarcangle}{180-\halfarcangle}{+\radius}% - \else% - \pgfpathlineto{\pgfqpoint{-\halfwidth}{-\halfheight}}% - \pgfpathlineto{\pgfqpoint{-\halfwidth}{\halfheight}}% - \fi% - \fi% - \pgfpathclose% - }% - } - \anchorborder{% - \pgfextract@process\externalpoint{% - \pgfextract@process\externalpoint{}% - \pgfpointadd{\centerpoint}{\externalpoint}% - }% - \roundedrectanglepoints% - % - \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}% - \let\externalangle=\pgfmathresult% - \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@north west\endcsname}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% - \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@north east\endcsname}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% - % Between north east and east. - \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% - \pgfextract@process\arccenter{% - \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\radius}{+0pt}}% - }% - \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}% - {\arccenter}{0}{\halfarcangle}{\radius+\outerxsep and \radius+\outerysep}% - \else% - \pgfpointintersectionoflines% - {\csname pgf@anchor@rounded rectangle@north east\endcsname}% - {\csname pgf@anchor@rounded rectangle@south east\endcsname}% - {\externalpoint}{\centerpoint}% - \fi% - \else% - % Between north west and north east. - \pgfpointintersectionoflines% - {\csname pgf@anchor@rounded rectangle@north east\endcsname}% - {\csname pgf@anchor@rounded rectangle@north west\endcsname}% - {\externalpoint}{\centerpoint}% - \fi% - \else% - \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@south west\endcsname}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% - % Between south west and north west. - \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% - \pgfextract@process\arccenter{% - \pgfpointadd{\centerpoint}{\pgfpoint{-\halfwidth-\chordwidth+\radius}{+0pt}}% - }% - \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}% - {\arccenter}{180-\halfarcangle}{180+\halfarcangle}{\radius+\outerxsep and \radius+\outerysep}% - \else% - \pgfpointintersectionoflines% - {\csname pgf@anchor@rounded rectangle@north west\endcsname}% - {\csname pgf@anchor@rounded rectangle@south west\endcsname}% - {\externalpoint}{\centerpoint}% - \fi% - \else% - \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@south east\endcsname}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% - % Between south east and south west. - \pgfpointintersectionoflines% - {\csname pgf@anchor@rounded rectangle@south east\endcsname}% - {\csname pgf@anchor@rounded rectangle@south west\endcsname}% - {\externalpoint}{\centerpoint}% - \else% - % Between east and south east. - \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% - \pgfextract@process\arccenter{% - \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\radius}{+0pt}}% - }% - \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}% - {\arccenter}{360-\halfarcangle}{360}{\radius+\outerxsep and \radius+\outerysep}% - \else% - \pgfpointintersectionoflines% - {\csname pgf@anchor@rounded rectangle@north east\endcsname}% - {\csname pgf@anchor@rounded rectangle@south east\endcsname}% - {\externalpoint}{\centerpoint}% - \fi% - \fi% - \fi% - \fi% - } -} + \savedmacro\westarc{% + \edef\westarc{\pgfkeysvalueof{/pgf/rounded rectangle west arc}}% + }% + \savedmacro\eastarc{% + \edef\eastarc{\pgfkeysvalueof{/pgf/rounded rectangle east arc}}% + }% + \savedmacro\roundedrectanglepoints{% + % + % Get half the arc angle, a. + % + \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/rounded rectangle arc length}}% + \pgf@x=.5\pgf@x% + \edef\halfarcangle{\pgfmath@tonumber{\pgf@x}}% + \addtosavedmacro\halfarcangle% + % + % Get the (half) node dimensions x & y. + % + \pgfmathsetlength\pgf@x{\pgfkeysvalueof{/pgf/inner xsep}}% + \edef\innerxsep{\the\pgf@x}% + \pgf@xa=0.5\wd\pgfnodeparttextbox% + \edef\halftextwidth{\the\pgf@xa}% + \addtosavedmacro\halftextwidth% + \advance\pgf@x by\pgf@xa% + % + \pgfmathsetlength\pgf@y{\pgfkeysvalueof{/pgf/inner ysep}}% + \edef\innerysep{\the\pgf@y}% + \pgf@ya=.5\ht\pgfnodeparttextbox% + \advance\pgf@ya by.5\dp\pgfnodeparttextbox% + \edef\halftextheight{\the\pgf@ya}% + \addtosavedmacro\halftextheight% + \advance\pgf@y by\pgf@ya% + % + % Adjust for minimum height + % + \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}% + \ifdim\pgf@y<.5\pgf@yb% + \pgf@y=.5\pgf@yb% + \fi% + \edef\halfheight{\the\pgf@y}% + \addtosavedmacro\halfheight% + % + % Calculate the radius of the arc ends. + % + \pgfmathcosec@{\halfarcangle}% + \pgf@ya=\pgfmathresult\pgf@y% + \edef\radius{\the\pgf@ya}% + \addtosavedmacro\radius% + % + % Arc width = r - r*cos(a/2). + % + \pgfmathcos@{\halfarcangle}% + \pgf@xa=\pgf@ya% + \advance\pgf@xa by-\pgfmathresult\pgf@ya% + % + % When the node contents are pushed inside a convex arc, + % the resulting chord has a height r - r*cos(asin(0.5*h/r)). + % + \pgfmathdivide{\halftextheight}{\radius}% + \pgfmathasin@{\pgfmathresult}% + \pgfmathcos@{\pgfmathresult}% + \pgf@xb=\pgf@ya% + \advance\pgf@xb by-\pgfmathresult\pgf@ya% + % + % Adjust for minimum width. + % + \edef\westarc{\pgfkeysvalueof{/pgf/rounded rectangle west arc}}% + \edef\eastarc{\pgfkeysvalueof{/pgf/rounded rectangle east arc}}% + % + \pgfutil@tempdima=2.0\pgf@x% x still holds the half width. + \ifx\westarc\pgf@lib@sh@misc@rr@text@concave% + \advance\pgfutil@tempdima by\pgf@xa% + \else% + \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% + \advance\pgfutil@tempdima by\pgf@xb% + \fi% + \fi% + % + \ifx\eastarc\pgf@lib@sh@misc@rr@text@concave% + \advance\pgfutil@tempdima by\pgf@xa% + \else% + \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% + \advance\pgfutil@tempdima by\pgf@xb% + \fi% + \fi% + % + \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum width}}% + \ifdim\pgfutil@tempdima<\pgfutil@tempdimb% + \advance\pgfutil@tempdimb by-\pgfutil@tempdima% + \divide\pgfutil@tempdimb by2\relax% + \edef\xoffset{\the\pgfutil@tempdimb}% + \else% + \let\xoffset=\innerxsep% + \fi% + % + % The node is made wider if convex arcs overlap. + % + \pgf@x=\halftextwidth\relax% + \advance\pgf@x by\xoffset\relax% + \pgf@xc=\pgf@ya% + \advance\pgf@xc by-\pgf@xb% + \ifdim\pgf@xc>\pgf@x\relax% + \advance\pgf@xc by-\pgf@x% + \advance\pgf@xc by\xoffset\relax% + \edef\xoffset{\the\pgf@xc}% + \fi% + \addtosavedmacro\xoffset% + % + \pgf@x=\halftextwidth\relax% + \advance\pgf@x by\xoffset\relax% + \edef\halfwidth{\the\pgf@x}% + \addtosavedmacro\halfwidth% + % + \edef\arcwidth{\the\pgf@xa}% + \addtosavedmacro\arcwidth% + % + \edef\chordwidth{\the\pgf@xb}% + \addtosavedmacro\chordwidth% + % + \pgfmathsetlengthmacro\outerxsep{\pgfkeysvalueof{/pgf/outer xsep}}% + \pgfmathsetlengthmacro\outerysep{\pgfkeysvalueof{/pgf/outer ysep}}% + \addtosavedmacro\outerxsep% + \addtosavedmacro\outerysep% + % + % calculate some horizontal adjustments made for the default miter + % drawn when an arc meets the north or south side of the node path. + % + \ifdim\halfarcangle pt=90pt\relax% Avoid division by zero. + \def\concavexshift{0pt}% + \else% + % For a concave arc: outer xsep * cosec((90-a/2)/2)*cos((90-a/2)/2). + \pgfmathsubtract@{90}{\halfarcangle}% + \pgfmathdivide@{\pgfmathresult}{2}% + \let\angletemp=\pgfmathresult% + \pgf@x=\outerxsep\relax% + \pgfmathcosec@{\angletemp}% + \pgf@x=\pgfmathresult\pgf@x% + \pgfmathcos@{\angletemp}% + \pgf@x=\pgfmathresult\pgf@x% + \edef\concavexshift{\the\pgf@x}% + \fi% + \addtosavedmacro\concavexshift% + % + \ifdim\halfarcangle pt=90pt\relax% Avoid division by zero. + \def\convexxshift{0pt}% + \else% + % For a convex arc: outer xsep * cosec((90+a/2)/2)*cos((90+a/2)/2). + \pgfmathadd@{90}{\halfarcangle}% + \pgfmathdivide@{\pgfmathresult}{2}% + \let\angletemp=\pgfmathresult% + \pgf@x=\outerxsep\relax% + \pgfmathcosec@{\angletemp}% + \pgf@x=\pgfmathresult\pgf@x% + \pgfmathcos@{\angletemp}% + \pgf@x=\pgfmathresult\pgf@x% + \edef\convexxshift{\the\pgf@x}% + \fi% + \addtosavedmacro\convexxshift% + }% + \saveddimen\halflinewidth{\pgf@x.5\pgflinewidth}% + \savedanchor\centerpoint{% + \pgf@x=.5\wd\pgfnodeparttextbox% + \pgf@y=.5\ht\pgfnodeparttextbox% + \advance\pgf@y by-.5\dp\pgfnodeparttextbox% + }% + \savedanchor\midpoint{% + \pgf@x=.5\wd\pgfnodeparttextbox% + \pgfmathsetlength\pgf@y{+0.5ex}% + }% + \savedanchor\basepoint{% + \pgf@x=.5\wd\pgfnodeparttextbox% + \pgf@y=0pt\relax% + }% + \anchor{center}{\centerpoint}% + \anchor{mid}{\midpoint}% + \anchor{mid west}{% + \csname pgf@anchor@rounded rectangle@west\endcsname% + \pgf@xc=\pgf@x% + \midpoint% + \pgf@x=\pgf@xc% + }% + \anchor{mid east}{% + \csname pgf@anchor@rounded rectangle@east\endcsname% + \pgf@xc=\pgf@x% + \midpoint% + \pgf@x=\pgf@xc% + }% + \anchor{base}{\basepoint}% + \anchor{base west}{% + \csname pgf@anchor@rounded rectangle@west\endcsname% + \pgf@xc=\pgf@x% + \basepoint% + \pgf@x=\pgf@xc% + }% + \anchor{base east}{% + \csname pgf@anchor@rounded rectangle@east\endcsname% + \pgf@xc=\pgf@x% + \basepoint% + \pgf@x=\pgf@xc% + }% + \anchor{north}{% + \roundedrectanglepoints% + \pgfpointadd{\centerpoint}{\pgfpoint{+0pt}{\halfheight+\outerysep}}% + }% + \anchor{south}{% + \roundedrectanglepoints% + \pgfpointadd{\centerpoint}{\pgfpoint{+0pt}{-\halfheight-\outerysep}}% + }% + \anchor{west}{% + \roundedrectanglepoints% + \pgfpointadd{\centerpoint}{% + \ifx\westarc\pgf@lib@sh@misc@rr@text@concave% + \pgfpoint{-\halfwidth-\arcwidth-\concavexshift}{+0pt}% + \else% + \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% + \pgfpoint{-\halfwidth-\chordwidth-\outerxsep}{+0pt}% + \else% + \pgfpoint{-\halfwidth-\outerxsep}{+0pt}% + \fi% + \fi% + }% + }% + \anchor{north west}{% + \roundedrectanglepoints% + \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% + \pgfpointadd{\centerpoint}{\pgfpoint{-\halfwidth-\chordwidth+\arcwidth-\convexxshift}{+0pt}}% + \else% + \csname pgf@anchor@rounded rectangle@west\endcsname% + \fi% + \pgf@xc=\pgf@x% + \csname pgf@anchor@rounded rectangle@north\endcsname% + \pgf@x=\pgf@xc% + }% + \anchor{south west}{% + \roundedrectanglepoints% + \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% + \pgfpointadd{\centerpoint}{\pgfpoint{-\halfwidth-\chordwidth+\arcwidth-\convexxshift}{+0pt}}% + \else% + \csname pgf@anchor@rounded rectangle@west\endcsname% + \fi% + \pgf@xc=\pgf@x% + \csname pgf@anchor@rounded rectangle@south\endcsname% + \pgf@x=\pgf@xc% + }% + \anchor{east}{% + \roundedrectanglepoints% + \pgfpointadd{\centerpoint}{% + \ifx\eastarc\pgf@lib@sh@misc@rr@text@concave% + \pgfpoint{\halfwidth+\arcwidth+\concavexshift}{+0pt}% + \else% + \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% + \pgfpoint{\halfwidth+\chordwidth+\outerxsep}{+0pt}% + \else% + \pgfpoint{\halfwidth+\outerxsep}{+0pt}% + \fi% + \fi% + }% + }% + \anchor{north east}{% + \roundedrectanglepoints% + \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% + \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\arcwidth+\convexxshift}{+0pt}}% + \else% + \csname pgf@anchor@rounded rectangle@east\endcsname% + \fi% + \pgf@xc=\pgf@x% + \csname pgf@anchor@rounded rectangle@north\endcsname% + \pgf@x=\pgf@xc% + }% + \anchor{south east}{% + \roundedrectanglepoints% + \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% + \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\arcwidth+\convexxshift}{+0pt}}% + \else% + \csname pgf@anchor@rounded rectangle@east\endcsname% + \fi% + \pgf@xc=\pgf@x% + \csname pgf@anchor@rounded rectangle@south\endcsname% + \pgf@x=\pgf@xc% + }% + \backgroundpath{% + {% + \roundedrectanglepoints% + \pgftransformshift{\centerpoint}% + \pgfpathmoveto{\pgfpoint{0pt}{\halfheight}}% + \ifx\eastarc\pgf@lib@sh@misc@rr@text@concave% + \pgfpathlineto{\pgfpoint{\halfwidth+\arcwidth}{+\halfheight}}% + \pgfpatharc{180-\halfarcangle}{180+\halfarcangle}{+\radius}% + \else% + \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% + \pgfpathlineto{\pgfpoint{\halfwidth+\chordwidth-\arcwidth}{+\halfheight}}% + \pgfpatharc{+\halfarcangle}{+-\halfarcangle}{+\radius}% + \else% + \pgfpathlineto{\pgfqpoint{\halfwidth}{\halfheight}}% + \pgfpathlineto{\pgfqpoint{\halfwidth}{-\halfheight}}% + \fi% + \fi% + \ifx\westarc\pgf@lib@sh@misc@rr@text@concave% + \pgfpathlineto{\pgfpoint{-\halfwidth-\arcwidth}{+-\halfheight}}% + \pgfpatharc{+-\halfarcangle}{+\halfarcangle}{+\radius}% + \else% + \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% + \pgfpathlineto{\pgfpoint{-\halfwidth-\chordwidth+\arcwidth}{+-\halfheight}}% + \pgfpatharc{180+\halfarcangle}{180-\halfarcangle}{+\radius}% + \else% + \pgfpathlineto{\pgfqpoint{-\halfwidth}{-\halfheight}}% + \pgfpathlineto{\pgfqpoint{-\halfwidth}{\halfheight}}% + \fi% + \fi% + \pgfpathclose% + }% + }% + \anchorborder{% + \pgfextract@process\externalpoint{% + \pgfextract@process\externalpoint{}% + \pgfpointadd{\centerpoint}{\externalpoint}% + }% + \roundedrectanglepoints% + % + \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}% + \let\externalangle=\pgfmathresult% + \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@north west\endcsname}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% + \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@north east\endcsname}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% + % Between north east and east. + \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% + \pgfextract@process\arccenter{% + \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\radius}{+0pt}}% + }% + \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}% + {\arccenter}{0}{\halfarcangle}{\radius+\outerxsep and \radius+\outerysep}% + \else% + \pgfpointintersectionoflines% + {\csname pgf@anchor@rounded rectangle@north east\endcsname}% + {\csname pgf@anchor@rounded rectangle@south east\endcsname}% + {\externalpoint}{\centerpoint}% + \fi% + \else% + % Between north west and north east. + \pgfpointintersectionoflines% + {\csname pgf@anchor@rounded rectangle@north east\endcsname}% + {\csname pgf@anchor@rounded rectangle@north west\endcsname}% + {\externalpoint}{\centerpoint}% + \fi% + \else% + \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@south west\endcsname}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% + % Between south west and north west. + \ifx\westarc\pgf@lib@sh@misc@rr@text@convex% + \pgfextract@process\arccenter{% + \pgfpointadd{\centerpoint}{\pgfpoint{-\halfwidth-\chordwidth+\radius}{+0pt}}% + }% + \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}% + {\arccenter}{180-\halfarcangle}{180+\halfarcangle}{\radius+\outerxsep and \radius+\outerysep}% + \else% + \pgfpointintersectionoflines% + {\csname pgf@anchor@rounded rectangle@north west\endcsname}% + {\csname pgf@anchor@rounded rectangle@south west\endcsname}% + {\externalpoint}{\centerpoint}% + \fi% + \else% + \pgfmathanglebetweenpoints{\centerpoint}{\csname pgf@anchor@rounded rectangle@south east\endcsname}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% + % Between south east and south west. + \pgfpointintersectionoflines% + {\csname pgf@anchor@rounded rectangle@south east\endcsname}% + {\csname pgf@anchor@rounded rectangle@south west\endcsname}% + {\externalpoint}{\centerpoint}% + \else% + % Between east and south east. + \ifx\eastarc\pgf@lib@sh@misc@rr@text@convex% + \pgfextract@process\arccenter{% + \pgfpointadd{\centerpoint}{\pgfpoint{\halfwidth+\chordwidth-\radius}{+0pt}}% + }% + \pgfmathpointintersectionoflineandarc{\externalpoint}{\centerpoint}% + {\arccenter}{360-\halfarcangle}{360}{\radius+\outerxsep and \radius+\outerysep}% + \else% + \pgfpointintersectionoflines% + {\csname pgf@anchor@rounded rectangle@north east\endcsname}% + {\csname pgf@anchor@rounded rectangle@south east\endcsname}% + {\externalpoint}{\centerpoint}% + \fi% + \fi% + \fi% + \fi% + }% +}% @@ -483,74 +483,74 @@ % /pgf/chamfered rectangle xsep : set the extent of the x chamferling. % /pgf/chamfered rectangle ysep : set the extent of the y chamferling. -\pgfkeys{/pgf/chamfered rectangle corners/.store in=\pgf@lib@sh@misc@cr@corners} -\pgfkeys{/tikz/chamfered rectangle corners/.store in=\pgf@lib@sh@misc@cr@corners} +\pgfkeys{/pgf/chamfered rectangle corners/.store in=\pgf@lib@sh@misc@cr@corners}% +\pgfkeys{/tikz/chamfered rectangle corners/.store in=\pgf@lib@sh@misc@cr@corners}% \def\pgf@lib@sh@misc@cr@chamferall{chamfer all}% -\def\pgf@lib@sh@misc@cr@chamfer{chamfer} +\def\pgf@lib@sh@misc@cr@chamfer{chamfer}% \let\pgf@lib@sh@misc@cr@corners\pgf@lib@sh@misc@cr@chamferall \def\pgf@lib@sh@misc@cr@getcorners{% - \let\northeastcorner\pgfutil@empty% - \let\southeastcorner\pgfutil@empty% - \let\southwestcorner\pgfutil@empty% - \let\northwestcorner\pgfutil@empty% - \expandafter\pgfutil@in@\expandafter{\pgf@lib@sh@misc@cr@corners}{chamfer all}% - \ifpgfutil@in@% - \let\northeastcorner\pgf@lib@sh@misc@cr@round% - \let\southeastcorner\pgf@lib@sh@misc@cr@round% - \let\southwestcorner\pgf@lib@sh@misc@cr@round% - \let\northwestcorner\pgf@lib@sh@misc@cr@round% - \let\pgf@next\relax% - \else% - \let\pgf@next\pgf@lib@sh@misc@cr@parsecorners% - \fi% - \pgf@next} + \let\northeastcorner\pgfutil@empty% + \let\southeastcorner\pgfutil@empty% + \let\southwestcorner\pgfutil@empty% + \let\northwestcorner\pgfutil@empty% + \expandafter\pgfutil@in@\expandafter{\pgf@lib@sh@misc@cr@corners}{chamfer all}% + \ifpgfutil@in@% + \let\northeastcorner\pgf@lib@sh@misc@cr@round% + \let\southeastcorner\pgf@lib@sh@misc@cr@round% + \let\southwestcorner\pgf@lib@sh@misc@cr@round% + \let\northwestcorner\pgf@lib@sh@misc@cr@round% + \let\pgf@next\relax% + \else% + \let\pgf@next\pgf@lib@sh@misc@cr@parsecorners% + \fi% + \pgf@next}% \def\pgf@lib@sh@misc@cr@parsecorners{% - \expandafter\pgf@@chamferedrectangle@parsecorners\pgf@lib@sh@misc@cr@corners,\pgf@stop,% -} - + \expandafter\pgf@@chamferedrectangle@parsecorners\pgf@lib@sh@misc@cr@corners,\pgf@stop,% +}% + \def\pgf@@chamferedrectangle@parsecorners#1,{% - \ifx#1\pgf@stop% - \let\pgf@next\relax% - \else% - \pgfutil@in@{@#1@}{@north east@@top left@}% - \ifpgfutil@in@% - \let\northeastcorner\pgf@lib@sh@misc@cr@chamfer% - \else% - \pgfutil@in@{@#1@}{@south east@@bottom right@}% - \ifpgfutil@in@% - \let\southeastcorner\pgf@lib@sh@misc@cr@chamfer% - \else% - \pgfutil@in@{@#1@}{@south west@@bottom left@}% - \ifpgfutil@in@% - \let\southwestcorner\pgf@lib@sh@misc@cr@chamfer% - \else% - \pgfutil@in@{@#1@}{@north west@@top right@}% - \ifpgfutil@in@% - \let\northwestcorner\pgf@lib@sh@misc@cr@round% - \fi% - \fi% - \fi% - \fi% - \let\pgf@next\pgf@@@chamferedrectangle@parsecorners% - \fi% - \pgf@next% -} + \ifx#1\pgf@stop% + \let\pgf@next\relax% + \else% + \pgfutil@in@{@#1@}{@north east@@top left@}% + \ifpgfutil@in@% + \let\northeastcorner\pgf@lib@sh@misc@cr@chamfer% + \else% + \pgfutil@in@{@#1@}{@south east@@bottom right@}% + \ifpgfutil@in@% + \let\southeastcorner\pgf@lib@sh@misc@cr@chamfer% + \else% + \pgfutil@in@{@#1@}{@south west@@bottom left@}% + \ifpgfutil@in@% + \let\southwestcorner\pgf@lib@sh@misc@cr@chamfer% + \else% + \pgfutil@in@{@#1@}{@north west@@top right@}% + \ifpgfutil@in@% + \let\northwestcorner\pgf@lib@sh@misc@cr@round% + \fi% + \fi% + \fi% + \fi% + \let\pgf@next\pgf@@@chamferedrectangle@parsecorners% + \fi% + \pgf@next% +}% \def\pgf@@@chamferedrectangle@parsecorners{% - \pgfutil@ifnextchar x{\pgf@@chamferedrectangle@parsecorners}{\pgf@@chamferedrectangle@parsecorners}% + \pgfutil@ifnextchar x{\pgf@@chamferedrectangle@parsecorners}{\pgf@@chamferedrectangle@parsecorners}% }% \pgfkeys{/pgf/.cd, - chamfered rectangle angle/.initial=45,% - chamfered rectangle xsep/.initial=.666ex,% - chamfered rectangle ysep/.initial=.666ex% -} + chamfered rectangle angle/.initial=45,% + chamfered rectangle xsep/.initial=.666ex,% + chamfered rectangle ysep/.initial=.666ex% +}% \pgfkeys{/pgf/chamfered rectangle sep/.style={% - /pgf/chamfered rectangle xsep=#1,/pgf/chamfered rectangle ysep=#1}% -} + /pgf/chamfered rectangle xsep=#1,/pgf/chamfered rectangle ysep=#1}% +}% @@ -559,569 +559,569 @@ % % \pgfdeclareshape{chamfered rectangle}{% - \savedmacro\getchamferedrectanglepoints{% - \pgf@lib@sh@misc@cr@getcorners% - % - % Get the node dimensions. - % - \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}% - \advance\pgf@xa.5\wd\pgfnodeparttextbox% - \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}% - \advance\pgf@ya.5\ht\pgfnodeparttextbox% - \advance\pgf@ya.5\dp\pgfnodeparttextbox% - % - % Get chamfer stuff. - % - \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/chamfered rectangle angle}}% - \ifdim\pgfutil@tempdima<89pt\relax% - \ifdim\pgfutil@tempdima<1pt\relax% - \pgfutil@tempdima1pt\relax% - \fi% - \else% - \pgfutil@tempdima89pt\relax% - \fi% - \pgfutil@tempdima-\pgfutil@tempdima% - \advance\pgfutil@tempdima90pt\relax% - \pgfmathtan@{\pgfmath@tonumber{\pgfutil@tempdima}}% - \let\tanangle\pgfmathresult% - \pgfmathcot@{\pgfmath@tonumber{\pgfutil@tempdima}}% - \let\cotangle\pgfmathresult% - \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/chamfered rectangle xsep}}% - \pgf@yc\tanangle\pgf@xb% - \ifdim\pgf@yc>\pgf@ya% - \pgf@yc\pgf@ya% - \pgf@xb\cotangle\pgf@yc% - \fi% - \pgfmathcot@{\pgfmath@tonumber{\pgfutil@tempdima}}% - \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/chamfered rectangle ysep}}% - \pgf@xc\cotangle\pgf@yb% - \ifdim\pgf@xc>\pgf@xa% - \pgf@xc\pgf@xa% - \pgf@yb\tanangle\pgf@xc% - \fi% - % - % Check for minimum width and height% - % - \pgfutil@tempdima\pgf@xa% - \advance\pgfutil@tempdima\pgf@xb% - \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum width}}% - \ifdim\pgfutil@tempdima<.5\pgfutil@tempdimb% - \pgf@xa.5\pgfutil@tempdimb% - \advance\pgf@xa-\pgf@xb% - \fi% - \pgfutil@tempdima\pgf@ya% - \advance\pgfutil@tempdima\pgf@yb% - \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum height}}% - \ifdim\pgfutil@tempdima<.5\pgfutil@tempdimb% - \pgf@ya.5\pgfutil@tempdimb% - \advance\pgf@ya-\pgf@yb% - \fi% - % - % Define the background path points. - % - \pgfextract@process\centerpoint{% - \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}% - \pgfmathsetlength\pgf@y{+.5\ht\pgfnodeparttextbox}% - \pgfmathaddtolength\pgf@y{+-.5\dp\pgfnodeparttextbox}% - }% - \pgfextract@process\beforenortheast{% - \centerpoint% - \advance\pgf@x\pgf@xa% - \advance\pgf@x\pgf@xb% - \advance\pgf@y\pgf@ya% - \advance\pgf@y-\pgf@yc% - }% - \pgfextract@process\northeast{% - \centerpoint% - \advance\pgf@x\pgf@xa% - \advance\pgf@y\pgf@ya% - \ifx\northeastcorner\pgfutil@empty% - \advance\pgf@x\pgf@xb% - \advance\pgf@y\pgf@yb% - \fi% - }% - \pgfextract@process\afternortheast{% - \centerpoint% - \advance\pgf@x\pgf@xa% - \advance\pgf@x-\pgf@xc% - \advance\pgf@y\pgf@ya% - \advance\pgf@y\pgf@yb% - }% - \pgfextract@process\northwest{% - \centerpoint% - \advance\pgf@x-\pgf@xa% - \advance\pgf@y\pgf@ya% - \ifx\northwestcorner\pgfutil@empty% - \advance\pgf@x-\pgf@xb% - \advance\pgf@y\pgf@yb% - \fi% - }% - \pgfextract@process\beforesouthwest{% - \centerpoint% - \advance\pgf@x-\pgf@xa% - \advance\pgf@x-\pgf@xb% - \advance\pgf@y-\pgf@ya% - \advance\pgf@y\pgf@yc% - }% - \pgfextract@process\southwest{% - \centerpoint% - \advance\pgf@x-\pgf@xa% - \advance\pgf@y-\pgf@ya% - \ifx\southwestcorner\pgfutil@empty% - \advance\pgf@x-\pgf@xb% - \advance\pgf@y-\pgf@yb% - \fi% - }% - \pgfextract@process\aftersouthwest{% - \centerpoint% - \advance\pgf@x-\pgf@xa% - \advance\pgf@x\pgf@xc% - \advance\pgf@y-\pgf@ya% - \advance\pgf@y-\pgf@yb% - }% - \pgfextract@process\southeast{% - \centerpoint% - \advance\pgf@x\pgf@xa% - \advance\pgf@y-\pgf@ya% - \ifx\southeastcorner\pgfutil@empty% - \advance\pgf@x\pgf@xb% - \advance\pgf@y-\pgf@yb% - \fi% - }% - % - % Calculate the `miter' vectors. - % - \pgfmathanglebetweenlines{\beforenortheast}{\afternortheast}{\beforenortheast}% - {\beforesouthwest\pgf@ya\pgf@y\beforenortheast\pgf@y\pgf@ya}% - \pgfutil@tempdima\pgfmathresult pt\relax% - \ifdim\pgfutil@tempdima>180pt\relax% - \advance\pgfutil@tempdima-180pt\relax% - \fi% - \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/outer xsep}}% - \ifdim\pgfutil@tempdima<90pt\relax% - \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}% - \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb% - \pgfutil@tempdima0pt\relax% - \else% - \pgfutil@tempdima.5\pgfutil@tempdima% - \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}% - \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb% - \pgfutil@tempdima-\pgfutil@tempdima% - \advance\pgfutil@tempdima90pt\relax% - \fi% - \pgfextract@process\before@ne@anchor{% - \beforenortheast% - \pgf@xa\pgf@x% - \pgf@ya\pgf@y% - \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}% - \advance\pgf@x\pgf@xa% - \advance\pgf@y\pgf@ya% - }% - \pgfutil@tempdima-\pgfutil@tempdima% - \advance\pgfutil@tempdima180pt\relax% - \pgfextract@process\before@sw@anchor{% - \beforesouthwest% - \pgf@xa\pgf@x% - \pgf@ya\pgf@y% - \pgfqpointpolar{-\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}% - \advance\pgf@x\pgf@xa% - \advance\pgf@y\pgf@ya% - }% - % - \pgfmathanglebetweenlines{\afternortheast}{\aftersouthwest\pgf@xa\pgf@x\afternortheast\pgf@x\pgf@xa}% - {\afternortheast}{\beforenortheast}% - \pgfutil@tempdima\pgfmathresult pt\relax% - \ifdim\pgfutil@tempdima>270pt\relax% - \advance\pgfutil@tempdima-270pt\relax% - \fi% - \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/outer ysep}}% - \ifdim\pgfutil@tempdima<90pt\relax% - \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}% - \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb% - \pgfutil@tempdima90pt\relax% - \else% - \pgfutil@tempdima.5\pgfutil@tempdima% - \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}% - \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb% - \fi% - % - \pgfextract@process\after@ne@anchor{% - \afternortheast% - \pgf@xa\pgf@x% - \pgf@ya\pgf@y% - \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}% - \advance\pgf@x\pgf@xa% - \advance\pgf@y\pgf@ya% - }% - \pgfutil@tempdima-\pgfutil@tempdima% - \advance\pgfutil@tempdima180pt\relax% - \pgfextract@process\after@sw@anchor{% - \aftersouthwest - \pgf@xa\pgf@x% - \pgf@ya\pgf@y% - \pgfqpointpolar{-\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}% - \advance\pgf@x\pgf@xa% - \advance\pgf@y\pgf@ya% - }% - \addtosavedmacro\before@ne@anchor% - \addtosavedmacro\after@ne@anchor% - \addtosavedmacro\before@sw@anchor% - \addtosavedmacro\after@sw@anchor% - \pgfextract@process\ne@anchor{% - \ifx\northeastcorner\pgfutil@empty% - \northeast% - \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}% - \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}% - \else% - \pgfpointlineattime{0.5}{\before@ne@anchor}{\after@ne@anchor}% - \fi% - }% - \pgfextract@process\nw@anchor{% - \ifx\northwestcorner\pgfutil@empty% - \northwest% - \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}% - \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}% - \else% - \pgfpointlineattime{0.5}{% - \before@ne@anchor% - \pgf@ya\pgf@y - \before@sw@anchor% - \pgf@y\pgf@ya% - }{% - \after@ne@anchor% - \pgf@ya\pgf@y - \after@sw@anchor% - \pgf@y\pgf@ya% - }% - \fi% - }% - \pgfextract@process\sw@anchor{% - \ifx\southwestcorner\pgfutil@empty% - \southwest% - \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}% - \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}% - \else% - \pgfpointlineattime{0.5}{\before@sw@anchor}{\after@sw@anchor}% - \fi% - }% - \pgfextract@process\se@anchor{% - \ifx\southeastcorner\pgfutil@empty% - \southeast% - \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}% - \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}% - \else% - \pgfpointlineattime{0.5}{% - \before@ne@anchor% - \pgf@xa\pgf@x - \before@sw@anchor% - \pgf@x\pgf@xa% - }{% - \after@ne@anchor% - \pgf@xa\pgf@x - \after@sw@anchor% - \pgf@x\pgf@xa% - }% - \fi% - }% - \addtosavedmacro\ne@anchor% - \addtosavedmacro\nw@anchor% - \addtosavedmacro\sw@anchor% - \addtosavedmacro\se@anchor% - }% - \savedanchor\centerpoint{% - \pgf@x.5\wd\pgfnodeparttextbox% - \pgf@y.5\ht\pgfnodeparttextbox% - \advance\pgf@y-.5\dp\pgfnodeparttextbox% - }% - \savedanchor\midpoint{% - \pgf@x.5\wd\pgfnodeparttextbox% - \pgfmathsetlength\pgf@y{+.5ex}% - }% - \savedanchor\basepoint{% - \pgf@x.5\wd\pgfnodeparttextbox% - \pgf@y0pt% - }% - \anchor{center}{\centerpoint}% - \anchor{mid}{\midpoint}% - \anchor{mid east}{% - \getchamferedrectanglepoints% - \midpoint% - \pgf@ya\pgf@y% - \pgf@process{% - \before@sw@anchor% - \pgf@ya\pgf@y% - \before@ne@anchor% - \pgf@y\pgf@ya - }% - \ifdim\pgf@ya<\pgf@y% - \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\after@sw@anchor\pgf@ya\pgf@y\after@ne@anchor\pgf@y\pgf@ya}% - \else% - \pgf@process{\before@ne@anchor}% - \ifdim\pgf@ya<\pgf@y% - \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\before@ne@anchor}% - \else% - \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\before@ne@anchor}% - {\after@ne@anchor}% - \fi% - \fi% - }% - \anchor{mid west}{% - \getchamferedrectanglepoints% - \midpoint% - \pgf@ya\pgf@y% - \pgf@process{\before@sw@anchor}% - \ifdim\pgf@ya<\pgf@y% - \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\before@sw@anchor}{\after@sw@anchor}% - \else% - \pgf@process{\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - \ifdim\pgf@ya<\pgf@y% - \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\before@sw@anchor}% - \else% - \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\after@ne@anchor\pgf@ya\pgf@y\after@sw@anchor\pgf@y\pgf@ya}% - \fi% - \fi% - }% - \anchor{base}{\basepoint}% - \anchor{base east}{% - \getchamferedrectanglepoints% - \basepoint% - \pgf@ya\pgf@y% - \pgf@process{% - \before@sw@anchor% - \pgf@ya\pgf@y% - \before@ne@anchor% - \pgf@y\pgf@ya - }% - \ifdim\pgf@ya<\pgf@y% - \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\after@sw@anchor\pgf@ya\pgf@y\after@ne@anchor\pgf@y\pgf@ya}% - \else% - \pgf@process{\before@ne@anchor}% - \ifdim\pgf@ya<\pgf@y% - \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\before@ne@anchor}% - \else% - \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - {\before@ne@anchor}% - {\after@ne@anchor}% - \fi% - \fi% - }% - \anchor{base west}{% - \getchamferedrectanglepoints% - \basepoint% - \pgf@ya\pgf@y% - \pgf@process{\before@sw@anchor}% - \ifdim\pgf@ya<\pgf@y% - \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\before@sw@anchor}{\after@sw@anchor}% - \else% - \pgf@process{\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - \ifdim\pgf@ya<\pgf@y% - \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\before@sw@anchor}% - \else% - \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - {\after@ne@anchor\pgf@ya\pgf@y\after@sw@anchor\pgf@y\pgf@ya}% - \fi% - \fi% - }% - \anchor{before north east}{\getchamferedrectanglepoints\before@ne@anchor}% - \anchor{north east}{\getchamferedrectanglepoints\ne@anchor}% - \anchor{after north east}{\getchamferedrectanglepoints\after@ne@anchor}% - \anchor{north}{% - \getchamferedrectanglepoints% - \centerpoint% - \pgf@xa\pgf@x% - \after@ne@anchor% - \pgf@x\pgf@xa}% - \anchor{before north west}{% - \getchamferedrectanglepoints% - \after@sw@anchor% - \pgf@xa\pgf@x% - \after@ne@anchor% - \pgf@x\pgf@xa}% - \anchor{north west}{\getchamferedrectanglepoints\nw@anchor}% - \anchor{after north west}{% - \getchamferedrectanglepoints% - \before@sw@anchor% - \pgf@xa\pgf@x% - \before@ne@anchor% - \pgf@x\pgf@xa}% - \anchor{west}{% - \getchamferedrectanglepoints% - \centerpoint% - \pgf@ya\pgf@y% - \before@sw@anchor% - \pgf@y\pgf@ya}% - \anchor{before south west}{\getchamferedrectanglepoints\before@sw@anchor}% - \anchor{south west}{\getchamferedrectanglepoints\sw@anchor}% - \anchor{after south west}{\getchamferedrectanglepoints\after@sw@anchor}% - \anchor{south}{% - \getchamferedrectanglepoints% - \centerpoint% - \pgf@xa\pgf@x% - \after@sw@anchor% - \pgf@x\pgf@xa}% - \anchor{before south east}{% - \getchamferedrectanglepoints% - \after@sw@anchor% - \pgf@ya\pgf@y% - \after@ne@anchor% - \pgf@y\pgf@ya}% - \anchor{south east}{\getchamferedrectanglepoints\se@anchor}% - \anchor{after south east}{% - \getchamferedrectanglepoints% - \before@sw@anchor% - \pgf@ya\pgf@y% - \before@ne@anchor% - \pgf@y\pgf@ya}% - \anchor{east}{% - \getchamferedrectanglepoints% - \centerpoint% - \pgf@ya\pgf@y% - \before@ne@anchor% - \pgf@y\pgf@ya}% - \backgroundpath{% - \pgfpathmoveto{\beforenortheast}% - \pgfpathlineto{\northeast}% - \pgfpathlineto{\afternortheast}% - \pgfpathlineto{\aftersouthwest\pgf@xa\pgf@x\afternortheast\pgf@x\pgf@xa}% - \pgfpathlineto{\northwest}% - \pgfpathlineto{\beforesouthwest\pgf@xa\pgf@x\beforenortheast\pgf@x\pgf@xa}% - \pgfpathlineto{\beforesouthwest}% - \pgfpathlineto{\southwest}% - \pgfpathlineto{\aftersouthwest}% - \pgfpathlineto{\aftersouthwest\pgf@ya\pgf@y\afternortheast\pgf@y\pgf@ya}% - \pgfpathlineto{\southeast}% - \pgfpathlineto{\beforesouthwest\pgf@ya\pgf@y\beforenortheast\pgf@y\pgf@ya}% - \pgfpathclose% - } - \anchorborder{% - \pgfextract@process\externalpoint{% - \pgf@xa\pgf@x% - \pgf@ya\pgf@y% - \centerpoint% - \advance\pgf@x\pgf@xa% - \advance\pgf@y\pgf@ya% - }% - \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}% - \let\externalangle\pgfmathresult% - \getchamferedrectanglepoints% - \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% west. - \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% north. - \pgfmathanglebetweenpoints{\centerpoint}{\ne@anchor}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% north east. - \pgfmathanglebetweenpoints{\centerpoint}{\before@ne@anchor}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% before north east. - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\centerpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}{\before@ne@anchor}% - \else% - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\before@ne@anchor}{\ne@anchor}% - \fi% - \else% - \pgfmathanglebetweenpoints{\centerpoint}{\after@ne@anchor}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% after north east. - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\ne@anchor}{\after@ne@anchor}% - \else% - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\after@ne@anchor}{\centerpoint\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% - \fi% - \fi% - \else% - \pgfmathanglebetweenpoints{\centerpoint}{\nw@anchor}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% north west. - \pgfmathanglebetweenpoints{\centerpoint}{\after@sw@anchor\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% before north west. - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\centerpoint\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% - {\after@sw@anchor\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% - \else% - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\after@sw@anchor\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% - {\nw@anchor}% - \fi% - \else% - \pgfmathanglebetweenpoints{\centerpoint}{\before@sw@anchor\pgf@xa\pgf@x\before@ne@anchor\pgf@x\pgf@xa}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% after north west. - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\nw@anchor}{\before@sw@anchor\pgf@xa\pgf@x\before@ne@anchor\pgf@x\pgf@xa}% - \else% - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\before@sw@anchor\pgf@xa\pgf@x\before@ne@anchor\pgf@x\pgf@xa}% - {\before@sw@anchor\pgf@xa\pgf@x\centerpoint\pgf@x\pgf@xa}% - \fi% - \fi% - \fi% - \else% - \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% south. - \pgfmathanglebetweenpoints{\centerpoint}{\sw@anchor}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% south west. - \pgfmathanglebetweenpoints{\centerpoint}{\before@sw@anchor}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% before south west. - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\before@sw@anchor\pgf@xa\pgf@x\centerpoint\pgf@x\pgf@xa}% - {\before@sw@anchor}% - \else% - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\before@sw@anchor}{\sw@anchor}% - \fi% - \else% - \pgfmathanglebetweenpoints{\centerpoint}{\after@sw@anchor}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% after south west. - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\sw@anchor}{\after@sw@anchor}% - \else% - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\after@sw@anchor}{\centerpoint\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% - \fi% - \fi% - \else% - \pgfmathanglebetweenpoints{\centerpoint}{\se@anchor}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% south east. - \pgfmathanglebetweenpoints{\centerpoint}{\after@ne@anchor\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% before south east. - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\after@ne@anchor\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% - {\centerpoint\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% - \else% - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\after@ne@anchor\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}{\se@anchor} - \fi% - \else% - \pgfmathanglebetweenpoints{\centerpoint}{\before@ne@anchor\pgf@xa\pgf@x\before@sw@anchor\pgf@x\pgf@xa}% - \ifdim\externalangle pt<\pgfmathresult pt\relax% after south east. - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\se@anchor}{\before@ne@anchor\pgf@xa\pgf@x\before@sw@anchor\pgf@x\pgf@xa}% - \else% - \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% - {\before@ne@anchor\pgf@xa\pgf@x\before@sw@anchor\pgf@x\pgf@xa}% - {\centerpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% - \fi% - \fi% - \fi% - \fi% - }% -} + \savedmacro\getchamferedrectanglepoints{% + \pgf@lib@sh@misc@cr@getcorners% + % + % Get the node dimensions. + % + \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/inner xsep}}% + \advance\pgf@xa.5\wd\pgfnodeparttextbox% + \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/inner ysep}}% + \advance\pgf@ya.5\ht\pgfnodeparttextbox% + \advance\pgf@ya.5\dp\pgfnodeparttextbox% + % + % Get chamfer stuff. + % + \pgfmathsetlength\pgfutil@tempdima{\pgfkeysvalueof{/pgf/chamfered rectangle angle}}% + \ifdim\pgfutil@tempdima<89pt\relax% + \ifdim\pgfutil@tempdima<1pt\relax% + \pgfutil@tempdima1pt\relax% + \fi% + \else% + \pgfutil@tempdima89pt\relax% + \fi% + \pgfutil@tempdima-\pgfutil@tempdima% + \advance\pgfutil@tempdima90pt\relax% + \pgfmathtan@{\pgfmath@tonumber{\pgfutil@tempdima}}% + \let\tanangle\pgfmathresult% + \pgfmathcot@{\pgfmath@tonumber{\pgfutil@tempdima}}% + \let\cotangle\pgfmathresult% + \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/chamfered rectangle xsep}}% + \pgf@yc\tanangle\pgf@xb% + \ifdim\pgf@yc>\pgf@ya% + \pgf@yc\pgf@ya% + \pgf@xb\cotangle\pgf@yc% + \fi% + \pgfmathcot@{\pgfmath@tonumber{\pgfutil@tempdima}}% + \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/chamfered rectangle ysep}}% + \pgf@xc\cotangle\pgf@yb% + \ifdim\pgf@xc>\pgf@xa% + \pgf@xc\pgf@xa% + \pgf@yb\tanangle\pgf@xc% + \fi% + % + % Check for minimum width and height% + % + \pgfutil@tempdima\pgf@xa% + \advance\pgfutil@tempdima\pgf@xb% + \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum width}}% + \ifdim\pgfutil@tempdima<.5\pgfutil@tempdimb% + \pgf@xa.5\pgfutil@tempdimb% + \advance\pgf@xa-\pgf@xb% + \fi% + \pgfutil@tempdima\pgf@ya% + \advance\pgfutil@tempdima\pgf@yb% + \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/minimum height}}% + \ifdim\pgfutil@tempdima<.5\pgfutil@tempdimb% + \pgf@ya.5\pgfutil@tempdimb% + \advance\pgf@ya-\pgf@yb% + \fi% + % + % Define the background path points. + % + \pgfextract@process\centerpoint{% + \pgfmathsetlength\pgf@x{+.5\wd\pgfnodeparttextbox}% + \pgfmathsetlength\pgf@y{+.5\ht\pgfnodeparttextbox}% + \pgfmathaddtolength\pgf@y{+-.5\dp\pgfnodeparttextbox}% + }% + \pgfextract@process\beforenortheast{% + \centerpoint% + \advance\pgf@x\pgf@xa% + \advance\pgf@x\pgf@xb% + \advance\pgf@y\pgf@ya% + \advance\pgf@y-\pgf@yc% + }% + \pgfextract@process\northeast{% + \centerpoint% + \advance\pgf@x\pgf@xa% + \advance\pgf@y\pgf@ya% + \ifx\northeastcorner\pgfutil@empty% + \advance\pgf@x\pgf@xb% + \advance\pgf@y\pgf@yb% + \fi% + }% + \pgfextract@process\afternortheast{% + \centerpoint% + \advance\pgf@x\pgf@xa% + \advance\pgf@x-\pgf@xc% + \advance\pgf@y\pgf@ya% + \advance\pgf@y\pgf@yb% + }% + \pgfextract@process\northwest{% + \centerpoint% + \advance\pgf@x-\pgf@xa% + \advance\pgf@y\pgf@ya% + \ifx\northwestcorner\pgfutil@empty% + \advance\pgf@x-\pgf@xb% + \advance\pgf@y\pgf@yb% + \fi% + }% + \pgfextract@process\beforesouthwest{% + \centerpoint% + \advance\pgf@x-\pgf@xa% + \advance\pgf@x-\pgf@xb% + \advance\pgf@y-\pgf@ya% + \advance\pgf@y\pgf@yc% + }% + \pgfextract@process\southwest{% + \centerpoint% + \advance\pgf@x-\pgf@xa% + \advance\pgf@y-\pgf@ya% + \ifx\southwestcorner\pgfutil@empty% + \advance\pgf@x-\pgf@xb% + \advance\pgf@y-\pgf@yb% + \fi% + }% + \pgfextract@process\aftersouthwest{% + \centerpoint% + \advance\pgf@x-\pgf@xa% + \advance\pgf@x\pgf@xc% + \advance\pgf@y-\pgf@ya% + \advance\pgf@y-\pgf@yb% + }% + \pgfextract@process\southeast{% + \centerpoint% + \advance\pgf@x\pgf@xa% + \advance\pgf@y-\pgf@ya% + \ifx\southeastcorner\pgfutil@empty% + \advance\pgf@x\pgf@xb% + \advance\pgf@y-\pgf@yb% + \fi% + }% + % + % Calculate the `miter' vectors. + % + \pgfmathanglebetweenlines{\beforenortheast}{\afternortheast}{\beforenortheast}% + {\beforesouthwest\pgf@ya\pgf@y\beforenortheast\pgf@y\pgf@ya}% + \pgfutil@tempdima\pgfmathresult pt\relax% + \ifdim\pgfutil@tempdima>180pt\relax% + \advance\pgfutil@tempdima-180pt\relax% + \fi% + \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/outer xsep}}% + \ifdim\pgfutil@tempdima<90pt\relax% + \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}% + \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb% + \pgfutil@tempdima0pt\relax% + \else% + \pgfutil@tempdima.5\pgfutil@tempdima% + \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}% + \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb% + \pgfutil@tempdima-\pgfutil@tempdima% + \advance\pgfutil@tempdima90pt\relax% + \fi% + \pgfextract@process\before@ne@anchor{% + \beforenortheast% + \pgf@xa\pgf@x% + \pgf@ya\pgf@y% + \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}% + \advance\pgf@x\pgf@xa% + \advance\pgf@y\pgf@ya% + }% + \pgfutil@tempdima-\pgfutil@tempdima% + \advance\pgfutil@tempdima180pt\relax% + \pgfextract@process\before@sw@anchor{% + \beforesouthwest% + \pgf@xa\pgf@x% + \pgf@ya\pgf@y% + \pgfqpointpolar{-\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}% + \advance\pgf@x\pgf@xa% + \advance\pgf@y\pgf@ya% + }% + % + \pgfmathanglebetweenlines{\afternortheast}{\aftersouthwest\pgf@xa\pgf@x\afternortheast\pgf@x\pgf@xa}% + {\afternortheast}{\beforenortheast}% + \pgfutil@tempdima\pgfmathresult pt\relax% + \ifdim\pgfutil@tempdima>270pt\relax% + \advance\pgfutil@tempdima-270pt\relax% + \fi% + \pgfmathsetlength\pgfutil@tempdimb{\pgfkeysvalueof{/pgf/outer ysep}}% + \ifdim\pgfutil@tempdima<90pt\relax% + \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}% + \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb% + \pgfutil@tempdima90pt\relax% + \else% + \pgfutil@tempdima.5\pgfutil@tempdima% + \pgfmathcosec@{\pgfmath@tonumber{\pgfutil@tempdima}}% + \pgfutil@tempdimb\pgfmathresult\pgfutil@tempdimb% + \fi% + % + \pgfextract@process\after@ne@anchor{% + \afternortheast% + \pgf@xa\pgf@x% + \pgf@ya\pgf@y% + \pgfqpointpolar{\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}% + \advance\pgf@x\pgf@xa% + \advance\pgf@y\pgf@ya% + }% + \pgfutil@tempdima-\pgfutil@tempdima% + \advance\pgfutil@tempdima180pt\relax% + \pgfextract@process\after@sw@anchor{% + \aftersouthwest + \pgf@xa\pgf@x% + \pgf@ya\pgf@y% + \pgfqpointpolar{-\pgfmath@tonumber{\pgfutil@tempdima}}{\the\pgfutil@tempdimb}% + \advance\pgf@x\pgf@xa% + \advance\pgf@y\pgf@ya% + }% + \addtosavedmacro\before@ne@anchor% + \addtosavedmacro\after@ne@anchor% + \addtosavedmacro\before@sw@anchor% + \addtosavedmacro\after@sw@anchor% + \pgfextract@process\ne@anchor{% + \ifx\northeastcorner\pgfutil@empty% + \northeast% + \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}% + \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}% + \else% + \pgfpointlineattime{0.5}{\before@ne@anchor}{\after@ne@anchor}% + \fi% + }% + \pgfextract@process\nw@anchor{% + \ifx\northwestcorner\pgfutil@empty% + \northwest% + \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}% + \pgfmathaddtolength\pgf@y{\pgfkeysvalueof{/pgf/outer ysep}}% + \else% + \pgfpointlineattime{0.5}{% + \before@ne@anchor% + \pgf@ya\pgf@y + \before@sw@anchor% + \pgf@y\pgf@ya% + }{% + \after@ne@anchor% + \pgf@ya\pgf@y + \after@sw@anchor% + \pgf@y\pgf@ya% + }% + \fi% + }% + \pgfextract@process\sw@anchor{% + \ifx\southwestcorner\pgfutil@empty% + \southwest% + \pgfmathaddtolength\pgf@x{-\pgfkeysvalueof{/pgf/outer xsep}}% + \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}% + \else% + \pgfpointlineattime{0.5}{\before@sw@anchor}{\after@sw@anchor}% + \fi% + }% + \pgfextract@process\se@anchor{% + \ifx\southeastcorner\pgfutil@empty% + \southeast% + \pgfmathaddtolength\pgf@x{\pgfkeysvalueof{/pgf/outer xsep}}% + \pgfmathaddtolength\pgf@y{-\pgfkeysvalueof{/pgf/outer ysep}}% + \else% + \pgfpointlineattime{0.5}{% + \before@ne@anchor% + \pgf@xa\pgf@x + \before@sw@anchor% + \pgf@x\pgf@xa% + }{% + \after@ne@anchor% + \pgf@xa\pgf@x + \after@sw@anchor% + \pgf@x\pgf@xa% + }% + \fi% + }% + \addtosavedmacro\ne@anchor% + \addtosavedmacro\nw@anchor% + \addtosavedmacro\sw@anchor% + \addtosavedmacro\se@anchor% + }% + \savedanchor\centerpoint{% + \pgf@x.5\wd\pgfnodeparttextbox% + \pgf@y.5\ht\pgfnodeparttextbox% + \advance\pgf@y-.5\dp\pgfnodeparttextbox% + }% + \savedanchor\midpoint{% + \pgf@x.5\wd\pgfnodeparttextbox% + \pgfmathsetlength\pgf@y{+.5ex}% + }% + \savedanchor\basepoint{% + \pgf@x.5\wd\pgfnodeparttextbox% + \pgf@y0pt% + }% + \anchor{center}{\centerpoint}% + \anchor{mid}{\midpoint}% + \anchor{mid east}{% + \getchamferedrectanglepoints% + \midpoint% + \pgf@ya\pgf@y% + \pgf@process{% + \before@sw@anchor% + \pgf@ya\pgf@y% + \before@ne@anchor% + \pgf@y\pgf@ya% + }% + \ifdim\pgf@ya<\pgf@y% + \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\after@sw@anchor\pgf@ya\pgf@y\after@ne@anchor\pgf@y\pgf@ya}% + \else% + \pgf@process{\before@ne@anchor}% + \ifdim\pgf@ya<\pgf@y% + \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\before@ne@anchor}% + \else% + \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\before@ne@anchor}% + {\after@ne@anchor}% + \fi% + \fi% + }% + \anchor{mid west}{% + \getchamferedrectanglepoints% + \midpoint% + \pgf@ya\pgf@y% + \pgf@process{\before@sw@anchor}% + \ifdim\pgf@ya<\pgf@y% + \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\before@sw@anchor}{\after@sw@anchor}% + \else% + \pgf@process{\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + \ifdim\pgf@ya<\pgf@y% + \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\before@sw@anchor}% + \else% + \pgfpointintersectionoflines{\midpoint}{\midpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\after@ne@anchor\pgf@ya\pgf@y\after@sw@anchor\pgf@y\pgf@ya}% + \fi% + \fi% + }% + \anchor{base}{\basepoint}% + \anchor{base east}{% + \getchamferedrectanglepoints% + \basepoint% + \pgf@ya\pgf@y% + \pgf@process{% + \before@sw@anchor% + \pgf@ya\pgf@y% + \before@ne@anchor% + \pgf@y\pgf@ya% + }% + \ifdim\pgf@ya<\pgf@y% + \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\after@sw@anchor\pgf@ya\pgf@y\after@ne@anchor\pgf@y\pgf@ya}% + \else% + \pgf@process{\before@ne@anchor}% + \ifdim\pgf@ya<\pgf@y% + \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\before@sw@anchor\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\before@ne@anchor}% + \else% + \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + {\before@ne@anchor}% + {\after@ne@anchor}% + \fi% + \fi% + }% + \anchor{base west}{% + \getchamferedrectanglepoints% + \basepoint% + \pgf@ya\pgf@y% + \pgf@process{\before@sw@anchor}% + \ifdim\pgf@ya<\pgf@y% + \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\before@sw@anchor}{\after@sw@anchor}% + \else% + \pgf@process{\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + \ifdim\pgf@ya<\pgf@y% + \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\before@sw@anchor}% + \else% + \pgfpointintersectionoflines{\basepoint}{\basepoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\before@ne@anchor\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + {\after@ne@anchor\pgf@ya\pgf@y\after@sw@anchor\pgf@y\pgf@ya}% + \fi% + \fi% + }% + \anchor{before north east}{\getchamferedrectanglepoints\before@ne@anchor}% + \anchor{north east}{\getchamferedrectanglepoints\ne@anchor}% + \anchor{after north east}{\getchamferedrectanglepoints\after@ne@anchor}% + \anchor{north}{% + \getchamferedrectanglepoints% + \centerpoint% + \pgf@xa\pgf@x% + \after@ne@anchor% + \pgf@x\pgf@xa}% + \anchor{before north west}{% + \getchamferedrectanglepoints% + \after@sw@anchor% + \pgf@xa\pgf@x% + \after@ne@anchor% + \pgf@x\pgf@xa}% + \anchor{north west}{\getchamferedrectanglepoints\nw@anchor}% + \anchor{after north west}{% + \getchamferedrectanglepoints% + \before@sw@anchor% + \pgf@xa\pgf@x% + \before@ne@anchor% + \pgf@x\pgf@xa}% + \anchor{west}{% + \getchamferedrectanglepoints% + \centerpoint% + \pgf@ya\pgf@y% + \before@sw@anchor% + \pgf@y\pgf@ya}% + \anchor{before south west}{\getchamferedrectanglepoints\before@sw@anchor}% + \anchor{south west}{\getchamferedrectanglepoints\sw@anchor}% + \anchor{after south west}{\getchamferedrectanglepoints\after@sw@anchor}% + \anchor{south}{% + \getchamferedrectanglepoints% + \centerpoint% + \pgf@xa\pgf@x% + \after@sw@anchor% + \pgf@x\pgf@xa}% + \anchor{before south east}{% + \getchamferedrectanglepoints% + \after@sw@anchor% + \pgf@ya\pgf@y% + \after@ne@anchor% + \pgf@y\pgf@ya}% + \anchor{south east}{\getchamferedrectanglepoints\se@anchor}% + \anchor{after south east}{% + \getchamferedrectanglepoints% + \before@sw@anchor% + \pgf@ya\pgf@y% + \before@ne@anchor% + \pgf@y\pgf@ya}% + \anchor{east}{% + \getchamferedrectanglepoints% + \centerpoint% + \pgf@ya\pgf@y% + \before@ne@anchor% + \pgf@y\pgf@ya}% + \backgroundpath{% + \pgfpathmoveto{\beforenortheast}% + \pgfpathlineto{\northeast}% + \pgfpathlineto{\afternortheast}% + \pgfpathlineto{\aftersouthwest\pgf@xa\pgf@x\afternortheast\pgf@x\pgf@xa}% + \pgfpathlineto{\northwest}% + \pgfpathlineto{\beforesouthwest\pgf@xa\pgf@x\beforenortheast\pgf@x\pgf@xa}% + \pgfpathlineto{\beforesouthwest}% + \pgfpathlineto{\southwest}% + \pgfpathlineto{\aftersouthwest}% + \pgfpathlineto{\aftersouthwest\pgf@ya\pgf@y\afternortheast\pgf@y\pgf@ya}% + \pgfpathlineto{\southeast}% + \pgfpathlineto{\beforesouthwest\pgf@ya\pgf@y\beforenortheast\pgf@y\pgf@ya}% + \pgfpathclose% + }% + \anchorborder{% + \pgfextract@process\externalpoint{% + \pgf@xa\pgf@x% + \pgf@ya\pgf@y% + \centerpoint% + \advance\pgf@x\pgf@xa% + \advance\pgf@y\pgf@ya% + }% + \pgfmathanglebetweenpoints{\centerpoint}{\externalpoint}% + \let\externalangle\pgfmathresult% + \getchamferedrectanglepoints% + \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\pgf@ya\pgf@y\before@sw@anchor\pgf@y\pgf@ya}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% west. + \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% north. + \pgfmathanglebetweenpoints{\centerpoint}{\ne@anchor}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% north east. + \pgfmathanglebetweenpoints{\centerpoint}{\before@ne@anchor}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% before north east. + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\centerpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}{\before@ne@anchor}% + \else% + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\before@ne@anchor}{\ne@anchor}% + \fi% + \else% + \pgfmathanglebetweenpoints{\centerpoint}{\after@ne@anchor}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% after north east. + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\ne@anchor}{\after@ne@anchor}% + \else% + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\after@ne@anchor}{\centerpoint\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% + \fi% + \fi% + \else% + \pgfmathanglebetweenpoints{\centerpoint}{\nw@anchor}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% north west. + \pgfmathanglebetweenpoints{\centerpoint}{\after@sw@anchor\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% before north west. + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\centerpoint\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% + {\after@sw@anchor\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% + \else% + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\after@sw@anchor\pgf@xa\pgf@x\after@ne@anchor\pgf@x\pgf@xa}% + {\nw@anchor}% + \fi% + \else% + \pgfmathanglebetweenpoints{\centerpoint}{\before@sw@anchor\pgf@xa\pgf@x\before@ne@anchor\pgf@x\pgf@xa}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% after north west. + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\nw@anchor}{\before@sw@anchor\pgf@xa\pgf@x\before@ne@anchor\pgf@x\pgf@xa}% + \else% + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\before@sw@anchor\pgf@xa\pgf@x\before@ne@anchor\pgf@x\pgf@xa}% + {\before@sw@anchor\pgf@xa\pgf@x\centerpoint\pgf@x\pgf@xa}% + \fi% + \fi% + \fi% + \else% + \pgfmathanglebetweenpoints{\centerpoint}{\centerpoint\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% south. + \pgfmathanglebetweenpoints{\centerpoint}{\sw@anchor}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% south west. + \pgfmathanglebetweenpoints{\centerpoint}{\before@sw@anchor}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% before south west. + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\before@sw@anchor\pgf@xa\pgf@x\centerpoint\pgf@x\pgf@xa}% + {\before@sw@anchor}% + \else% + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\before@sw@anchor}{\sw@anchor}% + \fi% + \else% + \pgfmathanglebetweenpoints{\centerpoint}{\after@sw@anchor}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% after south west. + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\sw@anchor}{\after@sw@anchor}% + \else% + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\after@sw@anchor}{\centerpoint\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% + \fi% + \fi% + \else% + \pgfmathanglebetweenpoints{\centerpoint}{\se@anchor}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% south east. + \pgfmathanglebetweenpoints{\centerpoint}{\after@ne@anchor\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% before south east. + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\after@ne@anchor\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% + {\centerpoint\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}% + \else% + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\after@ne@anchor\pgf@xa\pgf@x\after@sw@anchor\pgf@x\pgf@xa}{\se@anchor} + \fi% + \else% + \pgfmathanglebetweenpoints{\centerpoint}{\before@ne@anchor\pgf@xa\pgf@x\before@sw@anchor\pgf@x\pgf@xa}% + \ifdim\externalangle pt<\pgfmathresult pt\relax% after south east. + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\se@anchor}{\before@ne@anchor\pgf@xa\pgf@x\before@sw@anchor\pgf@x\pgf@xa}% + \else% + \pgfpointintersectionoflines{\centerpoint}{\externalpoint}% + {\before@ne@anchor\pgf@xa\pgf@x\before@sw@anchor\pgf@x\pgf@xa}% + {\centerpoint\pgf@ya\pgf@y\before@ne@anchor\pgf@y\pgf@ya}% + \fi% + \fi% + \fi% + \fi% + }% +}% \endinput |