From aaab9e3ff19b740af7d97eb99613cf15bfa1506b Mon Sep 17 00:00:00 2001 From: Joseph Wright Date: Wed, 13 Feb 2019 17:17:32 +0000 Subject: [PATCH] Move coffin affine transformations to stable --- l3kernel/CHANGELOG.md | 1 + l3kernel/l3candidates.dtx | 580 ------------------------ l3kernel/l3coffins.dtx | 571 +++++++++++++++++++++++ l3kernel/testfiles/m3expl001.luatex.tlg | 105 +++-- l3kernel/testfiles/m3expl001.ptex.tlg | 105 +++-- l3kernel/testfiles/m3expl001.tlg | 105 +++-- l3kernel/testfiles/m3expl001.uptex.tlg | 105 +++-- l3kernel/testfiles/m3expl001.xetex.tlg | 105 +++-- l3kernel/testfiles/m3expl002.luatex.tlg | 14 +- l3kernel/testfiles/m3expl002.ptex.tlg | 14 +- l3kernel/testfiles/m3expl002.tlg | 14 +- l3kernel/testfiles/m3expl002.uptex.tlg | 14 +- l3kernel/testfiles/m3expl002.xetex.tlg | 14 +- l3kernel/testfiles/m3expl003.luatex.tlg | 105 +++-- l3kernel/testfiles/m3expl003.ptex.tlg | 105 +++-- l3kernel/testfiles/m3expl003.tlg | 105 +++-- l3kernel/testfiles/m3expl003.uptex.tlg | 105 +++-- l3kernel/testfiles/m3expl003.xetex.tlg | 105 +++-- l3kernel/testfiles/m3expl004.luatex.tlg | 14 +- l3kernel/testfiles/m3expl004.ptex.tlg | 14 +- l3kernel/testfiles/m3expl004.tlg | 14 +- l3kernel/testfiles/m3expl004.uptex.tlg | 14 +- l3kernel/testfiles/m3expl004.xetex.tlg | 14 +- l3kernel/testfiles/m3expl006.luatex.tlg | 14 +- l3kernel/testfiles/m3expl006.ptex.tlg | 14 +- l3kernel/testfiles/m3expl006.tlg | 14 +- l3kernel/testfiles/m3expl006.uptex.tlg | 14 +- l3kernel/testfiles/m3expl006.xetex.tlg | 14 +- 28 files changed, 1197 insertions(+), 1215 deletions(-) diff --git a/l3kernel/CHANGELOG.md b/l3kernel/CHANGELOG.md index a840813d74..0174c9de20 100644 --- a/l3kernel/CHANGELOG.md +++ b/l3kernel/CHANGELOG.md @@ -22,6 +22,7 @@ this project uses date-based 'snapshot' version identifiers. ### Changed - Defensive code for redefinition of `\time`, `\day`, `\month` and `\year` +- Move coffin affine transformations to stable ### Fixed diff --git a/l3kernel/l3candidates.dtx b/l3kernel/l3candidates.dtx index 75993f365a..e4119b77f1 100644 --- a/l3kernel/l3candidates.dtx +++ b/l3kernel/l3candidates.dtx @@ -203,47 +203,6 @@ % operation is applied. % \end{function} % -% \section{Additions to \pkg{l3coffins}} -% -% \begin{function}[updated = 2019-01-23] -% { -% \coffin_resize:Nnn, \coffin_resize:cnn, -% \coffin_gresize:Nnn, \coffin_gresize:cnn -% } -% \begin{syntax} -% \cs{coffin_resize:Nnn} \meta{coffin} \Arg{width} \Arg{total-height} -% \end{syntax} -% Resized the \meta{coffin} to \meta{width} and \meta{total-height}, -% both of which should be given as dimension expressions. -% \end{function} -% -% \begin{function} -% { -% \coffin_rotate:Nn, \coffin_rotate:cn, -% \coffin_grotate:Nn, \coffin_grotate:cn -% } -% \begin{syntax} -% \cs{coffin_rotate:Nn} \meta{coffin} \Arg{angle} -% \end{syntax} -% Rotates the \meta{coffin} by the given \meta{angle} (given in -% degrees counter-clockwise). This process rotates both the -% coffin content and poles. Multiple rotations do not result in -% the bounding box of the coffin growing unnecessarily. -% \end{function} -% -% \begin{function}[updated = 2019-01-23] -% { -% \coffin_scale:Nnn, \coffin_scale:cnn, -% \coffin_gscale:Nnn, \coffin_gscale:cnn -% } -% \begin{syntax} -% \cs{coffin_scale:Nnn} \meta{coffin} \Arg{x-scale} \Arg{y-scale} -% \end{syntax} -% Scales the \meta{coffin} by a factors \meta{x-scale} and -% \meta{y-scale} in the horizontal and vertical directions, -% respectively. The two scale factors should be given as real numbers. -% \end{function} -% % \section{Additions to \pkg{l3expan}} % % \begin{function}[added = 2018-04-04, updated = 2019-02-08] @@ -1665,545 +1624,6 @@ % \end{macro} % \end{macro} % -% \subsection{Additions to \pkg{l3coffins}} -% -% \begin{macrocode} -%<@@=coffin> -% \end{macrocode} -% -% \subsubsection{Rotating coffins} -% -% \begin{variable}{\l_@@_sin_fp} -% \begin{variable}{\l_@@_cos_fp} -% Used for rotations to get the sine and cosine values. -% \begin{macrocode} -\fp_new:N \l_@@_sin_fp -\fp_new:N \l_@@_cos_fp -% \end{macrocode} -% \end{variable} -% \end{variable} -% -% \begin{variable}{\l_@@_bounding_prop} -% A property list for the bounding box of a coffin. This is only needed -% during the rotation, so there is just the one. -% \begin{macrocode} -\prop_new:N \l_@@_bounding_prop -% \end{macrocode} -% \end{variable} -% -% \begin{variable}{\l_@@_corners_prop, \l_@@_poles_prop} -% Used to avoid needing to track scope for intermediate steps. -% \begin{macrocode} -\prop_new:N \l_@@_corners_prop -\prop_new:N \l_@@_poles_prop -% \end{macrocode} -% \end{variable} -% -% \begin{variable}{\l_@@_bounding_shift_dim} -% The shift of the bounding box of a coffin from the real content. -% \begin{macrocode} -\dim_new:N \l_@@_bounding_shift_dim -% \end{macrocode} -% \end{variable} -% -% \begin{variable}{\l_@@_left_corner_dim} -% \begin{variable}{\l_@@_right_corner_dim} -% \begin{variable}{\l_@@_bottom_corner_dim} -% \begin{variable}{\l_@@_top_corner_dim} -% These are used to hold maxima for the various corner values: these -% thus define the minimum size of the bounding box after rotation. -% \begin{macrocode} -\dim_new:N \l_@@_left_corner_dim -\dim_new:N \l_@@_right_corner_dim -\dim_new:N \l_@@_bottom_corner_dim -\dim_new:N \l_@@_top_corner_dim -% \end{macrocode} -% \end{variable} -% \end{variable} -% \end{variable} -% \end{variable} -% -% \begin{macro} -% { -% \coffin_rotate:Nn, \coffin_rotate:cn, -% \coffin_grotate:Nn, \coffin_grotate:cn -% } -% \begin{macro}{\@@_rotate:NnNNN} -% Rotating a coffin requires several steps which can be conveniently -% run together. The sine and cosine of the angle in degrees are -% computed. This is then used to set \cs{l_@@_sin_fp} and -% \cs{l_@@_cos_fp}, which are carried through unchanged for the rest -% of the procedure. -% \begin{macrocode} -\cs_new_protected:Npn \coffin_rotate:Nn #1#2 - { \@@_rotate:NnNNN #1 {#2} \box_rotate:Nn \prop_set_eq:cN \hbox_set:Nn } -\cs_generate_variant:Nn \coffin_rotate:Nn { c } -\cs_new_protected:Npn \coffin_grotate:Nn #1#2 - { \@@_rotate:NnNNN #1 {#2} \box_grotate:Nn \prop_gset_eq:cN \hbox_gset:Nn } -\cs_generate_variant:Nn \coffin_grotate:Nn { c } -\cs_new_protected:Npn \@@_rotate:NnNNN #1#2#3#4#5 - { - \fp_set:Nn \l_@@_sin_fp { sind ( #2 ) } - \fp_set:Nn \l_@@_cos_fp { cosd ( #2 ) } -% \end{macrocode} -% Use a local copy of the property lists to avoid needing to pass the -% name and scope around. -% \begin{macrocode} - \prop_set_eq:Nc \l_@@_corners_prop - { coffin ~ \@@_to_value:N #1 ~ corners } - \prop_set_eq:Nc \l_@@_poles_prop - { coffin ~ \@@_to_value:N #1 ~ poles } -% \end{macrocode} -% The corners and poles of the coffin can now be rotated around the -% origin. This is best achieved using mapping functions. -% \begin{macrocode} - \prop_map_inline:Nn \l_@@_corners_prop - { \@@_rotate_corner:Nnnn #1 {##1} ##2 } - \prop_map_inline:Nn \l_@@_poles_prop - { \@@_rotate_pole:Nnnnnn #1 {##1} ##2 } -% \end{macrocode} -% The bounding box of the coffin needs to be rotated, and to do this -% the corners have to be found first. They are then rotated in the same -% way as the corners of the coffin material itself. -% \begin{macrocode} - \@@_set_bounding:N #1 - \prop_map_inline:Nn \l_@@_bounding_prop - { \@@_rotate_bounding:nnn {##1} ##2 } -% \end{macrocode} -% At this stage, there needs to be a calculation to find where the -% corners of the content and the box itself will end up. -% \begin{macrocode} - \@@_find_corner_maxima:N #1 - \@@_find_bounding_shift: - #3 #1 {#2} -% \end{macrocode} -% The correction of the box position itself takes place here. The idea -% is that the bounding box for a coffin is tight up to the content, and -% has the reference point at the bottom-left. The $x$-direction is -% handled by moving the content by the difference in the positions of -% the bounding box and the content left edge. The $y$-direction is -% dealt with by moving the box down by any depth it has acquired. The -% internal box is used here to allow for the next step. -% \begin{macrocode} - \hbox_set:Nn \l_@@_internal_box - { - \tex_kern:D - \dim_eval:n - { \l_@@_bounding_shift_dim - \l_@@_left_corner_dim } - \exp_stop_f: - \box_move_down:nn { \l_@@_bottom_corner_dim } - { \box_use:N #1 } - } -% \end{macrocode} -% If there have been any previous rotations then the size of the -% bounding box will be bigger than the contents. This can be corrected -% easily by setting the size of the box to the height and width of the -% content. As this operation requires setting box dimensions and these -% transcend grouping, the safe way to do this is to use the internal box -% and to reset the result into the target box. -% \begin{macrocode} - \box_set_ht:Nn \l_@@_internal_box - { \l_@@_top_corner_dim - \l_@@_bottom_corner_dim } - \box_set_dp:Nn \l_@@_internal_box { 0 pt } - \box_set_wd:Nn \l_@@_internal_box - { \l_@@_right_corner_dim - \l_@@_left_corner_dim } - #5 #1 { \box_use_drop:N \l_@@_internal_box } -% \end{macrocode} -% The final task is to move the poles and corners such that they are -% back in alignment with the box reference point. -% \begin{macrocode} - \prop_map_inline:Nn \l_@@_corners_prop - { \@@_shift_corner:Nnnn #1 {##1} ##2 } - \prop_map_inline:Nn \l_@@_poles_prop - { \@@_shift_pole:Nnnnnn #1 {##1} ##2 } -% \end{macrocode} -% Update the coffin data. -% \begin{macrocode} - #4 { coffin ~ \@@_to_value:N #1 ~ corners } - \l_@@_corners_prop - #4 { coffin ~ \@@_to_value:N #1 ~ poles } - \l_@@_poles_prop - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@@_set_bounding:N} -% The bounding box corners for a coffin are easy enough to find: this -% is the same code as for the corners of the material itself, but -% using a dedicated property list. -% \begin{macrocode} -\cs_new_protected:Npn \@@_set_bounding:N #1 - { - \prop_put:Nnx \l_@@_bounding_prop { tl } - { { 0 pt } { \dim_eval:n { \box_ht:N #1 } } } - \prop_put:Nnx \l_@@_bounding_prop { tr } - { - { \dim_eval:n { \box_wd:N #1 } } - { \dim_eval:n { \box_ht:N #1 } } - } - \dim_set:Nn \l_@@_internal_dim { -\box_dp:N #1 } - \prop_put:Nnx \l_@@_bounding_prop { bl } - { { 0 pt } { \dim_use:N \l_@@_internal_dim } } - \prop_put:Nnx \l_@@_bounding_prop { br } - { - { \dim_eval:n { \box_wd:N #1 } } - { \dim_use:N \l_@@_internal_dim } - } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_rotate_bounding:nnn} -% \begin{macro}{\@@_rotate_corner:Nnnn} -% Rotating the position of the corner of the coffin is just a case -% of treating this as a vector from the reference point. The same -% treatment is used for the corners of the material itself and the -% bounding box. -% \begin{macrocode} -\cs_new_protected:Npn \@@_rotate_bounding:nnn #1#2#3 - { - \@@_rotate_vector:nnNN {#2} {#3} \l_@@_x_dim \l_@@_y_dim - \prop_put:Nnx \l_@@_bounding_prop {#1} - { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } } - } -\cs_new_protected:Npn \@@_rotate_corner:Nnnn #1#2#3#4 - { - \@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim - \prop_put:Nnx \l_@@_corners_prop {#2} - { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@@_rotate_pole:Nnnnnn} -% Rotating a single pole simply means shifting the co-ordinate of -% the pole and its direction. The rotation here is about the bottom-left -% corner of the coffin. -% \begin{macrocode} -\cs_new_protected:Npn \@@_rotate_pole:Nnnnnn #1#2#3#4#5#6 - { - \@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim - \@@_rotate_vector:nnNN {#5} {#6} - \l_@@_x_prime_dim \l_@@_y_prime_dim - \prop_put:Nnx \l_@@_poles_prop {#2} - { - { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } - { \dim_use:N \l_@@_x_prime_dim } - { \dim_use:N \l_@@_y_prime_dim } - } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_rotate_vector:nnNN} -% A rotation function, which needs only an input vector (as dimensions) -% and an output space. The values \cs{l_@@_cos_fp} and -% \cs{l_@@_sin_fp} should previously have been set up correctly. -% Working this way means that the floating point work is kept to a -% minimum: for any given rotation the sin and cosine values do no -% change, after all. -% \begin{macrocode} -\cs_new_protected:Npn \@@_rotate_vector:nnNN #1#2#3#4 - { - \dim_set:Nn #3 - { - \fp_to_dim:n - { - \dim_to_fp:n {#1} * \l_@@_cos_fp - - \dim_to_fp:n {#2} * \l_@@_sin_fp - } - } - \dim_set:Nn #4 - { - \fp_to_dim:n - { - \dim_to_fp:n {#1} * \l_@@_sin_fp - + \dim_to_fp:n {#2} * \l_@@_cos_fp - } - } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_find_corner_maxima:N} -% \begin{macro}{\@@_find_corner_maxima_aux:nn} -% The idea here is to find the extremities of the content of the -% coffin. This is done by looking for the smallest values for the bottom -% and left corners, and the largest values for the top and right -% corners. The values start at the maximum dimensions so that the -% case where all are positive or all are negative works out correctly. -% \begin{macrocode} -\cs_new_protected:Npn \@@_find_corner_maxima:N #1 - { - \dim_set:Nn \l_@@_top_corner_dim { -\c_max_dim } - \dim_set:Nn \l_@@_right_corner_dim { -\c_max_dim } - \dim_set:Nn \l_@@_bottom_corner_dim { \c_max_dim } - \dim_set:Nn \l_@@_left_corner_dim { \c_max_dim } - \prop_map_inline:Nn \l_@@_corners_prop - { \@@_find_corner_maxima_aux:nn ##2 } - } -\cs_new_protected:Npn \@@_find_corner_maxima_aux:nn #1#2 - { - \dim_set:Nn \l_@@_left_corner_dim - { \dim_min:nn { \l_@@_left_corner_dim } {#1} } - \dim_set:Nn \l_@@_right_corner_dim - { \dim_max:nn { \l_@@_right_corner_dim } {#1} } - \dim_set:Nn \l_@@_bottom_corner_dim - { \dim_min:nn { \l_@@_bottom_corner_dim } {#2} } - \dim_set:Nn \l_@@_top_corner_dim - { \dim_max:nn { \l_@@_top_corner_dim } {#2} } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@@_find_bounding_shift:} -% \begin{macro}{\@@_find_bounding_shift_aux:nn} -% The approach to finding the shift for the bounding box is similar to -% that for the corners. However, there is only one value needed here and -% a fixed input property list, so things are a bit clearer. -% \begin{macrocode} -\cs_new_protected:Npn \@@_find_bounding_shift: - { - \dim_set:Nn \l_@@_bounding_shift_dim { \c_max_dim } - \prop_map_inline:Nn \l_@@_bounding_prop - { \@@_find_bounding_shift_aux:nn ##2 } - } -\cs_new_protected:Npn \@@_find_bounding_shift_aux:nn #1#2 - { - \dim_set:Nn \l_@@_bounding_shift_dim - { \dim_min:nn { \l_@@_bounding_shift_dim } {#1} } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@@_shift_corner:Nnnn} -% \begin{macro}{\@@_shift_pole:Nnnnnn} -% Shifting the corners and poles of a coffin means subtracting the -% appropriate values from the $x$- and $y$-components. For -% the poles, this means that the direction vector is unchanged. -% \begin{macrocode} -\cs_new_protected:Npn \@@_shift_corner:Nnnn #1#2#3#4 - { - \prop_put:Nnx \l_@@_corners_prop {#2} - { - { \dim_eval:n { #3 - \l_@@_left_corner_dim } } - { \dim_eval:n { #4 - \l_@@_bottom_corner_dim } } - } - } -\cs_new_protected:Npn \@@_shift_pole:Nnnnnn #1#2#3#4#5#6 - { - \prop_put:Nnx \l_@@_poles_prop {#2} - { - { \dim_eval:n { #3 - \l_@@_left_corner_dim } } - { \dim_eval:n { #4 - \l_@@_bottom_corner_dim } } - {#5} {#6} - } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \subsubsection{Resizing coffins} -% -% \begin{variable}{\l_@@_scale_x_fp} -% \begin{variable}{\l_@@_scale_y_fp} -% Storage for the scaling factors in $x$ and $y$, respectively. -% \begin{macrocode} -\fp_new:N \l_@@_scale_x_fp -\fp_new:N \l_@@_scale_y_fp -% \end{macrocode} -% \end{variable} -% \end{variable} -% -% \begin{variable}{\l_@@_scaled_total_height_dim} -% \begin{variable}{\l_@@_scaled_width_dim} -% When scaling, the values given have to be turned into absolute values. -% \begin{macrocode} -\dim_new:N \l_@@_scaled_total_height_dim -\dim_new:N \l_@@_scaled_width_dim -% \end{macrocode} -% \end{variable} -% \end{variable} -% -% \begin{macro} -% { -% \coffin_resize:Nnn, \coffin_resize:cnn, -% \coffin_gresize:Nnn, \coffin_gresize:cnn -% } -% \begin{macro}{\@@_resize:NnnNN} -% Resizing a coffin begins by setting up the user-friendly names for -% the dimensions of the coffin box. The new sizes are then turned into -% scale factor. This is the same operation as takes place for the -% underlying box, but that operation is grouped and so the same -% calculation is done here. -% \begin{macrocode} -\cs_new_protected:Npn \coffin_resize:Nnn #1#2#3 - { - \@@_resize:NnnNN #1 {#2} {#3} - \box_resize_to_wd_and_ht_plus_dp:Nnn - \prop_set_eq:cN - } -\cs_generate_variant:Nn \coffin_resize:Nnn { c } -\cs_new_protected:Npn \coffin_gresize:Nnn #1#2#3 - { - \@@_resize:NnnNN #1 {#2} {#3} - \box_gresize_to_wd_and_ht_plus_dp:Nnn - \prop_gset_eq:cN - } -\cs_generate_variant:Nn \coffin_gresize:Nnn { c } -\cs_new_protected:Npn \@@_resize:NnnNN #1#2#3#4#5 - { - \fp_set:Nn \l_@@_scale_x_fp - { \dim_to_fp:n {#2} / \dim_to_fp:n { \coffin_wd:N #1 } } - \fp_set:Nn \l_@@_scale_y_fp - { - \dim_to_fp:n {#3} - / \dim_to_fp:n { \coffin_ht:N #1 + \coffin_dp:N #1 } - } - #4 #1 {#2} {#3} - \@@_resize_common:NnnN #1 {#2} {#3} #5 - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@@_resize_common:NnnN} -% The poles and corners of the coffin are scaled to the appropriate -% places before actually resizing the underlying box. -% \begin{macrocode} -\cs_new_protected:Npn \@@_resize_common:NnnN #1#2#3#4 - { - \prop_set_eq:Nc \l_@@_corners_prop - { coffin ~ \@@_to_value:N #1 ~ corners } - \prop_set_eq:Nc \l_@@_poles_prop - { coffin ~ \@@_to_value:N #1 ~ poles } - \prop_map_inline:Nn \l_@@_corners_prop - { \@@_scale_corner:Nnnn #1 {##1} ##2 } - \prop_map_inline:Nn \l_@@_poles_prop - { \@@_scale_pole:Nnnnnn #1 {##1} ##2 } -% \end{macrocode} -% Negative $x$-scaling values place the poles in the wrong -% location: this is corrected here. -% \begin{macrocode} - \fp_compare:nNnT \l_@@_scale_x_fp < \c_zero_fp - { - \prop_map_inline:Nn \l_@@_corners_prop - { \@@_x_shift_corner:Nnnn #1 {##1} ##2 } - \prop_map_inline:Nn \l_@@_poles_prop - { \@@_x_shift_pole:Nnnnnn #1 {##1} ##2 } - } - #4 { coffin ~ \@@_to_value:N #1 ~ corners } - \l_@@_corners_prop - #4 { coffin ~ \@@_to_value:N #1 ~ poles } - \l_@@_poles_prop - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro} -% { -% \coffin_scale:Nnn, \coffin_scale:cnn, -% \coffin_gscale:Nnn, \coffin_gscale:cnn -% } -% \begin{macro}{\coffin_scale:NnnNN} -% For scaling, the opposite calculation is done to find the new -% dimensions for the coffin. Only the total height is needed, as this -% is the shift required for corners and poles. The scaling is done -% the \TeX{} way as this works properly with floating point values -% without needing to use the \texttt{fp} module. -% \begin{macrocode} -\cs_new_protected:Npn \coffin_scale:Nnn #1#2#3 - { \@@_scale:NnnNN #1 {#2} {#3} \box_scale:Nnn \prop_set_eq:cN } -\cs_generate_variant:Nn \coffin_scale:Nnn { c } -\cs_new_protected:Npn \coffin_gscale:Nnn #1#2#3 - { \@@_scale:NnnNN #1 {#2} {#3} \box_gscale:Nnn \prop_gset_eq:cN } -\cs_generate_variant:Nn \coffin_gscale:Nnn { c } -\cs_new_protected:Npn \@@_scale:NnnNN #1#2#3#4#5 - { - \fp_set:Nn \l_@@_scale_x_fp {#2} - \fp_set:Nn \l_@@_scale_y_fp {#3} - #4 #1 { \l_@@_scale_x_fp } { \l_@@_scale_y_fp } - \dim_set:Nn \l_@@_internal_dim - { \coffin_ht:N #1 + \coffin_dp:N #1 } - \dim_set:Nn \l_@@_scaled_total_height_dim - { \fp_abs:n { \l_@@_scale_y_fp } \l_@@_internal_dim } - \dim_set:Nn \l_@@_scaled_width_dim - { -\fp_abs:n { \l_@@_scale_x_fp } \coffin_wd:N #1 } - \@@_resize_common:NnnN #1 - { \l_@@_scaled_width_dim } { \l_@@_scaled_total_height_dim } - #5 - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@@_scale_vector:nnNN} -% This functions scales a vector from the origin using the pre-set scale -% factors in $x$ and $y$. This is a much less complex operation -% than rotation, and as a result the code is a lot clearer. -% \begin{macrocode} -\cs_new_protected:Npn \@@_scale_vector:nnNN #1#2#3#4 - { - \dim_set:Nn #3 - { \fp_to_dim:n { \dim_to_fp:n {#1} * \l_@@_scale_x_fp } } - \dim_set:Nn #4 - { \fp_to_dim:n { \dim_to_fp:n {#2} * \l_@@_scale_y_fp } } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_scale_corner:Nnnn} -% \begin{macro}{\@@_scale_pole:Nnnnnn} -% Scaling both corners and poles is a simple calculation using the -% preceding vector scaling. -% \begin{macrocode} -\cs_new_protected:Npn \@@_scale_corner:Nnnn #1#2#3#4 - { - \@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim - \prop_put:Nnx \l_@@_corners_prop {#2} - { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } } - } -\cs_new_protected:Npn \@@_scale_pole:Nnnnnn #1#2#3#4#5#6 - { - \@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim - \prop_put:Nnx \l_@@_poles_prop {#2} - { - { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } - {#5} {#6} - } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@@_x_shift_corner:Nnnn} -% \begin{macro}{\@@_x_shift_pole:Nnnnnn} -% These functions correct for the $x$ displacement that takes -% place with a negative horizontal scaling. -% \begin{macrocode} -\cs_new_protected:Npn \@@_x_shift_corner:Nnnn #1#2#3#4 - { - \prop_put:Nnx \l_@@_corners_prop {#2} - { - { \dim_eval:n { #3 + \box_wd:N #1 } } {#4} - } - } -\cs_new_protected:Npn \@@_x_shift_pole:Nnnnnn #1#2#3#4#5#6 - { - \prop_put:Nnx \l_@@_poles_prop {#2} - { - { \dim_eval:n { #3 + \box_wd:N #1 } } {#4} - {#5} {#6} - } - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% % \subsection{Additions to \pkg{l3fp-convert}} % % \begin{macrocode} diff --git a/l3kernel/l3coffins.dtx b/l3kernel/l3coffins.dtx index 88ae571c74..0223e975c3 100644 --- a/l3kernel/l3coffins.dtx +++ b/l3kernel/l3coffins.dtx @@ -187,6 +187,47 @@ % \meta{offset} should be given as a dimension expression. % \end{function} % +% \section{Affine transformations} +% +% \begin{function}[updated = 2019-01-23] +% { +% \coffin_resize:Nnn, \coffin_resize:cnn, +% \coffin_gresize:Nnn, \coffin_gresize:cnn +% } +% \begin{syntax} +% \cs{coffin_resize:Nnn} \meta{coffin} \Arg{width} \Arg{total-height} +% \end{syntax} +% Resized the \meta{coffin} to \meta{width} and \meta{total-height}, +% both of which should be given as dimension expressions. +% \end{function} +% +% \begin{function} +% { +% \coffin_rotate:Nn, \coffin_rotate:cn, +% \coffin_grotate:Nn, \coffin_grotate:cn +% } +% \begin{syntax} +% \cs{coffin_rotate:Nn} \meta{coffin} \Arg{angle} +% \end{syntax} +% Rotates the \meta{coffin} by the given \meta{angle} (given in +% degrees counter-clockwise). This process rotates both the +% coffin content and poles. Multiple rotations do not result in +% the bounding box of the coffin growing unnecessarily. +% \end{function} +% +% \begin{function}[updated = 2019-01-23] +% { +% \coffin_scale:Nnn, \coffin_scale:cnn, +% \coffin_gscale:Nnn, \coffin_gscale:cnn +% } +% \begin{syntax} +% \cs{coffin_scale:Nnn} \meta{coffin} \Arg{x-scale} \Arg{y-scale} +% \end{syntax} +% Scales the \meta{coffin} by a factors \meta{x-scale} and +% \meta{y-scale} in the horizontal and vertical directions, +% respectively. The two scale factors should be given as real numbers. +% \end{function} +% % \section{Joining and using coffins} % % \begin{function}[updated = 2019-01-22] @@ -1277,6 +1318,536 @@ % \end{macro} % \end{macro} % +% \subsection{Affine transformations} +% +% \begin{variable}{\l_@@_sin_fp} +% \begin{variable}{\l_@@_cos_fp} +% Used for rotations to get the sine and cosine values. +% \begin{macrocode} +\fp_new:N \l_@@_sin_fp +\fp_new:N \l_@@_cos_fp +% \end{macrocode} +% \end{variable} +% \end{variable} +% +% \begin{variable}{\l_@@_bounding_prop} +% A property list for the bounding box of a coffin. This is only needed +% during the rotation, so there is just the one. +% \begin{macrocode} +\prop_new:N \l_@@_bounding_prop +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_@@_corners_prop, \l_@@_poles_prop} +% Used to avoid needing to track scope for intermediate steps. +% \begin{macrocode} +\prop_new:N \l_@@_corners_prop +\prop_new:N \l_@@_poles_prop +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_@@_bounding_shift_dim} +% The shift of the bounding box of a coffin from the real content. +% \begin{macrocode} +\dim_new:N \l_@@_bounding_shift_dim +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_@@_left_corner_dim} +% \begin{variable}{\l_@@_right_corner_dim} +% \begin{variable}{\l_@@_bottom_corner_dim} +% \begin{variable}{\l_@@_top_corner_dim} +% These are used to hold maxima for the various corner values: these +% thus define the minimum size of the bounding box after rotation. +% \begin{macrocode} +\dim_new:N \l_@@_left_corner_dim +\dim_new:N \l_@@_right_corner_dim +\dim_new:N \l_@@_bottom_corner_dim +\dim_new:N \l_@@_top_corner_dim +% \end{macrocode} +% \end{variable} +% \end{variable} +% \end{variable} +% \end{variable} +% +% \begin{macro} +% { +% \coffin_rotate:Nn, \coffin_rotate:cn, +% \coffin_grotate:Nn, \coffin_grotate:cn +% } +% \begin{macro}{\@@_rotate:NnNN} +% Rotating a coffin requires several steps which can be conveniently +% run together. The sine and cosine of the angle in degrees are +% computed. This is then used to set \cs{l_@@_sin_fp} and +% \cs{l_@@_cos_fp}, which are carried through unchanged for the rest +% of the procedure. +% \begin{macrocode} +\cs_new_protected:Npn \coffin_rotate:Nn #1#2 + { \@@_rotate:NnNN #1 {#2} \box_rotate:Nn \prop_set_eq:cN } +\cs_new_protected:Npn \coffin_grotate:Nn #1#2 + { \@@_rotate:NnNN #1 {#2} \box_grotate:Nn \prop_gset_eq:cN } +\cs_new_protected:Npn \@@_rotate:NnNN #1#2#3#4 + { + \fp_set:Nn \l_@@_sin_fp { sind ( #2 ) } + \fp_set:Nn \l_@@_cos_fp { cosd ( #2 ) } +% \end{macrocode} +% Use a local copy of the property lists to avoid needing to pass the +% name and scope around. +% \begin{macrocode} + \prop_set_eq:Nc \l_@@_corners_prop + { coffin ~ \@@_to_value:N #1 ~ corners } + \prop_set_eq:Nc \l_@@_poles_prop + { coffin ~ \@@_to_value:N #1 ~ poles } +% \end{macrocode} +% The corners and poles of the coffin can now be rotated around the +% origin. This is best achieved using mapping functions. +% \begin{macrocode} + \prop_map_inline:Nn \l_@@_corners_prop + { \@@_rotate_corner:Nnnn #1 {##1} ##2 } + \prop_map_inline:Nn \l_@@_poles_prop + { \@@_rotate_pole:Nnnnnn #1 {##1} ##2 } +% \end{macrocode} +% The bounding box of the coffin needs to be rotated, and to do this +% the corners have to be found first. They are then rotated in the same +% way as the corners of the coffin material itself. +% \begin{macrocode} + \@@_set_bounding:N #1 + \prop_map_inline:Nn \l_@@_bounding_prop + { \@@_rotate_bounding:nnn {##1} ##2 } +% \end{macrocode} +% At this stage, there needs to be a calculation to find where the +% corners of the content and the box itself will end up. +% \begin{macrocode} + \@@_find_corner_maxima:N #1 + \@@_find_bounding_shift: + #3 #1 {#2} +% \end{macrocode} +% The correction of the box position itself takes place here. The idea +% is that the bounding box for a coffin is tight up to the content, and +% has the reference point at the bottom-left. The $x$-direction is +% handled by moving the content by the difference in the positions of +% the bounding box and the content left edge. The $y$-direction is +% dealt with by moving the box down by any depth it has acquired. The +% internal box is used here to allow for the next step. +% \begin{macrocode} + \hbox_set:Nn \l_@@_internal_box + { + \tex_kern:D + \dim_eval:n + { \l_@@_bounding_shift_dim - \l_@@_left_corner_dim } + \exp_stop_f: + \box_move_down:nn { \l_@@_bottom_corner_dim } + { \box_use:N #1 } + } +% \end{macrocode} +% If there have been any previous rotations then the size of the +% bounding box will be bigger than the contents. This can be corrected +% easily by setting the size of the box to the height and width of the +% content. As this operation requires setting box dimensions and these +% transcend grouping, the safe way to do this is to use the internal box +% and to reset the result into the target box. +% \begin{macrocode} + \box_set_ht:Nn \l_@@_internal_box + { \l_@@_top_corner_dim - \l_@@_bottom_corner_dim } + \box_set_dp:Nn \l_@@_internal_box { 0 pt } + \box_set_wd:Nn \l_@@_internal_box + { \l_@@_right_corner_dim - \l_@@_left_corner_dim } + \hbox_set:Nn #1 { \box_use_drop:N \l_@@_internal_box } +% \end{macrocode} +% The final task is to move the poles and corners such that they are +% back in alignment with the box reference point. +% \begin{macrocode} + \prop_map_inline:Nn \l_@@_corners_prop + { \@@_shift_corner:Nnnn #1 {##1} ##2 } + \prop_map_inline:Nn \l_@@_poles_prop + { \@@_shift_pole:Nnnnnn #1 {##1} ##2 } +% \end{macrocode} +% Update the coffin data. +% \begin{macrocode} + #4 { coffin ~ \@@_to_value:N #1 ~ corners } + \l_@@_corners_prop + #4 { coffin ~ \@@_to_value:N #1 ~ poles } + \l_@@_poles_prop + } +\cs_generate_variant:Nn \coffin_rotate:Nn { c } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_set_bounding:N} +% The bounding box corners for a coffin are easy enough to find: this +% is the same code as for the corners of the material itself, but +% using a dedicated property list. +% \begin{macrocode} +\cs_new_protected:Npn \@@_set_bounding:N #1 + { + \prop_put:Nnx \l_@@_bounding_prop { tl } + { { 0 pt } { \dim_eval:n { \box_ht:N #1 } } } + \prop_put:Nnx \l_@@_bounding_prop { tr } + { + { \dim_eval:n { \box_wd:N #1 } } + { \dim_eval:n { \box_ht:N #1 } } + } + \dim_set:Nn \l_@@_internal_dim { -\box_dp:N #1 } + \prop_put:Nnx \l_@@_bounding_prop { bl } + { { 0 pt } { \dim_use:N \l_@@_internal_dim } } + \prop_put:Nnx \l_@@_bounding_prop { br } + { + { \dim_eval:n { \box_wd:N #1 } } + { \dim_use:N \l_@@_internal_dim } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_rotate_bounding:nnn} +% \begin{macro}{\@@_rotate_corner:Nnnn} +% Rotating the position of the corner of the coffin is just a case +% of treating this as a vector from the reference point. The same +% treatment is used for the corners of the material itself and the +% bounding box. +% \begin{macrocode} +\cs_new_protected:Npn \@@_rotate_bounding:nnn #1#2#3 + { + \@@_rotate_vector:nnNN {#2} {#3} \l_@@_x_dim \l_@@_y_dim + \prop_put:Nnx \l_@@_bounding_prop {#1} + { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } } + } +\cs_new_protected:Npn \@@_rotate_corner:Nnnn #1#2#3#4 + { + \@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim + \prop_put:Nnx \l_@@_corners_prop {#2} + { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_rotate_pole:Nnnnnn} +% Rotating a single pole simply means shifting the co-ordinate of +% the pole and its direction. The rotation here is about the bottom-left +% corner of the coffin. +% \begin{macrocode} +\cs_new_protected:Npn \@@_rotate_pole:Nnnnnn #1#2#3#4#5#6 + { + \@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim + \@@_rotate_vector:nnNN {#5} {#6} + \l_@@_x_prime_dim \l_@@_y_prime_dim + \prop_put:Nnx \l_@@_poles_prop {#2} + { + { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } + { \dim_use:N \l_@@_x_prime_dim } + { \dim_use:N \l_@@_y_prime_dim } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_rotate_vector:nnNN} +% A rotation function, which needs only an input vector (as dimensions) +% and an output space. The values \cs{l_@@_cos_fp} and +% \cs{l_@@_sin_fp} should previously have been set up correctly. +% Working this way means that the floating point work is kept to a +% minimum: for any given rotation the sin and cosine values do no +% change, after all. +% \begin{macrocode} +\cs_new_protected:Npn \@@_rotate_vector:nnNN #1#2#3#4 + { + \dim_set:Nn #3 + { + \fp_to_dim:n + { + \dim_to_fp:n {#1} * \l_@@_cos_fp + - \dim_to_fp:n {#2} * \l_@@_sin_fp + } + } + \dim_set:Nn #4 + { + \fp_to_dim:n + { + \dim_to_fp:n {#1} * \l_@@_sin_fp + + \dim_to_fp:n {#2} * \l_@@_cos_fp + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_find_corner_maxima:N} +% \begin{macro}{\@@_find_corner_maxima_aux:nn} +% The idea here is to find the extremities of the content of the +% coffin. This is done by looking for the smallest values for the bottom +% and left corners, and the largest values for the top and right +% corners. The values start at the maximum dimensions so that the +% case where all are positive or all are negative works out correctly. +% \begin{macrocode} +\cs_new_protected:Npn \@@_find_corner_maxima:N #1 + { + \dim_set:Nn \l_@@_top_corner_dim { -\c_max_dim } + \dim_set:Nn \l_@@_right_corner_dim { -\c_max_dim } + \dim_set:Nn \l_@@_bottom_corner_dim { \c_max_dim } + \dim_set:Nn \l_@@_left_corner_dim { \c_max_dim } + \prop_map_inline:Nn \l_@@_corners_prop + { \@@_find_corner_maxima_aux:nn ##2 } + } +\cs_new_protected:Npn \@@_find_corner_maxima_aux:nn #1#2 + { + \dim_set:Nn \l_@@_left_corner_dim + { \dim_min:nn { \l_@@_left_corner_dim } {#1} } + \dim_set:Nn \l_@@_right_corner_dim + { \dim_max:nn { \l_@@_right_corner_dim } {#1} } + \dim_set:Nn \l_@@_bottom_corner_dim + { \dim_min:nn { \l_@@_bottom_corner_dim } {#2} } + \dim_set:Nn \l_@@_top_corner_dim + { \dim_max:nn { \l_@@_top_corner_dim } {#2} } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_find_bounding_shift:} +% \begin{macro}{\@@_find_bounding_shift_aux:nn} +% The approach to finding the shift for the bounding box is similar to +% that for the corners. However, there is only one value needed here and +% a fixed input property list, so things are a bit clearer. +% \begin{macrocode} +\cs_new_protected:Npn \@@_find_bounding_shift: + { + \dim_set:Nn \l_@@_bounding_shift_dim { \c_max_dim } + \prop_map_inline:Nn \l_@@_bounding_prop + { \@@_find_bounding_shift_aux:nn ##2 } + } +\cs_new_protected:Npn \@@_find_bounding_shift_aux:nn #1#2 + { + \dim_set:Nn \l_@@_bounding_shift_dim + { \dim_min:nn { \l_@@_bounding_shift_dim } {#1} } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_shift_corner:Nnnn} +% \begin{macro}{\@@_shift_pole:Nnnnnn} +% Shifting the corners and poles of a coffin means subtracting the +% appropriate values from the $x$- and $y$-components. For +% the poles, this means that the direction vector is unchanged. +% \begin{macrocode} +\cs_new_protected:Npn \@@_shift_corner:Nnnn #1#2#3#4 + { + \prop_put:Nnx \l_@@_corners_prop {#2} + { + { \dim_eval:n { #3 - \l_@@_left_corner_dim } } + { \dim_eval:n { #4 - \l_@@_bottom_corner_dim } } + } + } +\cs_new_protected:Npn \@@_shift_pole:Nnnnnn #1#2#3#4#5#6 + { + \prop_put:Nnx \l_@@_poles_prop {#2} + { + { \dim_eval:n { #3 - \l_@@_left_corner_dim } } + { \dim_eval:n { #4 - \l_@@_bottom_corner_dim } } + {#5} {#6} + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{variable}{\l_@@_scale_x_fp} +% \begin{variable}{\l_@@_scale_y_fp} +% Storage for the scaling factors in $x$ and $y$, respectively. +% \begin{macrocode} +\fp_new:N \l_@@_scale_x_fp +\fp_new:N \l_@@_scale_y_fp +% \end{macrocode} +% \end{variable} +% \end{variable} +% +% \begin{variable}{\l_@@_scaled_total_height_dim} +% \begin{variable}{\l_@@_scaled_width_dim} +% When scaling, the values given have to be turned into absolute values. +% \begin{macrocode} +\dim_new:N \l_@@_scaled_total_height_dim +\dim_new:N \l_@@_scaled_width_dim +% \end{macrocode} +% \end{variable} +% \end{variable} +% +% \begin{macro} +% { +% \coffin_resize:Nnn, \coffin_resize:cnn, +% \coffin_gresize:Nnn, \coffin_gresize:cnn +% } +% \begin{macro}{\@@_resize:NnnNN} +% Resizing a coffin begins by setting up the user-friendly names for +% the dimensions of the coffin box. The new sizes are then turned into +% scale factor. This is the same operation as takes place for the +% underlying box, but that operation is grouped and so the same +% calculation is done here. +% \begin{macrocode} +\cs_new_protected:Npn \coffin_resize:Nnn #1#2#3 + { + \@@_resize:NnnNN #1 {#2} {#3} + \box_resize_to_wd_and_ht_plus_dp:Nnn + \prop_set_eq:cN + } +\cs_generate_variant:Nn \coffin_resize:Nnn { c } +\cs_new_protected:Npn \coffin_gresize:Nnn #1#2#3 + { + \@@_resize:NnnNN #1 {#2} {#3} + \box_gresize_to_wd_and_ht_plus_dp:Nnn + \prop_gset_eq:cN + } +\cs_generate_variant:Nn \coffin_gresize:Nnn { c } +\cs_new_protected:Npn \@@_resize:NnnNN #1#2#3#4#5 + { + \fp_set:Nn \l_@@_scale_x_fp + { \dim_to_fp:n {#2} / \dim_to_fp:n { \coffin_wd:N #1 } } + \fp_set:Nn \l_@@_scale_y_fp + { + \dim_to_fp:n {#3} + / \dim_to_fp:n { \coffin_ht:N #1 + \coffin_dp:N #1 } + } + #4 #1 {#2} {#3} + \@@_resize_common:NnnN #1 {#2} {#3} #5 + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_resize_common:NnnN} +% The poles and corners of the coffin are scaled to the appropriate +% places before actually resizing the underlying box. +% \begin{macrocode} +\cs_new_protected:Npn \@@_resize_common:NnnN #1#2#3#4 + { + \prop_set_eq:Nc \l_@@_corners_prop + { coffin ~ \@@_to_value:N #1 ~ corners } + \prop_set_eq:Nc \l_@@_poles_prop + { coffin ~ \@@_to_value:N #1 ~ poles } + \prop_map_inline:Nn \l_@@_corners_prop + { \@@_scale_corner:Nnnn #1 {##1} ##2 } + \prop_map_inline:Nn \l_@@_poles_prop + { \@@_scale_pole:Nnnnnn #1 {##1} ##2 } +% \end{macrocode} +% Negative $x$-scaling values place the poles in the wrong +% location: this is corrected here. +% \begin{macrocode} + \fp_compare:nNnT \l_@@_scale_x_fp < \c_zero_fp + { + \prop_map_inline:Nn \l_@@_corners_prop + { \@@_x_shift_corner:Nnnn #1 {##1} ##2 } + \prop_map_inline:Nn \l_@@_poles_prop + { \@@_x_shift_pole:Nnnnnn #1 {##1} ##2 } + } + #4 { coffin ~ \@@_to_value:N #1 ~ corners } + \l_@@_corners_prop + #4 { coffin ~ \@@_to_value:N #1 ~ poles } + \l_@@_poles_prop + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro} +% { +% \coffin_scale:Nnn, \coffin_scale:cnn, +% \coffin_gscale:Nnn, \coffin_gscale:cnn +% } +% \begin{macro}{\coffin_scale:NnnNN} +% For scaling, the opposite calculation is done to find the new +% dimensions for the coffin. Only the total height is needed, as this +% is the shift required for corners and poles. The scaling is done +% the \TeX{} way as this works properly with floating point values +% without needing to use the \texttt{fp} module. +% \begin{macrocode} +\cs_new_protected:Npn \coffin_scale:Nnn #1#2#3 + { \@@_scale:NnnNN #1 {#2} {#3} \box_scale:Nnn \prop_set_eq:cN } +\cs_generate_variant:Nn \coffin_scale:Nnn { c } +\cs_new_protected:Npn \coffin_gscale:Nnn #1#2#3 + { \@@_scale:NnnNN #1 {#2} {#3} \box_gscale:Nnn \prop_gset_eq:cN } +\cs_generate_variant:Nn \coffin_gscale:Nnn { c } +\cs_new_protected:Npn \@@_scale:NnnNN #1#2#3#4#5 + { + \fp_set:Nn \l_@@_scale_x_fp {#2} + \fp_set:Nn \l_@@_scale_y_fp {#3} + #4 #1 { \l_@@_scale_x_fp } { \l_@@_scale_y_fp } + \dim_set:Nn \l_@@_internal_dim + { \coffin_ht:N #1 + \coffin_dp:N #1 } + \dim_set:Nn \l_@@_scaled_total_height_dim + { \fp_abs:n { \l_@@_scale_y_fp } \l_@@_internal_dim } + \dim_set:Nn \l_@@_scaled_width_dim + { -\fp_abs:n { \l_@@_scale_x_fp } \coffin_wd:N #1 } + \@@_resize_common:NnnN #1 + { \l_@@_scaled_width_dim } { \l_@@_scaled_total_height_dim } + #5 + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_scale_vector:nnNN} +% This functions scales a vector from the origin using the pre-set scale +% factors in $x$ and $y$. This is a much less complex operation +% than rotation, and as a result the code is a lot clearer. +% \begin{macrocode} +\cs_new_protected:Npn \@@_scale_vector:nnNN #1#2#3#4 + { + \dim_set:Nn #3 + { \fp_to_dim:n { \dim_to_fp:n {#1} * \l_@@_scale_x_fp } } + \dim_set:Nn #4 + { \fp_to_dim:n { \dim_to_fp:n {#2} * \l_@@_scale_y_fp } } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_scale_corner:Nnnn} +% \begin{macro}{\@@_scale_pole:Nnnnnn} +% Scaling both corners and poles is a simple calculation using the +% preceding vector scaling. +% \begin{macrocode} +\cs_new_protected:Npn \@@_scale_corner:Nnnn #1#2#3#4 + { + \@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim + \prop_put:Nnx \l_@@_corners_prop {#2} + { { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } } + } +\cs_new_protected:Npn \@@_scale_pole:Nnnnnn #1#2#3#4#5#6 + { + \@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim + \prop_put:Nnx \l_@@_poles_prop {#2} + { + { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } + {#5} {#6} + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_x_shift_corner:Nnnn} +% \begin{macro}{\@@_x_shift_pole:Nnnnnn} +% These functions correct for the $x$ displacement that takes +% place with a negative horizontal scaling. +% \begin{macrocode} +\cs_new_protected:Npn \@@_x_shift_corner:Nnnn #1#2#3#4 + { + \prop_put:Nnx \l_@@_corners_prop {#2} + { + { \dim_eval:n { #3 + \box_wd:N #1 } } {#4} + } + } +\cs_new_protected:Npn \@@_x_shift_pole:Nnnnnn #1#2#3#4#5#6 + { + \prop_put:Nnx \l_@@_poles_prop {#2} + { + { \dim_eval:n { #3 + \box_wd:N #1 } } {#4} + {#5} {#6} + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \subsection{Aligning and typesetting of coffins} % % \begin{macro} diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg index 64d196186e..8841f16fec 100644 --- a/l3kernel/testfiles/m3expl001.luatex.tlg +++ b/l3kernel/testfiles/m3expl001.luatex.tlg @@ -5460,6 +5460,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5896,59 +5948,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg index 8db9b74250..15cef0091b 100644 --- a/l3kernel/testfiles/m3expl001.ptex.tlg +++ b/l3kernel/testfiles/m3expl001.ptex.tlg @@ -5756,6 +5756,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5929,59 +5981,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg index c510007d55..2b6d08c2ec 100644 --- a/l3kernel/testfiles/m3expl001.tlg +++ b/l3kernel/testfiles/m3expl001.tlg @@ -5756,6 +5756,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5929,59 +5981,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg index 94bb3cb6c5..66a90a797f 100644 --- a/l3kernel/testfiles/m3expl001.uptex.tlg +++ b/l3kernel/testfiles/m3expl001.uptex.tlg @@ -5753,6 +5753,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5926,59 +5978,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg index 87744b14e1..32ed39b74d 100644 --- a/l3kernel/testfiles/m3expl001.xetex.tlg +++ b/l3kernel/testfiles/m3expl001.xetex.tlg @@ -5471,6 +5471,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5907,59 +5959,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl002.luatex.tlg b/l3kernel/testfiles/m3expl002.luatex.tlg index e235bdb11c..20633d4a6f 100644 --- a/l3kernel/testfiles/m3expl002.luatex.tlg +++ b/l3kernel/testfiles/m3expl002.luatex.tlg @@ -132,6 +132,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -140,13 +147,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3pdfmode.def diff --git a/l3kernel/testfiles/m3expl002.ptex.tlg b/l3kernel/testfiles/m3expl002.ptex.tlg index 6f6c527f5e..0f52560ce1 100644 --- a/l3kernel/testfiles/m3expl002.ptex.tlg +++ b/l3kernel/testfiles/m3expl002.ptex.tlg @@ -134,6 +134,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -142,13 +149,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3dvipdfmx.def diff --git a/l3kernel/testfiles/m3expl002.tlg b/l3kernel/testfiles/m3expl002.tlg index f9d64930c5..1ead6bc0e8 100644 --- a/l3kernel/testfiles/m3expl002.tlg +++ b/l3kernel/testfiles/m3expl002.tlg @@ -134,6 +134,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -142,13 +149,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3pdfmode.def diff --git a/l3kernel/testfiles/m3expl002.uptex.tlg b/l3kernel/testfiles/m3expl002.uptex.tlg index 3d7a22733c..03d204863a 100644 --- a/l3kernel/testfiles/m3expl002.uptex.tlg +++ b/l3kernel/testfiles/m3expl002.uptex.tlg @@ -131,6 +131,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -139,13 +146,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3dvipdfmx.def diff --git a/l3kernel/testfiles/m3expl002.xetex.tlg b/l3kernel/testfiles/m3expl002.xetex.tlg index 3c0c72b575..2c315b478b 100644 --- a/l3kernel/testfiles/m3expl002.xetex.tlg +++ b/l3kernel/testfiles/m3expl002.xetex.tlg @@ -131,6 +131,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -139,13 +146,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... ) (l3xdvipdfmx.def File: l3xdvipdfmx.def ....-..-.. v L3 Experimental driver: xdvipdfmx \g__driver_image_int=\count... diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg index 64d196186e..8841f16fec 100644 --- a/l3kernel/testfiles/m3expl003.luatex.tlg +++ b/l3kernel/testfiles/m3expl003.luatex.tlg @@ -5460,6 +5460,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5896,59 +5948,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg index 8db9b74250..15cef0091b 100644 --- a/l3kernel/testfiles/m3expl003.ptex.tlg +++ b/l3kernel/testfiles/m3expl003.ptex.tlg @@ -5756,6 +5756,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5929,59 +5981,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg index c510007d55..2b6d08c2ec 100644 --- a/l3kernel/testfiles/m3expl003.tlg +++ b/l3kernel/testfiles/m3expl003.tlg @@ -5756,6 +5756,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5929,59 +5981,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg index 94bb3cb6c5..66a90a797f 100644 --- a/l3kernel/testfiles/m3expl003.uptex.tlg +++ b/l3kernel/testfiles/m3expl003.uptex.tlg @@ -5753,6 +5753,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5926,59 +5978,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg index 87744b14e1..32ed39b74d 100644 --- a/l3kernel/testfiles/m3expl003.xetex.tlg +++ b/l3kernel/testfiles/m3expl003.xetex.tlg @@ -5471,6 +5471,58 @@ Defining \__coffin_update_poles:NNN on line ... Defining \__coffin_calculate_intersection:Nnn on line ... Defining \__coffin_calculate_intersection:nnnnnnnn on line ... Defining \__coffin_calculate_intersection_aux:nnnnnN on line ... +Defining \l__coffin_sin_fp on line ... +Defining \l__coffin_cos_fp on line ... +Defining \l__coffin_bounding_prop on line ... +Defining \l__coffin_corners_prop on line ... +Defining \l__coffin_poles_prop on line ... +Defining \l__coffin_bounding_shift_dim on line ... +\l__coffin_bounding_shift_dim=\dimen... +Defining \l__coffin_left_corner_dim on line ... +\l__coffin_left_corner_dim=\dimen... +Defining \l__coffin_right_corner_dim on line ... +\l__coffin_right_corner_dim=\dimen... +Defining \l__coffin_bottom_corner_dim on line ... +\l__coffin_bottom_corner_dim=\dimen... +Defining \l__coffin_top_corner_dim on line ... +\l__coffin_top_corner_dim=\dimen... +Defining \coffin_rotate:Nn on line ... +Defining \coffin_grotate:Nn on line ... +Defining \__coffin_rotate:NnNN on line ... +Defining \coffin_rotate:cn on line ... +Defining \__coffin_set_bounding:N on line ... +Defining \__coffin_rotate_bounding:nnn on line ... +Defining \__coffin_rotate_corner:Nnnn on line ... +Defining \__coffin_rotate_pole:Nnnnnn on line ... +Defining \__coffin_rotate_vector:nnNN on line ... +Defining \__coffin_find_corner_maxima:N on line ... +Defining \__coffin_find_corner_maxima_aux:nn on line ... +Defining \__coffin_find_bounding_shift: on line ... +Defining \__coffin_find_bounding_shift_aux:nn on line ... +Defining \__coffin_shift_corner:Nnnn on line ... +Defining \__coffin_shift_pole:Nnnnnn on line ... +Defining \l__coffin_scale_x_fp on line ... +Defining \l__coffin_scale_y_fp on line ... +Defining \l__coffin_scaled_total_height_dim on line ... +\l__coffin_scaled_total_height_dim=\dimen... +Defining \l__coffin_scaled_width_dim on line ... +\l__coffin_scaled_width_dim=\dimen... +Defining \coffin_resize:Nnn on line ... +Defining \coffin_resize:cnn on line ... +Defining \coffin_gresize:Nnn on line ... +Defining \coffin_gresize:cnn on line ... +Defining \__coffin_resize:NnnNN on line ... +Defining \__coffin_resize_common:NnnN on line ... +Defining \coffin_scale:Nnn on line ... +Defining \coffin_scale:cnn on line ... +Defining \coffin_gscale:Nnn on line ... +Defining \coffin_gscale:cnn on line ... +Defining \__coffin_scale:NnnNN on line ... +Defining \__coffin_scale_vector:nnNN on line ... +Defining \__coffin_scale_corner:Nnnn on line ... +Defining \__coffin_scale_pole:Nnnnnn on line ... +Defining \__coffin_x_shift_corner:Nnnn on line ... +Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \coffin_join:NnnNnnnn on line ... Defining \coffin_join:cnnNnnnn on line ... Defining \exp_args:NNnnc on line ... @@ -5907,59 +5959,6 @@ Defining \box_set_viewport:cnnnn on line ... Defining \box_gset_viewport:Nnnnn on line ... Defining \box_gset_viewport:cnnnn on line ... Defining \__box_set_viewport:NnnnnN on line ... -Defining \l__coffin_sin_fp on line ... -Defining \l__coffin_cos_fp on line ... -Defining \l__coffin_bounding_prop on line ... -Defining \l__coffin_corners_prop on line ... -Defining \l__coffin_poles_prop on line ... -Defining \l__coffin_bounding_shift_dim on line ... -\l__coffin_bounding_shift_dim=\dimen... -Defining \l__coffin_left_corner_dim on line ... -\l__coffin_left_corner_dim=\dimen... -Defining \l__coffin_right_corner_dim on line ... -\l__coffin_right_corner_dim=\dimen... -Defining \l__coffin_bottom_corner_dim on line ... -\l__coffin_bottom_corner_dim=\dimen... -Defining \l__coffin_top_corner_dim on line ... -\l__coffin_top_corner_dim=\dimen... -Defining \coffin_rotate:Nn on line ... -Defining \coffin_rotate:cn on line ... -Defining \coffin_grotate:Nn on line ... -Defining \coffin_grotate:cn on line ... -Defining \__coffin_rotate:NnNNN on line ... -Defining \__coffin_set_bounding:N on line ... -Defining \__coffin_rotate_bounding:nnn on line ... -Defining \__coffin_rotate_corner:Nnnn on line ... -Defining \__coffin_rotate_pole:Nnnnnn on line ... -Defining \__coffin_rotate_vector:nnNN on line ... -Defining \__coffin_find_corner_maxima:N on line ... -Defining \__coffin_find_corner_maxima_aux:nn on line ... -Defining \__coffin_find_bounding_shift: on line ... -Defining \__coffin_find_bounding_shift_aux:nn on line ... -Defining \__coffin_shift_corner:Nnnn on line ... -Defining \__coffin_shift_pole:Nnnnnn on line ... -Defining \l__coffin_scale_x_fp on line ... -Defining \l__coffin_scale_y_fp on line ... -Defining \l__coffin_scaled_total_height_dim on line ... -\l__coffin_scaled_total_height_dim=\dimen... -Defining \l__coffin_scaled_width_dim on line ... -\l__coffin_scaled_width_dim=\dimen... -Defining \coffin_resize:Nnn on line ... -Defining \coffin_resize:cnn on line ... -Defining \coffin_gresize:Nnn on line ... -Defining \coffin_gresize:cnn on line ... -Defining \__coffin_resize:NnnNN on line ... -Defining \__coffin_resize_common:NnnN on line ... -Defining \coffin_scale:Nnn on line ... -Defining \coffin_scale:cnn on line ... -Defining \coffin_gscale:Nnn on line ... -Defining \coffin_gscale:cnn on line ... -Defining \__coffin_scale:NnnNN on line ... -Defining \__coffin_scale_vector:nnNN on line ... -Defining \__coffin_scale_corner:Nnnn on line ... -Defining \__coffin_scale_pole:Nnnnnn on line ... -Defining \__coffin_x_shift_corner:Nnnn on line ... -Defining \__coffin_x_shift_pole:Nnnnnn on line ... Defining \fp_sign:n on line ... Defining \file_get_mdfive_hash:nN on line ... Defining \file_get_size:nN on line ... diff --git a/l3kernel/testfiles/m3expl004.luatex.tlg b/l3kernel/testfiles/m3expl004.luatex.tlg index e235bdb11c..20633d4a6f 100644 --- a/l3kernel/testfiles/m3expl004.luatex.tlg +++ b/l3kernel/testfiles/m3expl004.luatex.tlg @@ -132,6 +132,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -140,13 +147,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3pdfmode.def diff --git a/l3kernel/testfiles/m3expl004.ptex.tlg b/l3kernel/testfiles/m3expl004.ptex.tlg index 6f6c527f5e..0f52560ce1 100644 --- a/l3kernel/testfiles/m3expl004.ptex.tlg +++ b/l3kernel/testfiles/m3expl004.ptex.tlg @@ -134,6 +134,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -142,13 +149,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3dvipdfmx.def diff --git a/l3kernel/testfiles/m3expl004.tlg b/l3kernel/testfiles/m3expl004.tlg index f9d64930c5..1ead6bc0e8 100644 --- a/l3kernel/testfiles/m3expl004.tlg +++ b/l3kernel/testfiles/m3expl004.tlg @@ -134,6 +134,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -142,13 +149,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3pdfmode.def diff --git a/l3kernel/testfiles/m3expl004.uptex.tlg b/l3kernel/testfiles/m3expl004.uptex.tlg index 3d7a22733c..03d204863a 100644 --- a/l3kernel/testfiles/m3expl004.uptex.tlg +++ b/l3kernel/testfiles/m3expl004.uptex.tlg @@ -131,6 +131,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -139,13 +146,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3dvipdfmx.def diff --git a/l3kernel/testfiles/m3expl004.xetex.tlg b/l3kernel/testfiles/m3expl004.xetex.tlg index 3c0c72b575..2c315b478b 100644 --- a/l3kernel/testfiles/m3expl004.xetex.tlg +++ b/l3kernel/testfiles/m3expl004.xetex.tlg @@ -131,6 +131,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -139,13 +146,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... ) (l3xdvipdfmx.def File: l3xdvipdfmx.def ....-..-.. v L3 Experimental driver: xdvipdfmx \g__driver_image_int=\count... diff --git a/l3kernel/testfiles/m3expl006.luatex.tlg b/l3kernel/testfiles/m3expl006.luatex.tlg index 64144e9e6f..d02fe69230 100644 --- a/l3kernel/testfiles/m3expl006.luatex.tlg +++ b/l3kernel/testfiles/m3expl006.luatex.tlg @@ -133,6 +133,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -141,13 +148,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3pdfmode.def diff --git a/l3kernel/testfiles/m3expl006.ptex.tlg b/l3kernel/testfiles/m3expl006.ptex.tlg index 12fdd6ecaf..7e55d20f3c 100644 --- a/l3kernel/testfiles/m3expl006.ptex.tlg +++ b/l3kernel/testfiles/m3expl006.ptex.tlg @@ -135,6 +135,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -143,13 +150,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3dvipdfmx.def diff --git a/l3kernel/testfiles/m3expl006.tlg b/l3kernel/testfiles/m3expl006.tlg index 596d0229e7..8b04b7e460 100644 --- a/l3kernel/testfiles/m3expl006.tlg +++ b/l3kernel/testfiles/m3expl006.tlg @@ -135,6 +135,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -143,13 +150,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3pdfmode.def diff --git a/l3kernel/testfiles/m3expl006.uptex.tlg b/l3kernel/testfiles/m3expl006.uptex.tlg index 330037bb4c..4d9c97b531 100644 --- a/l3kernel/testfiles/m3expl006.uptex.tlg +++ b/l3kernel/testfiles/m3expl006.uptex.tlg @@ -132,6 +132,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -140,13 +147,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... \l__seq_internal_a_int=\count... \l__seq_internal_b_int=\count... ) (l3dvipdfmx.def diff --git a/l3kernel/testfiles/m3expl006.xetex.tlg b/l3kernel/testfiles/m3expl006.xetex.tlg index cb9de39665..384ebb22a9 100644 --- a/l3kernel/testfiles/m3expl006.xetex.tlg +++ b/l3kernel/testfiles/m3expl006.xetex.tlg @@ -132,6 +132,13 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l_tmpb_coffin=\box... \g_tmpa_coffin=\box... \g_tmpb_coffin=\box... +\l__coffin_bounding_shift_dim=\dimen... +\l__coffin_left_corner_dim=\dimen... +\l__coffin_right_corner_dim=\dimen... +\l__coffin_bottom_corner_dim=\dimen... +\l__coffin_top_corner_dim=\dimen... +\l__coffin_scaled_total_height_dim=\dimen... +\l__coffin_scaled_width_dim=\dimen... \c__coffin_empty_coffin=\box... \l__coffin_display_coffin=\box... \l__coffin_display_coord_coffin=\box... @@ -140,13 +147,6 @@ Package: expl3 ....-..-.. L3 programming layer (code) \l__coffin_display_x_dim=\dimen... \l__coffin_display_y_dim=\dimen... \g__file_internal_ior=\read... -\l__coffin_bounding_shift_dim=\dimen... -\l__coffin_left_corner_dim=\dimen... -\l__coffin_right_corner_dim=\dimen... -\l__coffin_bottom_corner_dim=\dimen... -\l__coffin_top_corner_dim=\dimen... -\l__coffin_scaled_total_height_dim=\dimen... -\l__coffin_scaled_width_dim=\dimen... ) (l3xdvipdfmx.def File: l3xdvipdfmx.def ....-..-.. v L3 Experimental driver: xdvipdfmx \g__driver_image_int=\count...