summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-01-06 03:01:33 +0000
committerNorbert Preining <norbert@preining.info>2024-01-06 03:01:33 +0000
commit949a85bb8707bf1aaa2b23b018e24d5001d38e52 (patch)
treec5af6ca7487e0e439195d0308276267088b67352 /macros/latex/contrib/l3experimental/l3draw-transforms.dtx
parent387961768f65ec00d171b3781d4b87ea94bb19f5 (diff)
CTAN sync 202401060301
Diffstat (limited to 'macros/latex/contrib/l3experimental/l3draw-transforms.dtx')
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-transforms.dtx60
1 files changed, 43 insertions, 17 deletions
diff --git a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
index 8115e1c4fc..df9f07af18 100644
--- a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-transforms.dtx
%
-% Copyright (C) 2018-2023 The LaTeX Project
+% Copyright (C) 2018-2024 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-12-08}
+% \date{Released 2024-01-04}
%
% \maketitle
%
@@ -154,10 +154,7 @@
{ \@@_transform_shift_absolute:nn } {#1}
}
\cs_new_protected:Npn \@@_transform_shift_absolute:nn #1#2
- {
- \dim_set:Nn \l_@@_xshift_dim {#1}
- \dim_set:Nn \l_@@_yshift_dim {#2}
- }
+ { \@@_transform_shift:nnnn { 0pt } { 0pt } {#1} {#2} }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -199,8 +196,10 @@
}
\cs_new_protected:Npn \@@_transform_shift:nn #1#2
{
- \dim_set:Nn \l_@@_xshift_dim { \l_@@_xshift_dim + #1 }
- \dim_set:Nn \l_@@_yshift_dim { \l_@@_yshift_dim + #2 }
+ \@@_transform_shift:nnnn
+ \l_@@_xshift_dim
+ \l_@@_yshift_dim
+ {#1} {#2}
}
% \end{macrocode}
% \end{macro}
@@ -208,8 +207,35 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@@_transform_shift:nnnn}
+% Apply the current transformation matrix to the shift, then store
+% the resulting values: we may or may not have a none-zero starting
+% point here.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_transform_shift:nnnn #1#2#3#4
+ {
+ \dim_set:Nn \l_@@_xshift_dim
+ {
+ \fp_to_dim:n
+ {
+ #1 +
+ ( #3 * \l_@@_matrix_a_fp + #4 * \l_@@_matrix_b_fp )
+ }
+ }
+ \dim_set:Nn \l_@@_yshift_dim
+ {
+ \fp_to_dim:n
+ {
+ #2 +
+ ( #3 * \l_@@_matrix_c_fp + #4 * \l_@@_matrix_d_fp )
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\draw_transform_matrix_invert:}
-% \begin{macro}{\@@_transform_invert:n, \@@_transform_invert:f}
+% \begin{macro}{\@@_transform_invert:n, \@@_transform_invert:e}
% \begin{macro}{\draw_transform_shift_invert:}
% Standard mathematics: calculate the inverse matrix and use that, then
% undo the shifts.
@@ -218,7 +244,7 @@
{
\bool_if:NT \l_@@_matrix_active_bool
{
- \@@_transform_invert:f
+ \@@_transform_invert:e
{
\fp_eval:n
{
@@ -242,7 +268,7 @@
\fp_set:Nn \l_@@_matrix_d_fp
{ \l_@@_matrix_a_fp * #1 }
}
-\cs_generate_variant:Nn \@@_transform_invert:n { f }
+\cs_generate_variant:Nn \@@_transform_invert:n { e }
\cs_new_protected:Npn \draw_transform_shift_invert:
{
\dim_set:Nn \l_@@_xshift_dim { -\l_@@_xshift_dim }
@@ -312,24 +338,24 @@
% \begin{macro}{\draw_transform_rotate:n}
% \begin{macro}
% {
-% \@@_transform_rotate:n, \@@_transform_rotate:f,
-% \@@_transform_rotate:nn, \@@_transform_rotate:ff
+% \@@_transform_rotate:n, \@@_transform_rotate:e,
+% \@@_transform_rotate:nn, \@@_transform_rotate:ee
% }
% Slightly more involved: evaluate the angle only once, and the sine and
% cosine only once.
% \begin{macrocode}
\cs_new_protected:Npn \draw_transform_rotate:n #1
- { \@@_transform_rotate:f { \fp_eval:n {#1} } }
+ { \@@_transform_rotate:e { \fp_eval:n {#1} } }
\cs_new_protected:Npn \@@_transform_rotate:n #1
{
- \@@_transform_rotate:ff
+ \@@_transform_rotate:ee
{ \fp_eval:n { cosd(#1) } }
{ \fp_eval:n { sind(#1) } }
}
-\cs_generate_variant:Nn \@@_transform_rotate:n { f }
+\cs_generate_variant:Nn \@@_transform_rotate:n { e }
\cs_new_protected:Npn \@@_transform_rotate:nn #1#2
{ \draw_transform_matrix:nnnn {#1} {#2} { -#2 } { #1 } }
-\cs_generate_variant:Nn \@@_transform_rotate:nn { ff }
+\cs_generate_variant:Nn \@@_transform_rotate:nn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}