summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/circuitikz/tex/pgfcircflow.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-07-07 03:01:19 +0000
committerNorbert Preining <norbert@preining.info>2020-07-07 03:01:19 +0000
commitef87f13c4503a2aa4a9098cbf33e0bfcad19008e (patch)
tree3ffb99adbe8054f2bd6d04f982ea2a8e07a6bb62 /graphics/pgf/contrib/circuitikz/tex/pgfcircflow.tex
parent2caa59ac79d64858cdff8486b3fecc9859111e38 (diff)
CTAN sync 202007070301
Diffstat (limited to 'graphics/pgf/contrib/circuitikz/tex/pgfcircflow.tex')
-rw-r--r--graphics/pgf/contrib/circuitikz/tex/pgfcircflow.tex73
1 files changed, 50 insertions, 23 deletions
diff --git a/graphics/pgf/contrib/circuitikz/tex/pgfcircflow.tex b/graphics/pgf/contrib/circuitikz/tex/pgfcircflow.tex
index b7bb8b9767..f2adc0d8ef 100644
--- a/graphics/pgf/contrib/circuitikz/tex/pgfcircflow.tex
+++ b/graphics/pgf/contrib/circuitikz/tex/pgfcircflow.tex
@@ -13,6 +13,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% flow handling
+
%% styles
\ctikzset{bipole flow style/.style={}}
\tikzset{bipole flow style/.code={
@@ -27,7 +28,7 @@
f = #1,
\circuitikzbasekey/bipole/flow/direction = forward,
\circuitikzbasekey/bipole/flow/x position = after,
- \circuitikzbasekey/bipole/curflowrent/y position = above
+ \circuitikzbasekey/bipole/flow/y position = above
}
}
@@ -93,6 +94,7 @@
\ctikzset{f^/.style = { f = #1, \circuitikzbasekey/bipole/flow/y position = above } }
\ctikzset{f/.code = {
+ \pgfcirc@has@ftrue
\pgfkeys{\circuitikzbasekey/bipole/flow/direction = forward,
\circuitikzbasekey/bipole/flow/x position = after,
\circuitikzbasekey/bipole/flow/y position = above }
@@ -113,10 +115,11 @@
}
%% Output routine
+
\def\pgf@circ@drawflow{
\pgfextra{
- \edef\pgf@circ@ffffff{\pgf@circ@direction}
- \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@ffffff\pgf@nil}
+ \edef\pgf@circ@rounded@dir{\pgf@circ@direction}
+ \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@rounded@dir\pgf@nil}
\ifnum\pgfcircmathresult >4 \ifnum\pgfcircmathresult <86
\ifpgf@circuit@bipole@flow@below
@@ -169,38 +172,62 @@
\else
\def\pgf@circ@bipole@flow@label@where{+90}
\fi
+ % export anchor position (if not needed, is always the same macro)
+ \expandafter\xdef\csname pgfcirc@\pgfcirc@a@prefix-Flab-anchor\endcsname{\pgf@circ@dir}
}
\pgfextra{\def\pgf@temp{short}\edef\pgf@circ@temp{\ctikzvalof{bipole/kind}}}
- \ifx\pgf@circ@temp\pgf@temp%draw flow at a short at middle of the line
- (\tikztostart)--(\tikztotarget)
+ \ifx\pgf@circ@temp\pgf@temp%draw current at a short at middle of the line
+ coordinate (pgfcirc@Ffrom@flat) at (\tikztostart)
+ coordinate (pgfcirc@Fto@flat) at (\tikztotarget)
\else% normal bipole or source
\ifpgf@circuit@bipole@flow@before
- (\tikztostart)--(anchorstartnode)
+ coordinate (pgfcirc@Ffrom@flat) at (\tikztostart)
+ coordinate (pgfcirc@Fto@flat) at (anchorstartnode)
\else
- (anchorendnode)--(\tikztotarget)
+ coordinate (pgfcirc@Ffrom@flat) at (anchorendnode)
+ coordinate (pgfcirc@Fto@flat) at (\tikztotarget)
\fi
\fi
\pgfextra{
+ \newdimen{\absfshift}
+ \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
+ \absfshift=\flow@offset
\ifpgf@circuit@bipole@flow@backward
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
- \pgfmathsubtract{\pgf@circ@ffffff}{180}
- \edef\pgf@circ@ffffff{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
- \else
- \ifpgf@circuit@bipole@flow@below
- \def\flow@offset{-\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \else
- \def\flow@offset{\ctikzvalof{flow/offset}\pgf@circ@Rlen}
- \fi
+ \pgfmathsubtract{\pgf@circ@rounded@dir}{180}
+ \edef\pgf@circ@rounded@dir{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
\fi
}
- coordinate[flowarrow,pos=\ctikzvalof{flow/distance},rotate=\pgf@circ@ffffff,yshift=\flow@offset, anchor=center](Farrowpos)
- (Farrowpos.\pgf@circ@bipole@flow@label@where) node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole flow style]
- (\ctikzvalof{bipole/name}flow){\pgf@circ@finallabels{flow/label}}
+ \ifpgf@circuit@bipole@flow@below
+ coordinate (pgfcirc@Ffrom@up) at ($(pgfcirc@Ffrom@flat) ! \absfshift !-90: (pgfcirc@Fto@flat)$)
+ coordinate (pgfcirc@Fto@up) at ($(pgfcirc@Fto@flat) ! \absfshift !90: (pgfcirc@Ffrom@flat)$)
+ \else
+ coordinate (pgfcirc@Ffrom@up) at ($(pgfcirc@Ffrom@flat) ! \absfshift !90: (pgfcirc@Fto@flat)$)
+ coordinate (pgfcirc@Fto@up) at ($(pgfcirc@Fto@flat) ! \absfshift !-90: (pgfcirc@Ffrom@flat)$)
+ \fi
+ coordinate (\pgfcirc@a@prefix-Fpos) at ($(pgfcirc@Ffrom@up) ! \ctikzvalof{flow/distance} !(pgfcirc@Fto@up)$)
+ \pgfextra{
+ \absfshift=0.25\pgf@circ@Rlen% This is half size of the "flowarrow" shape!
+ }
+ coordinate (\pgfcirc@a@prefix-Ffrom) at ($(\pgfcirc@a@prefix-Fpos)!\absfshift!(pgfcirc@Ffrom@up)$)
+ coordinate (\pgfcirc@a@prefix-Fto) at ($(\pgfcirc@a@prefix-Fpos)!\absfshift!(pgfcirc@Fto@up) $)
+ %
+ % coordinate (\pgfcirc@a@prefix-Fpos) at
+ % ([yshift=\flow@offset]$(\pgfcirc@a@prefix-Ffrom)! \ctikzvalof{flow/distance} !(\pgfcirc@a@prefix-Fto)$)
+ % if the flow label is not empty (in which case we have already all the anchors)
+ \pgf@circ@ifkeyempty{bipole/flow/label/name}\else
+ % the flow arrow is really a node "flowarrow", not a real arrow
+ node[flowarrow, rotate=\pgf@circ@rounded@dir, anchor=center](Farrowpos) at (\pgfcirc@a@prefix-Fpos) {}
+
+ node[anchor=\pgf@circ@dir, \circuitikzbasekey/bipole flow style]
+ (\ctikzvalof{bipole/name}flow) at (Farrowpos.\pgf@circ@bipole@flow@label@where) {\pgf@circ@finallabels{flow/label}}
+ \fi
+
+ % adjust from and to before exporting --- it's much more simple like this then rework the algorithm above
+ \ifpgf@circuit@bipole@flow@backward
+ \pgfcirc@swap@coordinates{\pgfcirc@a@prefix-Ffrom}{\pgfcirc@a@prefix-Fto}
+ \fi
+
}
\endinput