Skip to content
Snippets Groups Projects
Commit 0fcbea36 authored by Christoffer Holm's avatar Christoffer Holm
Browse files

Added the ability to consume options for each element in drawlist and drawarray

parent 240c88c2
No related branches found
No related tags found
No related merge requests found
......@@ -660,7 +660,7 @@
%% overwrite it for the first node.
\edef\array@SaveOppositeDirection{\array@OppositeDirection}
\edef\array@OppositeDirection{\array@Anchor}
\drawarray@Element[array origin]{#3}%
\drawarray@Element[array origin]{#3}{}%
%% Restore the correct opposite direction.
\edef\array@OppositeDirection{\array@SaveOppositeDirection}
\pgfmathtruncatemacro{\array@Index}{\array@Index + 1}%
......@@ -785,7 +785,7 @@
down/.initial = north,
}
\newcommand{\drawarray@Element}[2][\ExpandWithSpaceBetween{\array@Name}{\array@PrevIndex}.\array@Direction]{%
\newcommand{\drawarray@Element}[3][\ExpandWithSpaceBetween{\array@Name}{\array@PrevIndex}.\array@Direction]{%
%% Save the nodes in a list so that we can pass to fit later
\xdef\array@Nodes{\array@Nodes(\ExpandWithSpaceBetween{\array@Name}{\array@Index})}%
\pgfmathtruncatemacro{\array@PrevIndex}{\array@Index - 1}%
......@@ -795,7 +795,7 @@
yshift={\array@ShiftY\pgflinewidth},%
fill=\array@Fill,%
rectangle, draw=black, anchor=\array@OppositeDirection,%
array element]%
array element, #3]%
(\ExpandWithSpaceBetween{\array@Name}{\array@Index})%
at (#1) {#2};%
\ifx\array@ShowIndex\undefined%
......@@ -815,18 +815,23 @@
\@ifnextchar\bgroup{%
\drawarray@GobbleArg%
}{%
\@ifnextchar[{%
\drawarray@GobbleArg%
}{%
\node[inner sep=0, outer sep=0,%
array container, fit=\array@Nodes] (\array@Name) {};%
array container, fit=\array@Nodes] (\array@Name) {};%
}%
}%
}%
%% Draw the next array element and then recurse via
%% \drawarray@NextArg
\newcommand{\drawarray@GobbleArg}[1]{%
\drawarray@Element{#1}%
\newcommand{\drawarray@GobbleArg}[2][]{%
\drawarray@Element{#2}{#1}%
\pgfmathtruncatemacro{\array@Index}{\array@Index + 1}%
\drawarray@NextArg
}
\makeatother
%%%% draw list %%%%
......@@ -913,7 +918,7 @@
% Once the initial position is set, undef it so that it is
% not defined for the next \drawlist
\undef\list@Position
\drawlist@Element[list origin]{#3}%
\drawlist@Element[list origin]{#3}{}%
\pgfmathtruncatemacro{\list@Index}{\list@Index + 1}%
%% Goto next argument
......@@ -1013,7 +1018,7 @@
down/.initial = north
}
\newcommand{\drawlist@Element}[2][$(\ExpandWithSpaceBetween{\list@Name}{\list@PrevIndex}.east) + (\list@Offset, 0)$]{%
\newcommand{\drawlist@Element}[3][$(\ExpandWithSpaceBetween{\list@Name}{\list@PrevIndex}.east) + (\list@Offset, 0)$]{%
%% Save the nodes in a list so that we can pass to fit later
\xdef\list@Nodes{\list@Nodes(\ExpandWithSpaceBetween{\list@Name}{\list@Index})}%
\edef\list@CurrentValue{\ExpandWithSpaceBetween{\ExpandWithSpaceBetween{\list@Name}{value}}{\list@Index}}
......@@ -1023,7 +1028,7 @@
minimum height=\list@ElementSize,%
fill=\list@Fill,%
rectangle, draw=black, anchor=west,%
list element]%
list element, #3]%
(\list@CurrentValue)%
at (#1) {#2};%
\node[minimum width=\list@ElementSize,%
......@@ -1031,7 +1036,7 @@
xshift=-\pgflinewidth,%
fill=\list@Fill,%
rectangle, draw=black, anchor=west,%
list element]%
list element, #3]%
(\list@CurrentNext)%
at (\list@CurrentValue.east) {};%
\node[inner sep=0, outer sep=0, fit=(\list@CurrentValue)(\list@CurrentNext)]%
......@@ -1053,13 +1058,17 @@
\@ifnextchar\bgroup{%
\drawlist@GobbleArg%
}{%
\node[inner sep=0, outer sep=0,%
\@ifnextchar[{%
\drawlist@GobbleArg%
}{%
\node[inner sep=0, outer sep=0,%
list container, fit=\list@Nodes] (\list@Name) {};%
}%
}%
}%
\newcommand{\drawlist@GobbleArg}[1]{%
\drawlist@Element{#1}%
\newcommand{\drawlist@GobbleArg}[2][]{%
\drawlist@Element{#2}{#1}%
\draw[->] (\ExpandWithSpaceBetween{\ExpandWithSpaceBetween{\list@Name}{next}}{\list@PrevIndex}.center) -- (\ExpandWithSpaceBetween{\list@Name}{\list@Index});
\pgfmathtruncatemacro{\list@Index}{\list@Index + 1}%
\drawlist@NextArg
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment