summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/tikz-ext/tikzlibraryext.node-families.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/tikz-ext/tikzlibraryext.node-families.code.tex')
-rw-r--r--graphics/pgf/contrib/tikz-ext/tikzlibraryext.node-families.code.tex102
1 files changed, 68 insertions, 34 deletions
diff --git a/graphics/pgf/contrib/tikz-ext/tikzlibraryext.node-families.code.tex b/graphics/pgf/contrib/tikz-ext/tikzlibraryext.node-families.code.tex
index 9cee62be90..699170d178 100644
--- a/graphics/pgf/contrib/tikz-ext/tikzlibraryext.node-families.code.tex
+++ b/graphics/pgf/contrib/tikz-ext/tikzlibraryext.node-families.code.tex
@@ -6,20 +6,22 @@
% 2. under the GNU Free Documentation License.
%
-\def\tikz@nf@align@left#1{}
-\def\tikz@nf@align@center#1{\kern.5#1}
-\def\tikz@nf@align@right#1{\kern#1}
+\def\tikzext@nf@align@left#1{}
+\def\tikzext@nf@align@center#1{\kern.5#1}
+\def\tikzext@nf@align@right#1{\kern#1}
\pgfqkeys{/tikz/node family}{
width/.initial=,
+ width/.append style={/pgf/minimum width=nf_width},
height/.initial=,
- size/.style=\pgfqkeys{/tikz/node family}{width={#1},height={#1}},
+ height/.append style={/pgf/minimum height=nf_height},
+ size/.code=\pgfqkeys{/tikz/node family}{width={#1},height={#1}},
text depth/.initial=,
text height/.initial=,
text width align/.is choice,
- text width align/left/.code=\let\tikz@nf@align@action\tikz@nf@align@left,
- text width align/center/.code=\let\tikz@nf@align@action\tikz@nf@align@center,
- text width align/right/.code=\let\tikz@nf@align@action\tikz@nf@align@right,
+ text width align/left/.code=\let\tikzext@nf@align@action\tikzext@nf@align@left,
+ text width align/center/.code=\let\tikzext@nf@align@action\tikzext@nf@align@center,
+ text width align/right/.code=\let\tikzext@nf@align@action\tikzext@nf@align@right,
text width align=center,
text width/.initial=,
text/.code=\pgfqkeys{/tikz/node family}{text depth={#1},text height={#1},text width={#1}},
@@ -28,40 +30,39 @@
\tikzset{node family/.code=\pgfqkeys{/tikz/node family}{#1}}
% #1 = family type + name
-\def\tikz@nf@save#1{%
+\def\tikzext@nf@save#1{%
%\errmessage{#1}%
\immediate\write\pgfutil@auxout{%
- \noexpand\expandafter\noexpand\gdef\noexpand\csname tikz@nf@#1@previous\endcsname
- {\csname tikz@nf@#1@next\endcsname}%
+ \noexpand\expandafter\noexpand\gdef\noexpand\csname tikzext@nf@#1@previous\endcsname
+ {\csname tikzext@nf@#1@next\endcsname}%
}%
- %\expandafter\global\expandafter\let\csname tikz@nf@#1@next\endcsname\relax
}
% #1 = value to set
% #2 = family type
% #3 = return dimen
-\def\tikz@nf@getandset#1#2#3{%
+\def\tikzext@nf@getandset#1#2#3{%
% what's our family's name?
#3=0pt\relax
- \pgfkeysgetvalue{/tikz/node family/#2}\tikz@nf@familyname
- \pgfutil@ifxempty\tikz@nf@familyname{% no family to deal with
+ \pgfkeysgetvalue{/tikz/node family/#2}\tikzext@nf@familyname
+ \pgfutil@ifxempty\tikzext@nf@familyname{% no family to deal with
}{%
- \edef\tikz@nf@familyname{\pgfkeysvalueof{/tikz/node family/prefix}\tikz@nf@familyname}%
+ \edef\tikzext@nf@familyname{\pgfkeysvalueof{/tikz/node family/prefix}\tikzext@nf@familyname}%
% we need to save the value for the next run
- \pgfutil@IfUndefined{tikz@nf@#2@\tikz@nf@familyname @next}{%
+ \pgfutil@IfUndefined{tikzext@nf@#2@\tikzext@nf@familyname @next}{%
% first time: define first value and install hook at end of picture
- \expandafter\xdef\csname tikz@nf@#2@\tikz@nf@familyname @next\endcsname{#1}%
- \edef\tikz@temp{\noexpand\tikz@nf@save{#2@\tikz@nf@familyname}}%
+ \expandafter\xdef\csname tikzext@nf@#2@\tikzext@nf@familyname @next\endcsname{#1}%
+ \edef\tikz@temp{\noexpand\tikzext@nf@save{#2@\tikzext@nf@familyname}}%
%\expandafter\AtVeryEndDocument\expandafter{\tikz@temp}%
\expandafter\pgfutil@g@addto@macro\expandafter\tikz@atend@picture\expandafter{\tikz@temp}%
}{%
- \ifdim\csname tikz@nf@#2@\tikz@nf@familyname @next\endcsname<#1\relax
- \expandafter\xdef\csname tikz@nf@#2@\tikz@nf@familyname @next\endcsname{#1}%
+ \ifdim\csname tikzext@nf@#2@\tikzext@nf@familyname @next\endcsname<#1\relax
+ \expandafter\xdef\csname tikzext@nf@#2@\tikzext@nf@familyname @next\endcsname{#1}%
\fi
}%
- \pgfutil@IfUndefined{tikz@nf@#2@\tikz@nf@familyname @previous}{% first run, ignore
+ \pgfutil@IfUndefined{tikzext@nf@#2@\tikzext@nf@familyname @previous}{% first run, ignore
}{% set previous value
- #3=\csname tikz@nf@#2@\tikz@nf@familyname @previous\endcsname\relax
+ #3=\csname tikzext@nf@#2@\tikzext@nf@familyname @previous\endcsname\relax
}%
}%
}
@@ -75,7 +76,7 @@
\pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
\advance\pgf@x by 2\pgf@xc%
% Qrr: family width
- \tikz@nf@getandset{\the\pgf@x}{width}{\pgfutil@tempdima}%
+ \tikzext@nf@getandset{\the\pgf@x}{width}{\pgfutil@tempdima}%
\ifdim\pgf@x<\pgfutil@tempdima
\pgf@x=\pgfutil@tempdima
\fi
@@ -98,9 +99,9 @@
\pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
\advance\pgf@y by 2\pgf@yc%
% Qrr: family height
- \tikz@nf@getandset{\the\pgf@y}{height}{\pgfutil@tempdima}%
+ \tikzext@nf@getandset{\the\pgf@y}{height}{\pgfutil@tempdima}%
\ifdim\pgf@y<\pgfutil@tempdima
- \pgf@y=\pgfutil@tempa
+ \pgf@y=\pgfutil@tempdima
\fi
%
\pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
@@ -116,7 +117,7 @@
\advance\pgf@y by\pgf@ya%
}%
-\savedanchor\southwest{%
+ \savedanchor\southwest{%
% Calculate x
%
% First, is width < minimum width?
@@ -124,7 +125,7 @@
\pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
\advance\pgf@x by 2\pgf@xc%
% Qrr: family width
- \tikz@nf@getandset{\the\pgf@x}{width}{\pgfutil@tempdima}%
+ \tikzext@nf@getandset{\the\pgf@x}{width}{\pgfutil@tempdima}%
\ifdim\pgf@x<\pgfutil@tempdima
\pgf@x=\pgfutil@tempdima
\fi
@@ -147,7 +148,7 @@
\pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
\advance\pgf@y by 2\pgf@yc%
% Qrr: family height
- \tikz@nf@getandset{\the\pgf@y}{height}{\pgfutil@tempdima}%
+ \tikzext@nf@getandset{\the\pgf@y}{height}{\pgfutil@tempdima}%
\ifdim\pgf@y<\pgfutil@tempdima
\pgf@y=\pgfutil@tempdima
\fi
@@ -226,8 +227,8 @@
\fi
\pgf@x=\pgf@xa%
% Qrr: check for families
- \tikz@nf@getandset{\the\dimexpr2\pgf@x\relax}{width}{\pgfutil@tempdima}%
- \tikz@nf@getandset{\the\dimexpr2\pgf@x\relax}{height}{\pgfutil@tempdimb}%
+ \tikzext@nf@getandset{\the\dimexpr2\pgf@x\relax}{width}{\pgfutil@tempdima}%
+ \tikzext@nf@getandset{\the\dimexpr2\pgf@x\relax}{height}{\pgfutil@tempdimb}%
% Qrr: and adjust like minimum width and minimum height
\ifdim\pgf@x<.5\pgfutil@tempdima
\pgf@x=.5\pgfutil@tempdima
@@ -285,17 +286,17 @@
\pgfqkeys{/tikz/node family}{
setup shape/.code={%
\expandafter\pgfutil@prefixto@macro\csname pgf@sh@s@#1\endcsname{%
- \tikz@nf@getandset{\the\wd\pgfnodeparttextbox}{text width}{\pgfutil@tempdima}%
+ \tikzext@nf@getandset{\the\wd\pgfnodeparttextbox}{text width}{\pgfutil@tempdima}%
\ifdim\wd\pgfnodeparttextbox<\pgfutil@tempdima
\pgfutil@tempdimb=\pgfutil@tempdima
\advance\pgfutil@tempdimb-\wd\pgfnodeparttextbox
- \setbox\pgfnodeparttextbox=\hbox to \pgfutil@tempdima{\tikz@nf@align@action\pgfutil@tempdimb\box\pgfnodeparttextbox}%
+ \setbox\pgfnodeparttextbox=\hbox to \pgfutil@tempdima{\tikzext@nf@align@action\pgfutil@tempdimb\box\pgfnodeparttextbox}%
\fi
- \tikz@nf@getandset{\the\dp\pgfnodeparttextbox}{text depth}{\pgfutil@tempdima}%
+ \tikzext@nf@getandset{\the\dp\pgfnodeparttextbox}{text depth}{\pgfutil@tempdima}%
\ifdim\dp\pgfnodeparttextbox<\pgfutil@tempdima
\dp\pgfnodeparttextbox=\pgfutil@tempdima
\fi
- \tikz@nf@getandset{\the\ht\pgfnodeparttextbox}{text height}{\pgfutil@tempdima}%
+ \tikzext@nf@getandset{\the\ht\pgfnodeparttextbox}{text height}{\pgfutil@tempdima}%
\ifdim\ht\pgfnodeparttextbox<\pgfutil@tempdima
\ht\pgfnodeparttextbox=\pgfutil@tempdima
\fi
@@ -303,3 +304,36 @@
},
setup shape/.list={rectangle,circle,Rectangle,Circle}
}
+
+%% nf functions
+\def\tikzext@nf@function@default{{\the\pgf@x}{\the\pgf@y}}
+\def\tikzext@nf@function@default@double{{\the\dimexpr2\pgf@x\relax}{\the\dimexpr2\pgf@y\relax}}
+\def\tikzext@nf@function@circle{{\the\pgf@x}{\the\pgf@x}}
+\def\tikzext@nf@function@circle@double{{\the\dimexpr2\pgf@x\relax}{\the\dimexpr2\pgf@x\relax}}
+
+\pgfmathdeclarefunction{nf_width}{0}{%
+ \begingroup
+ \pgfutil@IfUndefined{tikzext@nf@function@\pgf@sm@shape@name}{%
+ \let\tikzext@nf@function\tikzext@nf@function@default
+ }{%
+ \pgfutil@IfUndefined{tikzext@nf@function@\pgf@sm@shape@name @extra}{}{\csname tikzext@nf@function@\pgf@sm@shape@name @extra\endcsname}%
+ \expandafter\let\expandafter\tikzext@nf@function\csname tikzext@nf@function@\pgf@sm@shape@name\endcsname
+ }%
+ \tikzext@nf@getandset{\expandafter\pgfutil@firstoftwo\tikzext@nf@function}{width}{\pgfutil@tempdima}%
+ \edef\pgfmathresult{\pgf@sys@tonumber\pgfutil@tempdima}%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
+}
+\pgfmathdeclarefunction{nf_height}{0}{%
+ \begingroup
+ \pgfutil@IfUndefined{tikzext@nf@function@\pgf@sm@shape@name}{%
+ \let\tikzext@nf@function\tikzext@nf@function@default
+ }{%
+ \pgfutil@IfUndefined{tikzext@nf@function@\pgf@sm@shape@name @extra}{}{\csname tikzext@nf@function@\pgf@sm@shape@name @extra\endcsname}%
+ \expandafter\let\expandafter\tikzext@nf@function\csname tikzext@nf@function@\pgf@sm@shape@name\endcsname
+ }%
+ \tikzext@nf@getandset{\expandafter\pgfutil@secondoftwo\tikzext@nf@function}{height}{\pgfutil@tempdima}%
+ \edef\pgfmathresult{\pgf@sys@tonumber\pgfutil@tempdima}%
+ \pgfmath@smuggleone\pgfmathresult
+ \endgroup
+} \ No newline at end of file