summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tikz-sfc
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/tikz-sfc')
-rw-r--r--Master/texmf-dist/tex/latex/tikz-sfc/tikzlibrarycircuits.plc.sfc.code.tex173
1 files changed, 173 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tikz-sfc/tikzlibrarycircuits.plc.sfc.code.tex b/Master/texmf-dist/tex/latex/tikz-sfc/tikzlibrarycircuits.plc.sfc.code.tex
new file mode 100644
index 00000000000..23383ac0170
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikz-sfc/tikzlibrarycircuits.plc.sfc.code.tex
@@ -0,0 +1,173 @@
+%% This is file `tikzlibrarycircuits.plc.sfc.code.tex'
+%% Version: 1.0
+%% Version date: 2018-01-16
+%%
+%% Copyright (C) 2018 by Luis Paulo Laus, laus@utfpr.edu.br
+%%
+%% This package can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or (at your option) any later version,
+%% with `The Package' referring to the software `tikzlibraryladder.code.tex' and its
+%% accompanying documentation and `The Copyright Holder' referring to the
+%% person Luis Paulo Laus.
+%%
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For error reports, comments or suggestions in case of UNCHANGED
+%% versions send mail to:
+%% laus@utfpr.edu.br
+%%
+\usetikzlibrary{circuits}
+\usepgflibrary{shapes.gates.ee}
+\makeatletter
+\newcount\sfc@act@pos
+\def\tikz@lib@sfc@lct@plain[#1]#2\pgf@stop{\tikzset{label={[label position=center,every info/.try,#1]#2}}}
+\def\tikz@lib@sfc@lrg@plain[#1]#2\pgf@stop{\tikzset{label={[label position=right,every info/.try,#1]#2}}}
+\def\tikz@lib@sfc@llf@plain[#1]#2\pgf@stop{\tikzset{label={[label position=left,every info'/.try,#1]#2}}}
+\def\tikz@lib@sfc@action@lrg@plain[#1]#2\pgf@stop{\tikzset{sfc@actcommentopt/.style={#1},sfc@actcomment=#2}}
+\def\tikz@lib@sfc@action@lct@plain[#1]#2\pgf@stop{\tikzset{sfc@actnameopt/.style={#1},sfc@actname=#2}}
+
+\pgfdeclareshape{sfcstepi}
+{
+ \inheritsavedanchors[from=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}
+ \inheritbackgroundpath[from=rectangle]
+ \behindbackgroundpath{
+ \pgfpathrectanglecorners
+ {\pgfpointadd{\southwest}{\pgfpoint{6*\pgfkeysvalueof{/pgf/inner xsep}}{6*\pgfkeysvalueof{/pgf/inner ysep}}}}
+ {\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{6*\pgfkeysvalueof{/pgf/inner xsep}}{6*\pgfkeysvalueof{/pgf/inner ysep}}}}}
+ }
+}
+
+%% Really dirt trick to customize info and info' keys in an action.
+\def\sfc@copycode#1#2{
+ \pgfkeyssetvalue{/tikz/#1/.@cmd}{\expandafter\pgfkeysvalueof{/tikz/#2/.@cmd}}%
+ \pgfkeyssetvalue{/tikz/#1/.@body}{\expandafter\pgfkeysvalueof{/tikz/#2/.@body}}%
+}
+
+\tikzset{
+ circuit plc sfc/.style=
+ {
+ circuit,
+ circuit declare symbol=sfctransition,
+ sfc@actinfo/.code={\pgfutil@ifnextchar[\tikz@lib@sfc@action@lct@plain{\tikz@lib@sfc@action@lct@plain[]}##1\pgf@stop},
+ sfc@actinfo'/.code={\pgfutil@ifnextchar[\tikz@lib@sfc@action@lrg@plain{\tikz@lib@sfc@action@lrg@plain[]}##1\pgf@stop},
+ set sfctransition graphic={draw,fill,shape=rectangle,circuit symbol size=width 1 height 0,
+ info/.code={\pgfutil@ifnextchar[\tikz@lib@sfc@lrg@plain{\tikz@lib@sfc@lrg@plain[]}####1\pgf@stop},
+ info'/.code={\pgfutil@ifnextchar[\tikz@lib@sfc@llf@plain{\tikz@lib@sfc@llf@plain[]}####1\pgf@stop}},
+ sfcaqw/.initial=0\tikzcircuitssizeunit, % qualifier width
+ sfcanw/.initial=2.6\tikzcircuitssizeunit, % action name width
+ sfcah/.initial=2.6\tikzcircuitssizeunit, % action height
+ time/.initial=, % action duration to be used with qualifier D, L, DS, SD, LS
+ qualifier/.initial=, % action qualifier
+ sfc@actname/.initial=, % action name
+ sfc@actnameopt/.style=, % action name options
+ sfc@actcomment/.initial=, % action comment
+ sfc@actcommentopt/.style=, % action comment options
+ circuit declare symbol=sfcstep,
+ set sfcstep graphic={draw,shape=rectangle,minimum size=2.6\tikzcircuitssizeunit,
+ /utils/exec={\global\sfc@act@pos=0},
+ info/.code={\pgfutil@ifnextchar[\tikz@lib@sfc@lct@plain{\tikz@lib@sfc@lct@plain[]}####1\pgf@stop},
+ info'/.code={\pgfutil@ifnextchar[\tikz@lib@sfc@llf@plain{\tikz@lib@sfc@llf@plain[]}####1\pgf@stop}},
+ circuit declare symbol=sfcstepi,
+ set sfcstepi graphic={draw,shape=sfcstepi,minimum size=2.6\tikzcircuitssizeunit,
+ /utils/exec={\global\sfc@act@pos=0},
+ info/.code={\pgfutil@ifnextchar[\tikz@lib@sfc@lct@plain{\tikz@lib@sfc@lct@plain[]}####1\pgf@stop},
+ info'/.code={\pgfutil@ifnextchar[\tikz@lib@sfc@llf@plain{\tikz@lib@sfc@llf@plain[]}####1\pgf@stop}},
+ circuit declare symbol=sfcstar,
+ set sfcstar graphic={shape=circle,label={center:$*$},minimum size=1.2ex},
+ sfcaction/.style={
+ append after command={%
+ \bgroup
+ [current point is local=true]
+ [every circuit annotation/.try]
+ [annotation arrow,-]
+ [label distance=2\tikzcircuitssizeunit]
+ [/utils/exec={\sfc@copycode{info}{sfc@actinfo}\sfc@copycode{info'}{sfc@actinfo'}}]
+ [/utils/exec={\pgftransformresetnontranslations}]
+ edge[every sfcaction/.try, ##1, to path={%
+ \ifnum\sfc@act@pos=0%
+ (\tikzlastnode.east) -- ++(\tikz@label@distance,0)
+ \else%
+ ($(\tikzlastnode.east) + (\tikz@label@distance,-\the\sfc@act@pos*\pgfkeysvalueof{/tikz/sfcah})$)
+ \fi%
+ \pgfextra{\edef\pgf@testq{\pgfkeysvalueof{/tikz/qualifier}} \edef\pgf@testt{\pgfkeysvalueof{/tikz/time}} \edef\pgf@testc{\pgfkeysvalueof{/tikz/sfc@actcomment}}}%
+ \ifx\pgf@testq\pgfutil@empty
+ node[/utils/exec={\global\advance\sfc@act@pos by1\relax},##1,every sfcactionname/.try,sfc@actnameopt/.try,draw,right,minimum height=\pgfkeysvalueof{/tikz/sfcah},
+ minimum width=\pgfkeysvalueof{/tikz/sfcaqw}+\pgfkeysvalueof{/tikz/sfcanw}]{\pgfkeysvalueof{/tikz/sfc@actname}}
+ \ifx\pgf@testc\pgfutil@empty \else
+ node[every info'/.try,sfc@actcommentopt/.try,right,xshift=\pgfkeysvalueof{/tikz/sfcaqw}+\pgfkeysvalueof{/tikz/sfcanw}]{\pgfkeysvalueof{/tikz/sfc@actcomment}}
+ \fi
+ \else
+ \ifx\pgf@testt\pgfutil@empty
+ node[/utils/exec={\global\advance\sfc@act@pos by1\relax},every sfcactionname/.try,##1,sfc@actnameopt/.try,draw,right,xshift=\pgfkeysvalueof{/tikz/sfcaqw},
+ minimum height=\pgfkeysvalueof{/tikz/sfcah},minimum width=\pgfkeysvalueof{/tikz/sfcanw}]{\pgfkeysvalueof{/tikz/sfc@actname}}
+ node[every sfcqualifier/.try,##1,draw,right,minimum height=\pgfkeysvalueof{/tikz/sfcah},
+ minimum width=\pgfkeysvalueof{/tikz/sfcaqw}]{\pgfkeysvalueof{/tikz/qualifier}}
+ \ifx\pgf@testc\pgfutil@empty \else
+ node[every info'/.try,sfc@actcommentopt/.try,right,xshift=\pgfkeysvalueof{/tikz/sfcaqw}+\pgfkeysvalueof{/tikz/sfcanw}]{\pgfkeysvalueof{/tikz/sfc@actcomment}}
+ \fi
+ \else
+ node[/utils/exec={\global\advance\sfc@act@pos by2\relax},##1,draw,right,yshift=-0.5*\pgfkeysvalueof{/tikz/sfcah}),
+ minimum height=2*\pgfkeysvalueof{/tikz/sfcah},minimum width=\pgfkeysvalueof{/tikz/sfcaqw}]{}
+ node[every sfcactionname/.try,##1,sfc@actnameopt/.try,draw,right,xshift=\pgfkeysvalueof{/tikz/sfcaqw},yshift=-0.5*\pgfkeysvalueof{/tikz/sfcah},
+ minimum height=2*\pgfkeysvalueof{/tikz/sfcah},minimum width=\pgfkeysvalueof{/tikz/sfcanw}]{\pgfkeysvalueof{/tikz/sfc@actname}}%
+ node[every sfcqualifier/.try,right,minimum height=\pgfkeysvalueof{/tikz/sfcah},
+ minimum width=\pgfkeysvalueof{/tikz/sfcaqw}]{\pgfkeysvalueof{/tikz/qualifier}}
+ node[every sfctime/.try,right,yshift=-\pgfkeysvalueof{/tikz/sfcah},minimum height=\pgfkeysvalueof{/tikz/sfcah},
+ minimum width=\pgfkeysvalueof{/tikz/sfcaqw}]{\pgfkeysvalueof{/tikz/time}}
+ \ifx\pgf@testc\pgfutil@empty \else
+ node[every info'/.try,sfc@actcommentopt/.try,right,xshift=\pgfkeysvalueof{/tikz/sfcaqw}+\pgfkeysvalueof{/tikz/sfcanw},
+ yshift=-0.5*\pgfkeysvalueof{/tikz/sfcah}]{\pgfkeysvalueof{/tikz/sfc@actcomment}}
+ \fi
+ \fi
+ \fi
+ }] ()
+ \tikz@after@path%
+ \egroup%
+ }
+ },
+ circuit declare symbol=flow direction,
+ circuit declare symbol=flow direction',
+ set flow direction graphic = flow direction sfc graphic,
+ set flow direction' graphic = flow direction' sfc graphic,
+ flow direction sfc graphic/.style = {
+ shape=direction ee,
+ circuit symbol filled,
+ flow direction arrow,
+ minimum width = .5*\the\tikzcircuitssizeunit+.3*\the\pgflinewidth,
+ minimum height = .5*\the\tikzcircuitssizeunit+.3*\the\pgflinewidth,
+ transform shape
+ },
+ flow direction' sfc graphic/.style = {
+ flow direction sfc graphic,
+ rotate=180
+ },
+ flow direction arrow/.style = {
+ /utils/exec={\pgfsetarrowoptions{direction ee}{1.3065*.5*\the\tikzcircuitssizeunit+1.3065*.3*\the\pgflinewidth}},
+ >=direction ee,
+ direction ee arrow = direction ee,
+ },
+ every circuit plc sfc/.try
+ }
+}
+\makeatother
+
+\endinput \ No newline at end of file