summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/smartdiagram
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-10-30 00:36:52 +0000
committerKarl Berry <karl@freefriends.org>2012-10-30 00:36:52 +0000
commit95f3f776d86e1448b7d73d88e054017e843759ec (patch)
treed0b21943ff252ca477b9edfca1011731098f8625 /Master/texmf-dist/tex/latex/smartdiagram
parent0cab1dfa4f709e056ae6171885b7fc03bd26a3b2 (diff)
smartdiagram (29oct12)
git-svn-id: svn://tug.org/texlive/trunk@28116 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/smartdiagram')
-rw-r--r--Master/texmf-dist/tex/latex/smartdiagram/smartdiagram.sty652
1 files changed, 652 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/smartdiagram/smartdiagram.sty b/Master/texmf-dist/tex/latex/smartdiagram/smartdiagram.sty
new file mode 100644
index 00000000000..0efd91a95d9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/smartdiagram/smartdiagram.sty
@@ -0,0 +1,652 @@
+%%
+%% This is file `smartdiagram.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% smartdiagram.dtx (with options: `package')
+%% * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+%% smartdiagram --- Automatic creation of smart diagrams from lists of items.
+%% E-mail: claudio.fiandrino@gmail.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{smartdiagram}[2012/10/28 v0.1 Automatic creation of smart diagrams from lists of items.]
+
+\RequirePackage{tikz}
+\RequirePackage{xparse,etoolbox}
+
+\usetikzlibrary{backgrounds,calc,fadings,shadows,shapes.arrows}
+\pgfdeclarelayer{smart diagram arrow back}
+\pgfsetlayers{background,smart diagram arrow back,main}
+\@namedef{color@1}{red!40}
+\@namedef{color@2}{cyan!40}
+\@namedef{color@3}{blue!40}
+\@namedef{color@4}{green!40}
+\@namedef{color@5}{orange!40}
+\@namedef{color@6}{yellow!40}
+\@namedef{color@7}{magenta!40}
+\@namedef{color@8}{brown!40}
+\@namedef{color@9}{violet!40}
+\@namedef{color@10}{teal!40}
+\tikzset{rnd rectangle/.style={rectangle,rounded corners}
+}
+
+\def\CalcHeight(#1,#2)#3{%
+\pgfpointdiff{\pgfpointanchor{#1}{south west}}{\pgfpointanchor{#2}{north west}}
+\pgfmathsetmacro{\myheight}{veclen(\pgf@x,\pgf@y)}
+\global\expandafter\edef\csname #3\endcsname{\myheight}
+}
+\pgfkeys{/smart diagram/.cd, module minimum width/.initial=2cm,
+ module minimum height/.initial={1cm},
+ module y sep/.initial={1.65},
+ descriptive items y sep/.initial={1.75},
+ text width/.initial={1.5cm},
+ description title width/.initial={1.5cm},
+ description text width/.initial={5cm},
+ description title text width/.initial={1.25cm},
+ description title font/.initial={\small},
+ description font/.initial={\small},
+ description width/.initial={5.5cm},
+ font/.initial={\small},
+ border color/.initial={gray},
+ circular distance/.initial={2.75cm},
+ arrow line width/.initial={0.1cm},
+ module shape/.initial={rnd rectangle},
+ insert decoration/.initial={},
+ arrow tip/.initial={stealth},
+ bubble center node size/.initial={4cm},
+ bubble center node font/.initial={\large},
+ bubble center node color/.initial={lightgray!60},
+ distance center/other bubbles/.initial=0.8cm,
+ distance text center bubble/.initial={0.5cm},
+ bubble fill opacity/.initial={0.5},
+ bubble node size/.initial={2.5cm},
+ bubble text opacity/.initial={0.8},
+ bubble node font/.initial={\normalfont},
+ planet size/.initial={2.5cm},
+ planet color/.initial={lightgray!60},
+ planet font/.initial={\large},
+ distance planet-connection/.initial={0.1cm},
+ distance planet-text/.initial={0.5cm},
+ planet text width/.initial={1.75cm},
+ satellite size/.initial={1.75cm},
+ satellite font/.initial={\normalfont},
+ satellite fill opacity/.initial={0.5},
+ satellite text opacity/.initial={0.8},
+ satellite text width/.initial={1.5cm},
+ distance satellite-connection/.initial={0.075cm},
+ connection line width/.initial={0.1cm},
+ distance planet-satellite/.initial={3.5cm},
+ priority arrow width/.initial={1.5cm},
+ priority arrow head extend/.initial={0.15cm},
+ priority tick size/.initial={5pt},
+ priority arrow height advance/.initial={2cm},
+}%
+
+\pgfkeys{/smart diagram/.cd, module minimum width/.get=\modulewidth,
+ module minimum height/.get=\moduleheight,
+ module y sep/.get=\moduleysep,
+ descriptive items y sep/.get=\descriptiveitemsysep,
+ text width/.get=\moduletextwidth,
+ description title width/.get=\descriptiontitlewidth,
+ description text width/.get=\descriptiontextwidth,
+ description title text width/.get=\descriptiontitletextwidth,
+ description title font/.get=\descriptiontitlefontsize,
+ description font/.get=\descriptionfontsize,
+ description width/.get=\descriptionwidth,
+ font/.get=\modulefontsize,
+ border color/.get=\bordercolor,
+ circular distance/.get=\circulardistance,
+ arrow line width/.get=\arrowlinewidth,
+ module shape/.get=\moduleshape,
+ insert decoration/.get=\borderdecoration,
+ arrow tip/.get=\arrowtip,
+ bubble center node size/.get=\bubblecenternodesize,
+ bubble center node font/.get=\bubblecenternodefont,
+ bubble center node color/.get=\bubblecenternodecolor,
+ distance center/other bubbles/.get=\distancecenterotherbubbles,
+ distance text center bubble/.get=\distancetextcenterbubble,
+ bubble fill opacity/.get=\bubblefillopacity,
+ bubble node size/.get=\bubblenodesize,
+ bubble text opacity/.get=\bubbletextopacity,
+ bubble node font/.get=\bubblenodefont,
+ planet size/.get=\planetminimumsize,
+ planet color/.get=\planetcolor,
+ planet font/.get=\planetfont,
+ distance planet-connection/.get=\planetoutersep,
+ distance planet-text/.get=\planetinnersep,
+ planet text width/.get=\planettextwidth,
+ satellite size/.get=\satelliteminimumsize,
+ satellite font/.get=\satellitefont,
+ satellite fill opacity/.get=\satellitefillopacity,
+ satellite text opacity/.get=\satellitetextopacity,
+ satellite text width/.get=\satellitetextwidth,
+ distance satellite-connection/.get=\satelliteoutersep,
+ connection line width/.get=\connectionlinewidth,
+ distance planet-satellite/.get=\distanceplanetsatellite,
+ priority arrow width/.get=\priorityarrowwidth,
+ priority arrow head extend/.get=\priorityarrowheadextend,
+ priority tick size/.get=\prioritytick,
+ priority arrow height advance/.get=\priorityarrowheightadvance,
+}%
+
+\pgfkeys{/smart diagram/.cd, set color list/.code={
+ \foreach \listitem [count=\i] in {#1}{
+ \global\@namedef{color@\i\expandafter}\expandafter{\listitem}
+ }
+ }
+}
+
+\pgfkeys{/smart diagram/.cd, use predefined color list/.code={
+ \@namedef{color@1}{red!30}
+ \@namedef{color@2}{cyan!30}
+ \@namedef{color@3}{blue!30}
+ \@namedef{color@4}{green!30}
+ \@namedef{color@5}{orange!30}
+ \@namedef{color@6}{yellow!30}
+ \@namedef{color@7}{magenta!30}
+ \@namedef{color@8}{brown!30}
+ \@namedef{color@9}{violet!30}
+ \@namedef{color@10}{teal!30}
+ }
+}
+
+\NewDocumentCommand{\smartdiagramset}{m}{%
+ \pgfkeys{/smart diagram/.cd,#1}%
+ \pgfkeys{/smart diagram/.cd, module minimum width/.get=\modulewidth,
+ module minimum height/.get=\moduleheight,
+ module y sep/.get=\moduleysep,
+ descriptive items y sep/.get=\descriptiveitemsysep,
+ text width/.get=\moduletextwidth,
+ description title width/.get=\descriptiontitlewidth,
+ description text width/.get=\descriptiontextwidth,
+ description title text width/.get=\descriptiontitletextwidth,
+ description title font/.get=\descriptiontitlefontsize,
+ description font/.get=\descriptionfontsize,
+ description width/.get=\descriptionwidth,
+ font/.get=\modulefontsize,
+ border color/.get=\bordercolor,
+ circular distance/.get=\circulardistance,
+ arrow line width/.get=\arrowlinewidth,
+ module shape/.get=\moduleshape,
+ insert decoration/.get=\borderdecoration,
+ arrow tip/.get=\arrowtip,
+ bubble center node size/.get=\bubblecenternodesize,
+ bubble center node font/.get=\bubblecenternodefont,
+ bubble center node color/.get=\bubblecenternodecolor,
+ distance center/other bubbles/.get=\distancecenterotherbubbles,
+ distance text center bubble/.get=\distancetextcenterbubble,
+ bubble fill opacity/.get=\bubblefillopacity,
+ bubble node size/.get=\bubblenodesize,
+ bubble text opacity/.get=\bubbletextopacity,
+ bubble node font/.get=\bubblenodefont,
+ planet size/.get=\planetminimumsize,
+ planet color/.get=\planetcolor,
+ planet font/.get=\planetfont,
+ distance planet-connection/.get=\planetoutersep,
+ distance planet-text/.get=\planetinnersep,
+ planet text width/.get=\planettextwidth,
+ satellite size/.get=\satelliteminimumsize,
+ satellite font/.get=\satellitefont,
+ satellite fill opacity/.get=\satellitefillopacity,
+ satellite text opacity/.get=\satellitetextopacity,
+ satellite text width/.get=\satellitetextwidth,
+ distance satellite-connection/.get=\satelliteoutersep,
+ connection line width/.get=\connectionlinewidth,
+ distance planet-satellite/.get=\distanceplanetsatellite,
+ priority arrow width/.get=\priorityarrowwidth,
+ priority arrow head extend/.get=\priorityarrowheadextend,
+ priority tick size/.get=\prioritytick,
+ priority arrow height advance/.get=\priorityarrowheightadvance,
+ }%
+}%
+\tikzfading[name=priorityarrowfading, bottom color=transparent!5, top color=transparent!80]
+\tikzset{priority arrow fill/.style={fill=gray,path fading=priorityarrowfading}}
+
+\tikzset{module/.style={
+ \pgfkeysvalueof{/smart diagram/module shape},
+ thick,
+ draw=\bordercolor,
+ top color=white,
+ bottom color=\col,
+ text width=\moduletextwidth,
+ minimum width=\modulewidth,
+ minimum height=\moduleheight,
+ font=\modulefontsize,
+ \borderdecoration
+ },
+ diagram arrow type/.style={
+ >=\arrowtip,line width=\arrowlinewidth,\col,
+ },
+}
+\tikzset{description title/.style={
+ circle,
+ draw=\bordercolor,
+ minimum width=\descriptiontitlewidth,
+ anchor=east,
+ bottom color=\col,
+ top color=white!80!\col,
+ font=\descriptiontitlefontsize,
+ text width=\descriptiontitletextwidth,
+ \borderdecoration,
+ },
+ description/.style={
+ \pgfkeysvalueof{/smart diagram/module shape},
+ text width=\descriptiontextwidth,
+ draw=\bordercolor,
+ anchor=west,
+ minimum height=\moduleheight,
+ minimum width=\descriptionwidth,
+ bottom color=\col,
+ top color=white!80!\col,
+ font=\descriptionfontsize,
+ \borderdecoration,
+ }
+}
+\tikzset{priority arrow/.style={
+ draw=\bordercolor,
+ single arrow,
+ minimum height=\distancemodules,
+ minimum width=\priorityarrowwidth,
+ priority arrow fill,
+ rotate=90,
+ single arrow head extend=\priorityarrowheadextend,
+ anchor=west,
+ }
+}
+\tikzset{bubble center node/.style={
+ minimum size=\bubblecenternodesize,
+ circle,
+ fill=\bubblecenternodecolor,
+ font=\bubblecenternodefont,
+ outer sep=\distancecenterotherbubbles,
+ inner sep=\distancetextcenterbubble,
+ },
+ bubble node/.style={
+ minimum size=\bubblenodesize,
+ circle,
+ ultra thick,
+ font=\bubblenodefont,
+ draw=white,
+ fill opacity=\bubblefillopacity,
+ fill=\col,
+ text opacity=\bubbletextopacity,
+ }
+}
+\tikzset{planet/.style={
+ minimum size=\planetminimumsize,
+ circle,
+ fill=\planetcolor,
+ font=\planetfont,
+ outer sep=\planetoutersep,
+ inner sep=\planetinnersep,
+ text width=\planettextwidth,
+ },
+ satellite/.style={
+ minimum size=\satelliteminimumsize,
+ circle,
+ font=\satellitefont,
+ fill opacity=\satellitefillopacity,
+ fill=\col,
+ text opacity=\satellitetextopacity,
+ text width=\satellitetextwidth,
+ outer sep=\satelliteoutersep,
+ },
+ connection planet satellite/.style={
+ line width=\connectionlinewidth,
+ >=\arrowtip,
+ \col,
+ }
+}
+\NewDocumentCommand{\smartdiagram}{r[] m}{%
+ \IfNoValueTF{#1}{% true-no value 1
+ \PackageError{smartdiagram}{Type of the diagram not inserted. Please insert it}
+ {Example: \protect\smartdiagram[flow diagram]}}
+ {%false-no value 1
+ \ifstrequal{#1}{circular diagram}{% true-circular diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+
+ \foreach \smitem [count=\xi] in {#2} {\global\let\maxsmitem\xi}
+
+ \foreach \smitem [count=\xi] in {#2}{%
+ \pgfmathtruncatemacro{\angle}{360/\maxsmitem*\xi}
+ \edef\col{\@nameuse{color@\xi}}
+ \node[module,drop shadow] (module\xi) at (\angle:\circulardistance) {\smitem };
+ }%
+
+ \foreach \smitem [count=\xi] in {#2}{%
+ \pgfmathtruncatemacro{\xj}{mod(\xi, \maxsmitem) + 1)}
+ \edef\col{\@nameuse{color@\xj}}
+ \draw[<-,diagram arrow type,shorten <=0.3cm,shorten >=0.3cm]
+ (module\xj) to[bend left] (module\xi);
+ }%
+ \end{tikzpicture}
+ }{}% end-circular diagram
+ \ifstrequal{#1}{flow diagram}{% true-flow diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+
+ \foreach \smitem [count=\xi] in {#2} {\global\let\maxsmitem\xi}
+
+ \foreach \smitem [count=\xi] in {#2}{%
+ \edef\col{\@nameuse{color@\xi}}
+ \path let \n1 = {int(0-\xi)}, \n2={0-\xi*\moduleysep}
+ in node[module,drop shadow] (module\xi) at +(0,\n2) {\smitem};
+
+ }%
+
+ \foreach \smitem [count=\xi] in {#2}{%
+ \pgfmathtruncatemacro{\xj}{mod(\xi, \maxsmitem) + 1)}
+ \edef\col{\@nameuse{color@\xj}}
+ \ifnum\xi<\maxsmitem
+ \begin{pgfonlayer}{smart diagram arrow back}
+ \draw[<-,diagram arrow type] (module\xj) -- (module\xi);
+ \end{pgfonlayer}
+ \fi
+ % last arrow - not display it in background
+ \ifnum\xi=\maxsmitem
+ \draw[<-,diagram arrow type] (module\xj.east)--
+ ($(module\xj.east)+(1,0)$) |- (module\xi);
+ \fi
+ }%
+ \end{tikzpicture}
+ }{}% end-flow diagram
+ \ifstrequal{#1}{descriptive diagram}{% true-descriptive diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{%
+ \edef\col{\@nameuse{color@\xi}}
+ \foreach \subitem [count=\xii] in \smitem{%
+ \ifnumequal{\xii}{1}{% true
+ \node[description title,drop shadow]
+ (module-title\xi) at (0,0-\xi*\descriptiveitemsysep) {\subitem};
+ }{}
+ \ifnumequal{\xii}{2}{% true
+ \node[description,drop shadow](module\xi)
+ at (0,0-\xi*\descriptiveitemsysep) {\subitem};
+ }{}
+ }%
+ }%
+ \end{tikzpicture}
+ }{}% end-descriptive diagram
+ \ifstrequal{#1}{bubble diagram}{% true-bubble diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{\global\let\maxsmitem\xi}
+ \pgfmathtruncatemacro\actualnumitem{\maxsmitem-1}
+ \foreach \smitem [count=\xi] in {#2}{%
+ \ifnumequal{\xi}{1}{ %true
+ \node[bubble center node](center bubble){\smitem};
+ }{%false
+ \pgfmathtruncatemacro{\xj}{\xi-1}
+ \pgfmathtruncatemacro{\angle}{360/\actualnumitem*\xj}
+ \edef\col{\@nameuse{color@\xj}}
+ \node[bubble node] (module\xi) at (center bubble.\angle) {\smitem };
+ }%
+ }%
+ \end{tikzpicture}
+ }{}%end-bubble diagram
+ \ifstrequal{#1}{constellation diagram}{% true-constellation diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{\global\let\maxsmitem\xi}
+ \pgfmathtruncatemacro\actualnumitem{\maxsmitem-1}
+ \foreach \smitem [count=\xi] in {#2}{%
+ \ifnumequal{\xi}{1}{ %true
+ \node[planet](planet){\smitem};
+ }{%false
+ \pgfmathtruncatemacro{\xj}{\xi-1}
+ \pgfmathtruncatemacro{\angle}{360/\actualnumitem*\xj}
+ \edef\col{\@nameuse{color@\xj}}
+ \node[satellite] (satellite\xi) at (\angle:\distanceplanetsatellite) {\smitem };
+ \draw[->,connection planet satellite] (planet) -- (satellite\xi);
+ }%
+ }%
+ \end{tikzpicture}
+ }{}%end-constellation diagram
+ \ifstrequal{#1}{connected constellation diagram}{% true-connected constellation diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{\global\let\maxsmitem\xi}
+ \pgfmathtruncatemacro\actualnumitem{\maxsmitem-1}
+ \foreach \smitem [count=\xi] in {#2}{%
+ \ifnumequal{\xi}{1}{ %true
+ \node[planet](planet){\smitem};
+ }{%false
+ \pgfmathtruncatemacro{\xj}{\xi-1}
+ \pgfmathtruncatemacro{\angle}{360/\actualnumitem*\xj}
+ \edef\col{\@nameuse{color@\xj}}
+ \node[satellite] (satellite\xj) at (\angle:\distanceplanetsatellite) {\smitem };
+ }%
+ }%
+ \foreach \smitem [count=\xi] in {#2}{%
+ \ifnumgreater{\xi}{1}{ %true
+ \pgfmathtruncatemacro{\xj}{\xi-1}
+ \edef\col{\@nameuse{color@\xj}}
+ \pgfmathtruncatemacro{\xk}{mod(\xj,\actualnumitem) +1}
+ \path[connection planet satellite] (satellite\xj) edge[bend right] (satellite\xk);
+ }{}
+ }%
+ \end{tikzpicture}
+ }{}%end-connected constellation diagram
+ \ifstrequal{#1}{priority descriptive diagram}{% true-priority descriptive diagram
+ \pgfmathparse{subtract(\priorityarrowwidth,\priorityarrowheadextend)}
+ \pgfmathsetmacro\priorityticksize{\pgfmathresult/2}
+ \pgfmathsetmacro\arrowtickxshift{(\priorityarrowwidth-\priorityticksize)/2}
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{\global\let\maxsmitem\xi}
+ \foreach \smitem [count=\xi] in {#2}{%
+ \edef\col{\@nameuse{color@\xi}}
+ \node[description,drop shadow](module\xi)
+ at (0,0+\xi*\descriptiveitemsysep) {\smitem};
+\draw[line width=\prioritytick,\col] ([xshift=-\arrowtickxshift pt]module\xi.base west)--
+ ($([xshift=-\arrowtickxshift pt]module\xi.base west)-(\priorityticksize pt,0)$);
+ }%
+ \coordinate (A) at (module1);
+ \coordinate (B) at (module\maxsmitem);
+ \CalcHeight(A,B){heightmodules}
+ \pgfmathadd{\heightmodules}{\priorityarrowheightadvance}
+ \pgfmathsetmacro{\distancemodules}{\pgfmathresult}
+ \pgfmathsetmacro\arrowxshift{\priorityarrowwidth/2}
+ \begin{pgfonlayer}{background}
+ \node[priority arrow] at ([xshift=-\arrowxshift pt]module1.south west){};
+ \end{pgfonlayer}
+ \end{tikzpicture}
+ }{}% end-priority descriptive diagram
+}% end-no value 1
+}% end-command
+\tikzset{
+ sminvisible/.style={opacity=0,text opacity=0},
+ smvisible on/.style={smalt=#1{}{sminvisible}},
+ smalt/.code args={<#1>#2#3}{%
+ \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
+ },
+}
+
+\NewDocumentCommand{\smartdiagramanimated}{r[] m}{%
+ \IfNoValueTF{#1}{% true-no value 1
+ \PackageError{smartdiagram}{Type of the diagram not inserted. Please insert it}
+ {Example: \protect\smartdiagram[flow diagram]}}
+ {%false-no value 1
+ \ifstrequal{#1}{circular diagram}{% true-circular diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+
+ \foreach \smitem [count=\xi] in {#2} {\global\let\maxsmitem\xi}
+
+ \foreach \smitem [count=\xi] in {#2}{%
+ \pgfmathtruncatemacro{\angle}{360/\maxsmitem*\xi}
+ \edef\col{\@nameuse{color@\xi}}
+ \node[module,
+ drop shadow={smvisible on=<\xi->},
+ smvisible on=<\xi->] (module\xi) at (\angle:\circulardistance) {\smitem };
+ }%
+
+ \foreach \smitem [count=\xi] in {#2}
+ {%
+ \pgfmathtruncatemacro{\xj}{mod(\xi, \maxsmitem) + 1)}
+ \pgfmathtruncatemacro{\adv}{\xi + 1)}
+ \edef\col{\@nameuse{color@\xi}}
+ \draw[<-,diagram arrow type,shorten <=0.3cm,shorten >=0.3cm,
+ smvisible on=<\adv->] (module\xj) to[bend left] (module\xi);
+ }%
+ \end{tikzpicture}
+ }{}% end-circular diagram
+ \ifstrequal{#1}{flow diagram}{% true-flow diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+
+ \foreach \smitem [count=\xi] in {#2} {\global\let\maxsmitem\xi}
+
+ \foreach \smitem [count=\xi] in {#2}{%
+ \edef\col{\@nameuse{color@\xi}}
+ \path let \n1 = {int(0-\xi)}, \n2={0-\xi*\moduleysep}
+ in node[module,
+ drop shadow={smvisible on=<\xi->},
+ smvisible on=<\xi->] (module\xi) at +(0,\n2) {\smitem};
+
+ }%
+
+ \foreach \smitem [count=\xi] in {#2}{%
+ \pgfmathtruncatemacro{\xj}{mod(\xi, \maxsmitem) + 1)}
+ \edef\col{\@nameuse{color@\xj}}
+ \ifnum\xi<\maxsmitem
+ \begin{pgfonlayer}{smart diagram arrow back}
+ \draw[<-,diagram arrow type,smvisible on=<\xi->]
+ (module\xj) -- (module\xi);
+ \end{pgfonlayer}
+ \fi
+ % last arrow - not display it in background
+ \ifnum\xi=\maxsmitem
+ \draw[<-,diagram arrow type,smvisible on=<\xi->]
+ (module\xj.east)--($(module\xj.east)+(1,0)$) |- (module\xi);
+ \fi
+ }%
+ \end{tikzpicture}
+ }{}% end-flow diagram
+ \ifstrequal{#1}{descriptive diagram}{% true-descriptive diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{%
+ \edef\col{\@nameuse{color@\xi}}
+
+ \foreach \subitem [count=\xii] in \smitem{%
+ \pgfmathtruncatemacro\subitemvisible{\xi}
+ \ifnumequal{\xii}{1}{% true
+ \node[description title,drop shadow, smvisible on=<\subitemvisible->]
+ (module-title\xi) at (0,0-\xi*\descriptiveitemsysep) {\subitem};\pause
+ }{}
+ \ifnumequal{\xii}{2}{% true
+ \node[description,drop shadow,smvisible on=<\subitemvisible->]
+ (module\xi)at (0,0-\xi*\descriptiveitemsysep) {\subitem};\pause
+ }{}
+ }%
+ }%
+ \end{tikzpicture}
+ }{}% end-descriptive diagram
+ \ifstrequal{#1}{bubble diagram}{% true-bubble diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{\global\let\maxsmitem\xi}
+ \pgfmathtruncatemacro\actualnumitem{\maxsmitem-1}
+ \foreach \smitem [count=\xi] in {#2}{%
+ \ifnumequal{\xi}{1}{ %true
+ \node[bubble center node, smvisible on=<\xi->](center bubble){\smitem};
+ }{%false
+ \pgfmathtruncatemacro{\xj}{\xi-1}
+ \pgfmathtruncatemacro{\angle}{360/\actualnumitem*\xj}
+ \edef\col{\@nameuse{color@\xj}}
+ \node[bubble node, smvisible on=<\xi->](module\xi) at (center bubble.\angle) {\smitem };
+ }%
+ }%
+ \end{tikzpicture}
+ }{}%end-bubble diagram
+ \ifstrequal{#1}{constellation diagram}{% true-constellation diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{\global\let\maxsmitem\xi}
+ \pgfmathtruncatemacro\actualnumitem{\maxsmitem-1}
+ \foreach \smitem [count=\xi] in {#2}{%
+ \ifnumequal{\xi}{1}{ %true
+ \node[planet, smvisible on=<\xi->](planet){\smitem};
+ }{%false
+ \pgfmathtruncatemacro{\xj}{\xi-1}
+ \pgfmathtruncatemacro{\angle}{360/\actualnumitem*\xj}
+ \edef\col{\@nameuse{color@\xj}}
+ \node[satellite, smvisible on=<\xi->] (satellite\xi)
+ at (\angle:\distanceplanetsatellite) {\smitem };
+ \draw[->,connection planet satellite, smvisible on=<\xi->]
+ (planet) -- (satellite\xi);
+ }%
+ }%
+ \end{tikzpicture}
+ }{}%end-constellation diagram
+ \ifstrequal{#1}{connected constellation diagram}{% true-connected constellation diagram
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{\global\let\maxsmitem\xi}
+ \pgfmathtruncatemacro\actualnumitem{\maxsmitem-1}
+ \foreach \smitem [count=\xi] in {#2}{%
+ \ifnumequal{\xi}{1}{ %true
+ \node[planet,smvisible on=<\xi->](planet){\smitem};
+ }{%false
+ \pgfmathtruncatemacro{\xj}{\xi-1}
+ \pgfmathtruncatemacro{\angle}{360/\actualnumitem*\xj}
+ \edef\col{\@nameuse{color@\xj}}
+ \node[satellite,smvisible on=<\xi->] (satellite\xj)
+ at (\angle:\distanceplanetsatellite) {\smitem };
+ }%
+ }%
+ \foreach \smitem [count=\xi] in {#2}{%
+ \ifnumgreater{\xi}{1}{ %true
+ \pgfmathtruncatemacro{\xj}{\xi-1}
+ \edef\col{\@nameuse{color@\xj}}
+ \pgfmathtruncatemacro{\xk}{mod(\xj,\actualnumitem) +1}
+ \pgfmathtruncatemacro{\smvisible}{\xi+1}
+ \path[connection planet satellite,smvisible on=<\smvisible->]
+ (satellite\xj) edge[bend right] (satellite\xk);
+ }{}
+ }%
+ \end{tikzpicture}
+ }{}%end-connected constellation diagram
+ \ifstrequal{#1}{priority descriptive diagram}{% true-priority descriptive diagram
+ \pgfmathparse{subtract(\priorityarrowwidth,\priorityarrowheadextend)}
+ \pgfmathsetmacro\priorityticksize{\pgfmathresult/2}
+ \pgfmathsetmacro\arrowtickxshift{(\priorityarrowwidth-\priorityticksize)/2}
+ \begin{tikzpicture}[every node/.style={align=center}]
+ \foreach \smitem [count=\xi] in {#2}{\global\let\maxsmitem\xi}
+ \foreach \smitem [count=\xi] in {#2}{%
+ \edef\col{\@nameuse{color@\xi}}
+ \pgfmathtruncatemacro\smvisible{\xi+1}
+ \node[description,drop shadow={smvisible on=<\smvisible->},smvisible on=<\smvisible->]
+ (module\xi) at (0,0+\xi*\descriptiveitemsysep) {\smitem};
+\draw[line width=\prioritytick,\col,smvisible on=<\smvisible->]
+ ([xshift=-\arrowtickxshift pt]module\xi.base west)--
+ ($([xshift=-\arrowtickxshift pt]module\xi.base west)-(\priorityticksize pt,0)$);
+ }%
+ \coordinate (A) at (module1);
+ \coordinate (B) at (module\maxsmitem);
+ \CalcHeight(A,B){heightmodules}
+ \pgfmathadd{\heightmodules}{\priorityarrowheightadvance}
+ \pgfmathsetmacro{\distancemodules}{\pgfmathresult}
+ \pgfmathsetmacro\arrowxshift{\priorityarrowwidth/2}
+ \begin{pgfonlayer}{background}
+ \node[priority arrow] at ([xshift=-\arrowxshift pt]module1.south west){};
+ \end{pgfonlayer}
+ \end{tikzpicture}
+ }{}% end-priority descriptive diagram
+ }% end-no value 1
+}% end-command
+
+%%
+%% Copyright (C) 2012 by Claudio Fiandrino <claudio.fiandrino@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License (LPPL), either
+%% version 1.3c of this license or (at your option) any later
+%% version. The latest version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Claudio Fiandrino.
+%%
+%% This work consists of the file smartdiagram.dtx
+%% and the derived files smartdiagram.ins,
+%% smartdiagram.pdf, and
+%% smartdiagram.sty.
+%%
+%%
+%% End of file `smartdiagram.sty'.