summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/tikz-ext/tikzlibrarypaths.timer.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/tikz-ext/tikzlibrarypaths.timer.code.tex')
-rw-r--r--graphics/pgf/contrib/tikz-ext/tikzlibrarypaths.timer.code.tex188
1 files changed, 188 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/tikz-ext/tikzlibrarypaths.timer.code.tex b/graphics/pgf/contrib/tikz-ext/tikzlibrarypaths.timer.code.tex
new file mode 100644
index 0000000000..3a4d30e68f
--- /dev/null
+++ b/graphics/pgf/contrib/tikz-ext/tikzlibrarypaths.timer.code.tex
@@ -0,0 +1,188 @@
+% Copyright 2022 by Qrrbrbirlbel
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+\def\tikz@rectB#1{% originally from tikz.code.tex
+ \tikz@make@last@position{#1}%
+ \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
+ \let\tikz@timer\tikz@timer@rectangle% %% Timer: new timer
+ \tikz@@movetosave{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
+ \tikz@path@lineto{\pgfqpoint{\pgf@xa}{\tikz@lasty}}%
+ \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
+ \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@ya}}%
+ \iftikz@snaked
+ \tikz@path@lineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
+ \fi
+ \pgfpathclose
+ \tikz@@movetosave{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
+ \def\pgfstrokehook{}%
+ \let\tikz@tangent\relax
+ \tikz@scan@next@command
+}%
+
+\def\tikz@@sine#1{% originally from tikz.code.tex
+ \let\tikz@tangent\tikz@tangent@lookup
+ \tikz@flush@moveto
+ \edef\tikz@timer@start{\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}% %% Timer: save start position
+ \pgf@process{#1}%
+ \edef\tikz@timer@end{\pgfqpoint{\the\pgf@x}{\the\pgf@y}}% %% Timer: saver target position
+ \pgf@xc=\pgf@x
+ \pgf@yc=\pgf@y
+ \advance\pgf@xc by-\tikz@lastx
+ \advance\pgf@yc by-\tikz@lasty
+ \advance\tikz@lastx by\pgf@xc
+ \advance\tikz@lasty by\pgf@yc
+ \tikz@lastxsaved=\tikz@lastx
+ \tikz@lastysaved=\tikz@lasty
+ \tikz@updatecurrenttrue
+ \let\tikz@timer=\tikz@timer@sine% %% Timer: new timer
+ \pgfpathsine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
+ \tikz@scan@next@command
+}
+
+\def\tikz@@cosine#1{% originally from tikz.code.tex
+ \let\tikz@tangent\tikz@tangent@lookup
+ \tikz@flush@moveto
+ \edef\tikz@timer@start{\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}% %% Timer: save start position
+ \pgf@process{#1}%
+ \edef\tikz@timer@end{\pgfqpoint{\the\pgf@x}{\the\pgf@y}}% %% Timer: save target position
+ \pgf@xc=\pgf@x
+ \pgf@yc=\pgf@y
+ \advance\pgf@xc by-\tikz@lastx
+ \advance\pgf@yc by-\tikz@lasty
+ \advance\tikz@lastx by\pgf@xc
+ \advance\tikz@lasty by\pgf@yc
+ \tikz@lastxsaved=\tikz@lastx
+ \tikz@lastysaved=\tikz@lasty
+ \tikz@updatecurrenttrue
+ \let\tikz@timer=\tikz@timer@cosine% %% Timer: new timer
+ \pgfpathcosine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
+ \tikz@scan@next@command
+}
+
+\def\tikz@timer@rectangle{%
+ \pgfutil@tempdima\tikz@time pt
+ \ifdim\pgfutil@tempdima<.5pt\else % if we're at the return pos-ition we switch start and end
+ \advance\pgfutil@tempdima-.5pt
+ \let\pgf@tempa\tikz@timer@start
+ \let\tikz@timer@start\tikz@timer@end
+ \let\tikz@timer@end\pgf@tempa
+ \fi
+ \multiply\pgfutil@tempdima2
+ \edef\tikz@time{\strip@pt\pgfutil@tempdima}%
+ \tikz@timer@hvline}%
+
+\def\tikz@parabola@semifinal#1{%
+ \tikz@flush@moveto
+ % Save original start:
+ \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}% %% Timer: save start position
+ \pgf@xb=\tikz@lastx
+ \pgf@yb=\tikz@lasty
+ \tikz@make@last@position{#1}%
+ \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}% %% Timer: save target position
+ \pgf@xc=\tikz@lastx
+ \pgf@yc=\tikz@lasty
+ \begingroup% now calculate bend:
+ \let\tikz@after@path\pgfutil@empty
+ \expandafter\tikzset\expandafter{\tikz@parabola@option}%
+ \tikz@lastxsaved=\tikz@parabola@bend@factor\tikz@lastx
+ \tikz@lastysaved=\tikz@parabola@bend@factor\tikz@lasty
+ \advance\tikz@lastxsaved by\pgf@xb
+ \advance\tikz@lastysaved by\pgf@yb
+ \advance\tikz@lastxsaved by-\tikz@parabola@bend@factor\pgf@xb
+ \advance\tikz@lastysaved by-\tikz@parabola@bend@factor\pgf@yb
+ \expandafter\tikz@make@last@position\expandafter{\tikz@parabola@bend}%
+ \edef\tikz@timer@middle{{\the\tikz@lastx}{\the\tikz@lasty}}% %% Timer: save bend postion
+ % Calculate delta from bend
+ \advance\pgf@xc by-\tikz@lastx
+ \advance\pgf@yc by-\tikz@lasty
+ % Ok, now calculate delta to bend
+ \advance\tikz@lastx by-\pgf@xb
+ \advance\tikz@lasty by-\pgf@yb
+ \edef\tikz@marshall{%
+ \noexpand\let\noexpand\tikz@timer\noexpand\tikz@timer@parabola
+ \noexpand\edef\noexpand\tikz@timer@middle{\noexpand\pgfqpoint\tikz@timer@middle}%
+ \noexpand\pgfpathparabola{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
+ }%
+ \expandafter\endgroup%
+ \tikz@marshall
+ \expandafter\tikz@scan@next@command\tikz@after@path%
+}%
+
+\def\tikz@timer@parabola{% following calculations, see \def of \pgfpathparabola in pgfcorepathconstruct.code.tex (l. 1261)
+ \ifdim\tikz@time pt<.5pt\relax % first part
+ \pgf@process{\tikz@timer@middle}%
+ \pgf@xc\pgf@x\pgf@yc\pgf@y
+ \pgf@xb\pgf@x\pgf@yb\pgf@y
+ \pgf@process{\tikz@timer@start}%
+ \advance\pgf@xc-\pgf@x\pgf@xc.1125\pgf@xc
+ \advance\pgf@xc\pgf@x % = start_x + .1125 (middle_x - start_x)
+ \advance\pgf@yc-\pgf@y\pgf@yc.225\pgf@yc
+ \advance\pgf@yc\pgf@y % = start_y + .225 (middle_y - start_y)
+ \advance\pgf@xb\pgf@x\pgf@xb.5\pgf@xb % = .5 (middle_x + start_x) = start_x + .5 (middle_x - start_x)
+ \pgf@xa=\tikz@time pt%
+ \pgf@xa=2\pgf@xa % = 2 * \tikz@time
+ \edef\tikz@marshall{\noexpand\pgftransformcurveattime{\strip@pt\pgf@xa}{\noexpand\tikz@timer@start}%
+ {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
+ {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
+ {\noexpand\tikz@timer@middle}}%
+ \else % second part
+ \pgf@process{\tikz@timer@end}%
+ \pgf@xc\pgf@x
+ \pgf@xb\pgf@x
+ \pgf@yb\pgf@y
+ \pgf@process{\tikz@timer@middle}%
+ \advance\pgf@xc\pgf@x\pgf@xc.5\pgf@xc % = .5 (end_x + middle_x) = middle_x + .5 (end_x - middle_x)
+ \advance\pgf@xb-\pgf@x\pgf@xb.8875\pgf@xb
+ \advance\pgf@xb\pgf@x % = middle_x + .8875 (end_x - middle_x)
+ \advance\pgf@yb-\pgf@y\pgf@yb.775\pgf@yb
+ \advance\pgf@yb\pgf@y % = middle_y + .775 (end_y - middle_y)
+ \pgf@xa=\tikz@time pt%
+ \advance\pgf@xa-.5pt%
+ \pgf@xa=2\pgf@xa % = 2 (\tikz@zime - .5)
+ \edef\tikz@marshall{\noexpand\pgftransformcurveattime{\strip@pt\pgf@xa}{\noexpand\tikz@timer@middle}%
+ {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@y}}%
+ {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
+ {\noexpand\tikz@timer@end}}%
+ \fi
+ \tikz@marshall
+}
+
+\def\tikz@timer@sine{% following calculations, see \def of \pgfpathsine in pgfcorepathconstruct.code.tex (l. 1315)
+ \pgf@process{\tikz@timer@end}%
+ \pgf@xc\pgf@x\pgf@yc\pgf@y
+ \pgf@xb\pgf@x\pgf@yb\pgf@y
+ \pgf@process{\tikz@timer@start}%
+ \advance\pgf@xc-\pgf@x\pgf@xc.3260\pgf@xc
+ \advance\pgf@xc\pgf@x % = start_x + .3260 (end_x - start_x)
+ \advance\pgf@yc-\pgf@y\pgf@yc.5120\pgf@yc
+ \advance\pgf@yc\pgf@y % = start_y + .5120 (end_y - start_y)
+ \advance\pgf@xb-\pgf@x\pgf@xb.6380\pgf@xb % = start_x + .6380 (end_x - start_x)
+ \advance\pgf@xb\pgf@x
+ \edef\tikz@marshall{\noexpand\pgftransformcurveattime{\tikz@time}{\noexpand\tikz@timer@start}%
+ {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
+ {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
+ {\noexpand\tikz@timer@end}}%
+ \tikz@marshall
+}
+\def\tikz@timer@cosine{% following calculations, see \def of \pgfpathcosine in pgfcorepathconstruct.code.tex (l. 1345)
+ \pgf@process{\tikz@timer@end}%
+ \pgf@xc\pgf@x\pgf@yc\pgf@y
+ \pgf@xb\pgf@x\pgf@yb\pgf@y
+ \pgf@process{\tikz@timer@start}%
+ \advance\pgf@xb-\pgf@x\pgf@xb.6740\pgf@xb
+ \advance\pgf@xb\pgf@x % = start_x + .6740 (end_x - start_x)
+ \advance\pgf@yb-\pgf@y\pgf@yb.4880\pgf@yb
+ \advance\pgf@yb\pgf@y % = start_y + .4880 (end_y - start_y)
+ \advance\pgf@xc-\pgf@x\pgf@xc.3620\pgf@xc % = start_x + .3620 (end_x - start_x)
+ \advance\pgf@xc\pgf@x
+ \edef\tikz@marshall{\noexpand\pgftransformcurveattime{\tikz@time}{\noexpand\tikz@timer@start}%
+ {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@y}}%
+ {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
+ {\noexpand\tikz@timer@end}}%
+ \tikz@marshall
+}
+\endinput \ No newline at end of file