diff options
Diffstat (limited to 'tex/context/base/grph-trf.mkiv')
-rw-r--r-- | tex/context/base/grph-trf.mkiv | 764 |
1 files changed, 382 insertions, 382 deletions
diff --git a/tex/context/base/grph-trf.mkiv b/tex/context/base/grph-trf.mkiv index 754ea70d8..0b603f1ba 100644 --- a/tex/context/base/grph-trf.mkiv +++ b/tex/context/base/grph-trf.mkiv @@ -28,36 +28,36 @@ % local: -\newdimen\d_transforms_scale_x_size -\newdimen\d_transforms_scale_y_size -\newdimen\d_transforms_scale_x_offset -\newdimen\d_transforms_scale_y_offset +\newdimen\d_grph_scale_x_size +\newdimen\d_grph_scale_y_size +\newdimen\d_grph_scale_x_offset +\newdimen\d_grph_scale_y_offset -\newdimen\d_transforms_scale_h_size -\newdimen\d_transforms_scale_v_size +\newdimen\d_grph_scale_h_size +\newdimen\d_grph_scale_v_size -\newconditional\c_transforms_scale_done -\newconditional\c_transforms_scale_scaling_done +\newconditional\c_grph_scale_done +\newconditional\c_grph_scale_scaling_done -\newdimen\d_transforms_scale_wd -\newdimen\d_transforms_scale_ht -\newdimen\d_transforms_scale_dp +\newdimen\d_grph_scale_wd +\newdimen\d_grph_scale_ht +\newdimen\d_grph_scale_dp % global -\newdimen\d_transforms_scale_used_x_size -\newdimen\d_transforms_scale_used_y_size +\newdimen\d_grph_scale_used_x_size +\newdimen\d_grph_scale_used_y_size -\newcount\c_transforms_scale_used_x_scale -\newcount\c_transforms_scale_used_y_scale +\newcount\c_grph_scale_used_x_scale +\newcount\c_grph_scale_used_y_scale -\newdimen\d_transforms_scale_outer_v_size % we cannot manipulate any global vsize ! +\newdimen\d_grph_scale_outer_v_size % we cannot manipulate any global vsize ! % scratch: -\let\m_transforms_scale_temp \empty -\let\m_transforms_scale_temp_x\empty -\let\m_transforms_scale_temp_y\empty +\let\m_grph_scale_temp \empty +\let\m_grph_scale_temp_x\empty +\let\m_grph_scale_temp_y\empty % public: @@ -94,11 +94,11 @@ \c!maxwidth=\scaleparameter\c!width, \c!maxheight=\scaleparameter\c!height] -\unexpanded\def\scale{\dodoubleempty\transforms_scale} +\unexpanded\def\scale{\dodoubleempty\grph_scale} % we could have: \freezeparameter\c!scale etc (less backtracking when used multiple) -\def\transforms_scale[#1][#2]% +\def\grph_scale[#1][#2]% {\bgroup % this is quite common so we might make this a helper \ifsecondargument @@ -113,9 +113,9 @@ \let\currentscale\empty \fi\fi % - \dowithnextboxcs\transforms_scale_finish\hbox} + \dowithnextboxcs\grph_scale_finish\hbox} -\def\transforms_scale_finish +\def\grph_scale_finish {% todo: p_scale_ \edef\p_scale {\scaleparameter\c!scale }% \edef\p_xscale {\scaleparameter\c!xscale }% @@ -135,19 +135,19 @@ \edef\p_equalwidth {\scaleparameter\c!equalwidth }% \edef\p_equalheight{\scaleparameter\c!equalheight}% % - \d_transforms_scale_dp\dp\nextbox - \ifx\p_depth\v!no \ifzeropt\d_transforms_scale_dp \else - \setbox\nextbox\hbox{\raise\d_transforms_scale_dp\box\nextbox}% new - \d_transforms_scale_dp\dp\nextbox + \d_grph_scale_dp\dp\nextbox + \ifx\p_depth\v!no \ifzeropt\d_grph_scale_dp \else + \setbox\nextbox\hbox{\raise\d_grph_scale_dp\box\nextbox}% new + \d_grph_scale_dp\dp\nextbox \fi \fi - \d_transforms_scale_wd\wd\nextbox - \d_transforms_scale_ht\ht\nextbox - \d_transforms_scale_dp\dp\nextbox + \d_grph_scale_wd\wd\nextbox + \d_grph_scale_ht\ht\nextbox + \d_grph_scale_dp\dp\nextbox % \global\let\finalscaleboxxscale \!!plusone \global\let\finalscaleboxyscale \!!plusone - \xdef \finalscaleboxwidth {\the\d_transforms_scale_wd}% - \xdef \finalscaleboxheight{\the\d_transforms_scale_ht}% + \xdef \finalscaleboxwidth {\the\d_grph_scale_wd}% + \xdef \finalscaleboxheight{\the\d_grph_scale_ht}% \global\let\finalscaleboxxfactor\!!hundred \global\let\finalscaleboxyfactor\!!hundred % @@ -155,262 +155,262 @@ \dontshowcomposition \dontcomplain % - \setfalse\c_transforms_scale_done - \transforms_scale_calculate - \ifconditional\c_transforms_scale_done - \transforms_scale_apply + \setfalse\c_grph_scale_done + \grph_scale_calculate + \ifconditional\c_grph_scale_done + \grph_scale_apply \fi - \transforms_scale_position + \grph_scale_position % \box\nextbox \egroup} -\def\transforms_scale_apply - {\d_transforms_scale_wd\finalscaleboxxscale\d_transforms_scale_wd - \d_transforms_scale_ht\finalscaleboxyscale\d_transforms_scale_ht - \d_transforms_scale_dp\finalscaleboxyscale\d_transforms_scale_dp +\def\grph_scale_apply + {\d_grph_scale_wd\finalscaleboxxscale\d_grph_scale_wd + \d_grph_scale_ht\finalscaleboxyscale\d_grph_scale_ht + \d_grph_scale_dp\finalscaleboxyscale\d_grph_scale_dp \setbox\nextbox\hbox {\dostartscaling \finalscaleboxxscale \finalscaleboxyscale \smashedbox\nextbox \dostopscaling}% - \wd\nextbox\d_transforms_scale_wd - \ht\nextbox\d_transforms_scale_ht - \dp\nextbox\d_transforms_scale_dp} - -\def\m_transforms_scale_stamp_c{11} - -\def\transforms_scale_calculate - {\ifdim\d_transforms_scale_ht>\zeropoint \ifdim\d_transforms_scale_wd>\zeropoint - \edef\m_transforms_scale_stamp_a{\p_scale\p_xscale\p_yscale\p_factor\p_wfactor\p_hfactor\p_lines\p_width\p_height}% - \edef\m_transforms_scale_stamp_b{\p_sx\p_sy}% - \ifx\m_transforms_scale_stamp_a\empty - \ifx\m_transforms_scale_stamp_b\m_transforms_scale_stamp_c + \wd\nextbox\d_grph_scale_wd + \ht\nextbox\d_grph_scale_ht + \dp\nextbox\d_grph_scale_dp} + +\def\m_grph_scale_stamp_c{11} + +\def\grph_scale_calculate + {\ifdim\d_grph_scale_ht>\zeropoint \ifdim\d_grph_scale_wd>\zeropoint + \edef\m_grph_scale_stamp_a{\p_scale\p_xscale\p_yscale\p_factor\p_wfactor\p_hfactor\p_lines\p_width\p_height}% + \edef\m_grph_scale_stamp_b{\p_sx\p_sy}% + \ifx\m_grph_scale_stamp_a\empty + \ifx\m_grph_scale_stamp_b\m_grph_scale_stamp_c % no scaling, don't change this (previous attempts failed anyway) \insidefloattrue % trick - \transforms_scale_calculations_yes + \grph_scale_calculations_yes \else - \transforms_scale_check_sx_sy - \transforms_scale_calculations_nop + \grph_scale_check_sx_sy + \grph_scale_calculations_nop \fi \else - \ifx\m_transforms_scale_stamp_b\empty + \ifx\m_grph_scale_stamp_b\empty % no need to check further \else - \transforms_scale_check_sx_sy + \grph_scale_check_sx_sy \fi - \transforms_scale_calculations_yes + \grph_scale_calculations_yes \fi \fi \fi} -\def\transforms_scale_check_sx_sy - {\ifdim\p_sx\onepoint=\onepoint\else\edef\p_width {\the\dimexpr\p_sx\d_transforms_scale_wd}\fi - \ifdim\p_sy\onepoint=\onepoint\else\edef\p_height{\the\dimexpr\p_sy\d_transforms_scale_ht}\fi} +\def\grph_scale_check_sx_sy + {\ifdim\p_sx\onepoint=\onepoint\else\edef\p_width {\the\dimexpr\p_sx\d_grph_scale_wd}\fi + \ifdim\p_sy\onepoint=\onepoint\else\edef\p_height{\the\dimexpr\p_sy\d_grph_scale_ht}\fi} -\def\transforms_scale_rounded#1% - {\expandafter\expandafter\expandafter\transforms_scale_rounded_indeed +\def\grph_scale_rounded#1% + {\expandafter\expandafter\expandafter\grph_scale_rounded_indeed \expandafter\WITHOUTPT\the\dimexpr#1\points*100+32768sp\relax.\relax} -\def\transforms_scale_rounded_indeed#1.#2\relax{#1} +\def\grph_scale_rounded_indeed#1.#2\relax{#1} -\def\transforms_scale_calculations_nop - {\settrue\c_transforms_scale_done - \xdef\finalscaleboxwidth {\the\dimexpr\p_sx\d_transforms_scale_wd\relax}% - \xdef\finalscaleboxheight{\the\dimexpr\p_sy\d_transforms_scale_ht\relax}% +\def\grph_scale_calculations_nop + {\settrue\c_grph_scale_done + \xdef\finalscaleboxwidth {\the\dimexpr\p_sx\d_grph_scale_wd\relax}% + \xdef\finalscaleboxheight{\the\dimexpr\p_sy\d_grph_scale_ht\relax}% \glet\finalscaleboxxscale\p_sx \glet\finalscaleboxyscale\p_sy \ifx\finalscaleboxxscale\empty\let\finalscaleboxxscale\!!plusone\fi \ifx\finalscaleboxyscale\empty\let\finalscaleboxyscale\!!plusone\fi - \xdef\finalscaleboxxfactor{\transforms_scale_rounded\finalscaleboxxscale}% - \xdef\finalscaleboxyfactor{\transforms_scale_rounded\finalscaleboxyscale}} + \xdef\finalscaleboxxfactor{\grph_scale_rounded\finalscaleboxxscale}% + \xdef\finalscaleboxyfactor{\grph_scale_rounded\finalscaleboxyscale}} -\def\transforms_scale_calculations_yes - {\settrue\c_transforms_scale_done +\def\grph_scale_calculations_yes + {\settrue\c_grph_scale_done % initial values - \d_transforms_scale_x_offset\zeropoint - \d_transforms_scale_y_offset\zeropoint - \d_transforms_scale_x_size \d_transforms_scale_wd - \d_transforms_scale_y_size \d_transforms_scale_ht % alleen ht wordt geschaald! + \d_grph_scale_x_offset\zeropoint + \d_grph_scale_y_offset\zeropoint + \d_grph_scale_x_size \d_grph_scale_wd + \d_grph_scale_y_size \d_grph_scale_ht % alleen ht wordt geschaald! % final values - \global\d_transforms_scale_used_x_size \zeropoint % see note * (core-fig) - \global\d_transforms_scale_used_y_size \zeropoint % see note * (core-fig) - \c_transforms_scale_used_x_scale \plusone % see note * (core-fig) - \c_transforms_scale_used_y_scale \plusone % see note * (core-fig) + \global\d_grph_scale_used_x_size \zeropoint % see note * (core-fig) + \global\d_grph_scale_used_y_size \zeropoint % see note * (core-fig) + \c_grph_scale_used_x_scale \plusone % see note * (core-fig) + \c_grph_scale_used_y_scale \plusone % see note * (core-fig) % preparations - \setfalse\c_transforms_scale_scaling_done - \transforms_scale_check_parameters + \setfalse\c_grph_scale_scaling_done + \grph_scale_check_parameters % calculators % beware, they operate in sequence, and calculate missing dimensions / messy %setscaleboxbynature % when? needed? - \ifconditional\c_transforms_scale_scaling_done\else\transforms_scale_by_factor \fi - \ifconditional\c_transforms_scale_scaling_done\else\transforms_scale_by_scale \fi - \ifconditional\c_transforms_scale_scaling_done\else\transforms_scale_by_dimension\fi + \ifconditional\c_grph_scale_scaling_done\else\grph_scale_by_factor \fi + \ifconditional\c_grph_scale_scaling_done\else\grph_scale_by_scale \fi + \ifconditional\c_grph_scale_scaling_done\else\grph_scale_by_dimension\fi % finalizers / to be done (no longer needed this way, clean up) - \transforms_scale_convert_large_scale\d_transforms_scale_h_size\figx\c_transforms_scale_used_x_scale\m_transforms_scale_temp_x - \transforms_scale_convert_large_scale\d_transforms_scale_v_size\figy\c_transforms_scale_used_y_scale\m_transforms_scale_temp_y + \grph_scale_convert_large_scale\d_grph_scale_h_size\figx\c_grph_scale_used_x_scale\m_grph_scale_temp_x + \grph_scale_convert_large_scale\d_grph_scale_v_size\figy\c_grph_scale_used_y_scale\m_grph_scale_temp_y % used in actual scaling - \xdef\finalscaleboxwidth {\the\d_transforms_scale_used_x_size}% - \xdef\finalscaleboxheight {\the\d_transforms_scale_used_y_size}% - \xdef\finalscaleboxxfactor{\the\c_transforms_scale_used_x_scale}% - \xdef\finalscaleboxyfactor{\the\c_transforms_scale_used_y_scale}% - \xdef\finalscaleboxxscale {\withoutpt\the\dimexpr\m_transforms_scale_temp_x\points/\plushundred\relax}% - \xdef\finalscaleboxyscale {\withoutpt\the\dimexpr\m_transforms_scale_temp_y\points/\plushundred\relax}} - -\setvalue{\??scalegrid\v!yes }{\getnoflines \d_transforms_scale_used_y_size\edef\p_height{\the\noflines\lineheight}} -\setvalue{\??scalegrid\v!height }{\getrawnoflines\d_transforms_scale_used_y_size\edef\p_height{\the\dimexpr\noflines\lineheight+\strutdepth}} -\setvalue{\??scalegrid\v!depth }{\getrawnoflines\d_transforms_scale_used_y_size\edef\p_height{\the\dimexpr\noflines\lineheight-\strutdepth}} -\setvalue{\??scalegrid\v!halfline}{\getrawnoflines\d_transforms_scale_used_y_size\edef\p_height{\the\dimexpr\noflines\lineheight+.5\lineheight}} -\setvalue{\??scalegrid\v!fit }{\getrawnoflines\d_transforms_scale_used_y_size\edef\p_height{\the\noflines\lineheight}} + \xdef\finalscaleboxwidth {\the\d_grph_scale_used_x_size}% + \xdef\finalscaleboxheight {\the\d_grph_scale_used_y_size}% + \xdef\finalscaleboxxfactor{\the\c_grph_scale_used_x_scale}% + \xdef\finalscaleboxyfactor{\the\c_grph_scale_used_y_scale}% + \xdef\finalscaleboxxscale {\withoutpt\the\dimexpr\m_grph_scale_temp_x\points/\plushundred\relax}% + \xdef\finalscaleboxyscale {\withoutpt\the\dimexpr\m_grph_scale_temp_y\points/\plushundred\relax}} + +\setvalue{\??scalegrid\v!yes }{\getnoflines \d_grph_scale_used_y_size\edef\p_height{\the\noflines\lineheight}} +\setvalue{\??scalegrid\v!height }{\getrawnoflines\d_grph_scale_used_y_size\edef\p_height{\the\dimexpr\noflines\lineheight+\strutdepth}} +\setvalue{\??scalegrid\v!depth }{\getrawnoflines\d_grph_scale_used_y_size\edef\p_height{\the\dimexpr\noflines\lineheight-\strutdepth}} +\setvalue{\??scalegrid\v!halfline}{\getrawnoflines\d_grph_scale_used_y_size\edef\p_height{\the\dimexpr\noflines\lineheight+.5\lineheight}} +\setvalue{\??scalegrid\v!fit }{\getrawnoflines\d_grph_scale_used_y_size\edef\p_height{\the\noflines\lineheight}} \letvalue{\??scalegrid\empty }\donothing -\def\transforms_scale_check_parameters % resolve self referencing loops +\def\grph_scale_check_parameters % resolve self referencing loops {\ifx\p_maxwidth \empty\else \edef\p_maxwidth {\the\dimexpr\p_maxwidth }\fi \ifx\p_maxheight\empty\else \edef\p_maxheight{\the\dimexpr\p_maxheight }\fi \ifx\p_lines \empty\else \edef\p_height {\the\dimexpr\p_lines\lineheight}\fi \getvalue{\??scalegrid\scaleparameter\c!grid}} -\def\transforms_scale_by_nature % where ! ! ! ! ! - {\ifx\p_width \empty\else \global\d_transforms_scale_used_x_size\p_width \fi - \ifx\p_height\empty\else \global\d_transforms_scale_used_y_size\p_height\fi - \ifx\p_scale \empty\else \c_transforms_scale_used_x_scale\p_scale - \c_transforms_scale_used_y_scale\p_scale \fi - \ifx\p_xscale\empty\else \c_transforms_scale_used_x_scale\p_xscale\fi - \ifx\p_yscale\empty\else \c_transforms_scale_used_y_scale\p_yscale\fi} +\def\grph_scale_by_nature % where ! ! ! ! ! + {\ifx\p_width \empty\else \global\d_grph_scale_used_x_size\p_width \fi + \ifx\p_height\empty\else \global\d_grph_scale_used_y_size\p_height\fi + \ifx\p_scale \empty\else \c_grph_scale_used_x_scale\p_scale + \c_grph_scale_used_y_scale\p_scale \fi + \ifx\p_xscale\empty\else \c_grph_scale_used_x_scale\p_xscale\fi + \ifx\p_yscale\empty\else \c_grph_scale_used_y_scale\p_yscale\fi} % \defineexternalfigure[width-6][factor=auto,maxwidth=\textheight,maxheight=\textwidth] % \defineexternalfigure[width-7][factor=auto,maxwidth=\textwidth,maxheight=\textheight] % \placefigure{none}{\rotate[frame=on,offset=overlay]{\externalfigure[t:/sources/cow.pdf][width-6]}} \page % \placefigure{none}{\framed[frame=on,offset=overlay]{\externalfigure[t:/sources/cow.pdf][width-7]}} -\def\m_transforms_scale_factor_set{\v!max,\v!fit,\v!broad,\v!auto} % can be an \edef - -\def\transforms_scale_by_factor - {\doifinsetelse\p_factor\m_transforms_scale_factor_set - \transforms_scale_by_factor_a - {\doifinsetelse\p_hfactor\m_transforms_scale_factor_set - \transforms_scale_by_factor_b - {\doifinsetelse\p_wfactor\m_transforms_scale_factor_set - \transforms_scale_by_factor_c - \transforms_scale_by_factor_d}}} - -\def\transforms_scale_by_factor_a - {\transforms_scale_apply_size - \ifdim\d_transforms_scale_x_size>\d_transforms_scale_y_size - \transforms_scale_calculate_norm \d_transforms_scale_used_x_size\p_factor\p_maxwidth\hsize\d_transforms_scale_h_size - \transforms_scale_calculate_scales\d_transforms_scale_used_x_size\d_transforms_scale_x_size\d_transforms_scale_used_y_size\d_transforms_scale_y_size +\def\m_grph_scale_factor_set{\v!max,\v!fit,\v!broad,\v!auto} % can be an \edef + +\def\grph_scale_by_factor + {\doifinsetelse\p_factor\m_grph_scale_factor_set + \grph_scale_by_factor_a + {\doifinsetelse\p_hfactor\m_grph_scale_factor_set + \grph_scale_by_factor_b + {\doifinsetelse\p_wfactor\m_grph_scale_factor_set + \grph_scale_by_factor_c + \grph_scale_by_factor_d}}} + +\def\grph_scale_by_factor_a + {\grph_scale_apply_size + \ifdim\d_grph_scale_x_size>\d_grph_scale_y_size + \grph_scale_calculate_norm \d_grph_scale_used_x_size\p_factor\p_maxwidth\hsize\d_grph_scale_h_size + \grph_scale_calculate_scales\d_grph_scale_used_x_size\d_grph_scale_x_size\d_grph_scale_used_y_size\d_grph_scale_y_size \else - \transforms_scale_calculate_norm \d_transforms_scale_used_y_size\p_factor\p_maxheight\d_transforms_scale_outer_v_size\d_transforms_scale_v_size - \transforms_scale_calculate_scales\d_transforms_scale_used_y_size\d_transforms_scale_y_size\d_transforms_scale_used_x_size\d_transforms_scale_x_size + \grph_scale_calculate_norm \d_grph_scale_used_y_size\p_factor\p_maxheight\d_grph_scale_outer_v_size\d_grph_scale_v_size + \grph_scale_calculate_scales\d_grph_scale_used_y_size\d_grph_scale_y_size\d_grph_scale_used_x_size\d_grph_scale_x_size \fi - \transforms_scale_by_factor_indeed} - -\def\transforms_scale_by_factor_b - {\transforms_scale_apply_size - \transforms_scale_calculate_norm \d_transforms_scale_used_y_size\p_hfactor\p_maxheight\d_transforms_scale_outer_v_size\d_transforms_scale_v_size - \transforms_scale_calculate_scales\d_transforms_scale_used_y_size\d_transforms_scale_y_size\d_transforms_scale_used_x_size\d_transforms_scale_x_size - \transforms_scale_by_factor_indeed} - -\def\transforms_scale_by_factor_c - {\transforms_scale_apply_size - \transforms_scale_calculate_norm \d_transforms_scale_used_x_size\p_wfactor\p_maxwidth\hsize\d_transforms_scale_h_size - \transforms_scale_calculate_scales\d_transforms_scale_used_x_size\d_transforms_scale_x_size\d_transforms_scale_used_y_size\d_transforms_scale_y_size - \transforms_scale_by_factor_indeed} - -\def\transforms_scale_by_factor_d - {\transforms_scale_calculate_norm\d_transforms_scale_used_y_size\p_factor \p_height \textheight\d_transforms_scale_v_size - \transforms_scale_calculate_norm\d_transforms_scale_used_y_size\p_hfactor\p_height \textheight\d_transforms_scale_v_size - \transforms_scale_calculate_norm\d_transforms_scale_used_x_size\p_wfactor\p_width \hsize \hsize} - -\def\transforms_scale_by_factor_indeed - {\settrue\c_transforms_scale_scaling_done - \ifdim\d_transforms_scale_used_x_size>\d_transforms_scale_h_size - \global\d_transforms_scale_used_y_size\zeropoint - \global\d_transforms_scale_used_x_size\d_transforms_scale_h_size - \else\ifdim\d_transforms_scale_used_y_size>\d_transforms_scale_v_size - \global\d_transforms_scale_used_x_size\zeropoint - \global\d_transforms_scale_used_y_size\d_transforms_scale_v_size + \grph_scale_by_factor_indeed} + +\def\grph_scale_by_factor_b + {\grph_scale_apply_size + \grph_scale_calculate_norm \d_grph_scale_used_y_size\p_hfactor\p_maxheight\d_grph_scale_outer_v_size\d_grph_scale_v_size + \grph_scale_calculate_scales\d_grph_scale_used_y_size\d_grph_scale_y_size\d_grph_scale_used_x_size\d_grph_scale_x_size + \grph_scale_by_factor_indeed} + +\def\grph_scale_by_factor_c + {\grph_scale_apply_size + \grph_scale_calculate_norm \d_grph_scale_used_x_size\p_wfactor\p_maxwidth\hsize\d_grph_scale_h_size + \grph_scale_calculate_scales\d_grph_scale_used_x_size\d_grph_scale_x_size\d_grph_scale_used_y_size\d_grph_scale_y_size + \grph_scale_by_factor_indeed} + +\def\grph_scale_by_factor_d + {\grph_scale_calculate_norm\d_grph_scale_used_y_size\p_factor \p_height \textheight\d_grph_scale_v_size + \grph_scale_calculate_norm\d_grph_scale_used_y_size\p_hfactor\p_height \textheight\d_grph_scale_v_size + \grph_scale_calculate_norm\d_grph_scale_used_x_size\p_wfactor\p_width \hsize \hsize} + +\def\grph_scale_by_factor_indeed + {\settrue\c_grph_scale_scaling_done + \ifdim\d_grph_scale_used_x_size>\d_grph_scale_h_size + \global\d_grph_scale_used_y_size\zeropoint + \global\d_grph_scale_used_x_size\d_grph_scale_h_size + \else\ifdim\d_grph_scale_used_y_size>\d_grph_scale_v_size + \global\d_grph_scale_used_x_size\zeropoint + \global\d_grph_scale_used_y_size\d_grph_scale_v_size \fi\fi - \transforms_scale_by_dimension} - -\def\transforms_scale_by_scale - {\edef\m_transforms_scale_temp{\p_scale\p_xscale\p_yscale}% - \ifx\m_transforms_scale_temp\empty \else - \transforms_scale_apply_scale\d_transforms_scale_used_x_size\d_transforms_scale_x_size\c_transforms_scale_used_x_scale\p_xscale - \transforms_scale_apply_scale\d_transforms_scale_used_y_size\d_transforms_scale_y_size\c_transforms_scale_used_y_scale\p_yscale - \global\d_transforms_scale_used_x_size\zeropoint - \global\d_transforms_scale_used_y_size\zeropoint + \grph_scale_by_dimension} + +\def\grph_scale_by_scale + {\edef\m_grph_scale_temp{\p_scale\p_xscale\p_yscale}% + \ifx\m_grph_scale_temp\empty \else + \grph_scale_apply_scale\d_grph_scale_used_x_size\d_grph_scale_x_size\c_grph_scale_used_x_scale\p_xscale + \grph_scale_apply_scale\d_grph_scale_used_y_size\d_grph_scale_y_size\c_grph_scale_used_y_scale\p_yscale + \global\d_grph_scale_used_x_size\zeropoint + \global\d_grph_scale_used_y_size\zeropoint \ifx\p_maxwidth\empty \ifx\p_maxheight\empty \else - \ifdim\d_transforms_scale_y_size>\p_maxheight\relax - \global\d_transforms_scale_used_y_size\p_maxheight + \ifdim\d_grph_scale_y_size>\p_maxheight\relax + \global\d_grph_scale_used_y_size\p_maxheight \fi \fi \else - \ifdim\d_transforms_scale_x_size>\p_maxwidth\relax - \global\d_transforms_scale_used_x_size\p_maxwidth + \ifdim\d_grph_scale_x_size>\p_maxwidth\relax + \global\d_grph_scale_used_x_size\p_maxwidth \fi \fi \fi} -\def\transforms_scale_by_dimension - {\ifdim\d_transforms_scale_used_x_size>\zeropoint - \ifdim\d_transforms_scale_used_y_size>\zeropoint - \transforms_scale_by_dimension_a +\def\grph_scale_by_dimension + {\ifdim\d_grph_scale_used_x_size>\zeropoint + \ifdim\d_grph_scale_used_y_size>\zeropoint + \grph_scale_by_dimension_a \else - \transforms_scale_by_dimension_b + \grph_scale_by_dimension_b \fi \else - \ifdim\d_transforms_scale_used_y_size>\zeropoint - \transforms_scale_by_dimension_c + \ifdim\d_grph_scale_used_y_size>\zeropoint + \grph_scale_by_dimension_c \else - \transforms_scale_by_dimension_d + \grph_scale_by_dimension_d \fi \fi} -\def\transforms_scale_by_dimension_a - {\transforms_scale_by_dimension_indeed - {\transforms_scale_calculate_scale\d_transforms_scale_used_y_size\d_transforms_scale_y_size\c_transforms_scale_used_y_scale - \transforms_scale_calculate_scale\d_transforms_scale_used_x_size\d_transforms_scale_x_size\c_transforms_scale_used_x_scale}% - {\transforms_scale_calculate_scale\d_transforms_scale_used_y_size\d_transforms_scale_y_size\c_transforms_scale_used_y_scale - \transforms_scale_calculate_scale\d_transforms_scale_used_x_size\d_transforms_scale_x_size\c_transforms_scale_used_x_scale}% - {\transforms_scale_calculate_scale\d_transforms_scale_used_y_size\d_transforms_scale_y_size\c_transforms_scale_used_y_scale - \transforms_scale_calculate_scale\d_transforms_scale_used_x_size\d_transforms_scale_x_size\c_transforms_scale_used_x_scale}} - -\def\transforms_scale_by_dimension_b - {\transforms_scale_by_dimension_indeed - {\transforms_scale_calculate_scales\d_transforms_scale_used_x_size\d_transforms_scale_x_size\d_transforms_scale_used_y_size\d_transforms_scale_y_size}% - {\transforms_scale_calculate_scales\d_transforms_scale_used_x_size\d_transforms_scale_x_size\d_transforms_scale_used_y_size\d_transforms_scale_y_size}% - {\transforms_scale_calculate_scales\d_transforms_scale_used_x_size\d_transforms_scale_x_size\d_transforms_scale_used_y_size\d_transforms_scale_y_size}} - -\def\transforms_scale_by_dimension_c - {\transforms_scale_by_dimension_indeed - {\transforms_scale_calculate_scales\d_transforms_scale_used_y_size\d_transforms_scale_y_size\d_transforms_scale_used_x_size\d_transforms_scale_x_size}% - {\transforms_scale_calculate_scales\d_transforms_scale_used_y_size\d_transforms_scale_y_size\d_transforms_scale_used_x_size\d_transforms_scale_x_size}% - {\transforms_scale_calculate_scales\d_transforms_scale_used_y_size\d_transforms_scale_y_size\d_transforms_scale_used_x_size\d_transforms_scale_x_size}} - -\def\transforms_scale_by_dimension_d - {\transforms_scale_by_dimension_indeed - {\transforms_scale_apply_scale\d_transforms_scale_used_x_size\d_transforms_scale_x_size\c_transforms_scale_used_x_scale\p_xscale - \transforms_scale_apply_scale\d_transforms_scale_used_y_size\d_transforms_scale_y_size\c_transforms_scale_used_y_scale\p_yscale}% - {\transforms_scale_calculate_scales\d_transforms_scale_used_x_size\d_transforms_scale_x_size\d_transforms_scale_used_y_size\d_transforms_scale_y_size}% - {\transforms_scale_calculate_scales\d_transforms_scale_used_y_size\d_transforms_scale_y_size\d_transforms_scale_used_x_size\d_transforms_scale_x_size}} - -\def\transforms_scale_by_dimension_indeed#1#2#3% +\def\grph_scale_by_dimension_a + {\grph_scale_by_dimension_indeed + {\grph_scale_calculate_scale\d_grph_scale_used_y_size\d_grph_scale_y_size\c_grph_scale_used_y_scale + \grph_scale_calculate_scale\d_grph_scale_used_x_size\d_grph_scale_x_size\c_grph_scale_used_x_scale}% + {\grph_scale_calculate_scale\d_grph_scale_used_y_size\d_grph_scale_y_size\c_grph_scale_used_y_scale + \grph_scale_calculate_scale\d_grph_scale_used_x_size\d_grph_scale_x_size\c_grph_scale_used_x_scale}% + {\grph_scale_calculate_scale\d_grph_scale_used_y_size\d_grph_scale_y_size\c_grph_scale_used_y_scale + \grph_scale_calculate_scale\d_grph_scale_used_x_size\d_grph_scale_x_size\c_grph_scale_used_x_scale}} + +\def\grph_scale_by_dimension_b + {\grph_scale_by_dimension_indeed + {\grph_scale_calculate_scales\d_grph_scale_used_x_size\d_grph_scale_x_size\d_grph_scale_used_y_size\d_grph_scale_y_size}% + {\grph_scale_calculate_scales\d_grph_scale_used_x_size\d_grph_scale_x_size\d_grph_scale_used_y_size\d_grph_scale_y_size}% + {\grph_scale_calculate_scales\d_grph_scale_used_x_size\d_grph_scale_x_size\d_grph_scale_used_y_size\d_grph_scale_y_size}} + +\def\grph_scale_by_dimension_c + {\grph_scale_by_dimension_indeed + {\grph_scale_calculate_scales\d_grph_scale_used_y_size\d_grph_scale_y_size\d_grph_scale_used_x_size\d_grph_scale_x_size}% + {\grph_scale_calculate_scales\d_grph_scale_used_y_size\d_grph_scale_y_size\d_grph_scale_used_x_size\d_grph_scale_x_size}% + {\grph_scale_calculate_scales\d_grph_scale_used_y_size\d_grph_scale_y_size\d_grph_scale_used_x_size\d_grph_scale_x_size}} + +\def\grph_scale_by_dimension_d + {\grph_scale_by_dimension_indeed + {\grph_scale_apply_scale\d_grph_scale_used_x_size\d_grph_scale_x_size\c_grph_scale_used_x_scale\p_xscale + \grph_scale_apply_scale\d_grph_scale_used_y_size\d_grph_scale_y_size\c_grph_scale_used_y_scale\p_yscale}% + {\grph_scale_calculate_scales\d_grph_scale_used_x_size\d_grph_scale_x_size\d_grph_scale_used_y_size\d_grph_scale_y_size}% + {\grph_scale_calculate_scales\d_grph_scale_used_y_size\d_grph_scale_y_size\d_grph_scale_used_x_size\d_grph_scale_x_size}} + +\def\grph_scale_by_dimension_indeed#1#2#3% {#1\relax \ifx\p_maxwidth\empty \else - \ifdim\d_transforms_scale_used_x_size>\p_maxwidth\relax - \global\d_transforms_scale_used_x_size\p_maxwidth + \ifdim\d_grph_scale_used_x_size>\p_maxwidth\relax + \global\d_grph_scale_used_x_size\p_maxwidth #2\relax \fi \fi \ifx\p_maxheight\empty \else - \ifdim\d_transforms_scale_used_y_size>\p_maxheight\relax - \global\d_transforms_scale_used_y_size\p_maxheight + \ifdim\d_grph_scale_used_y_size>\p_maxheight\relax + \global\d_grph_scale_used_y_size\p_maxheight #3\relax \fi \fi} -\def\transforms_scale_calculate_norm#1#2% todo: swap 1 and 2 and pass one less +\def\grph_scale_calculate_norm#1#2% todo: swap 1 and 2 and pass one less {\csname\??scalenorm\ifcsname\??scalenorm#2\endcsname#2\else\s!unknown\fi\endcsname#1#2} \setvalue{\??scalenorm\v!max }#1#2#3#4#5{\global#1#4} @@ -421,16 +421,16 @@ \setvalue{\??scalenorm\empty }#1#2#3#4#5{\ifx#3\empty\else\global#1#3\fi} \setvalue{\??scalenorm\s!default}#1#2#3#4#5{\ifx#3\empty\else\global#1#3\fi} -\def\transforms_scale_calculate_scales#1#2#3#4% +\def\grph_scale_calculate_scales#1#2#3#4% {\scratchdimen\dimexpr#1/\dimexpr#2/\plusthousand\relax\relax - \c_transforms_scale_used_x_scale\scratchdimen - \c_transforms_scale_used_y_scale\scratchdimen - #3\dimexpr\c_transforms_scale_used_x_scale\dimexpr#4/\plusthousand\relax\relax} + \c_grph_scale_used_x_scale\scratchdimen + \c_grph_scale_used_y_scale\scratchdimen + #3\dimexpr\c_grph_scale_used_x_scale\dimexpr#4/\plusthousand\relax\relax} -\def\transforms_scale_calculate_scale#1#2#3% +\def\grph_scale_calculate_scale#1#2#3% {#3\dimexpr#1/\dimexpr#2/\plusthousand\relax\relax} -\def\transforms_scale_apply_scale#1#2#3#4% #4 = parameter / scale can be empty +\def\grph_scale_apply_scale#1#2#3#4% #4 = parameter / scale can be empty {\ifcase0#4\relax \ifcase0\p_scale\relax #3=\plusthousand @@ -444,45 +444,45 @@ \global#1\ifnum#3=\plusthousand#2\else\dimexpr#3\dimexpr#2/\plusthousand\relax\relax\fi \relax} -\def\transforms_scale_apply_size +\def\grph_scale_apply_size {\ifx\p_maxheight\empty - \d_transforms_scale_outer_v_size\textheight + \d_grph_scale_outer_v_size\textheight \ifinner - \d_transforms_scale_outer_v_size \vsize % \textheight =\vsize + \d_grph_scale_outer_v_size \vsize % \textheight =\vsize \scratchdimen\vsize % \scratchdimen=\textheight \else\ifinsidefloat - \d_transforms_scale_outer_v_size \vsize % \textheight =\vsize + \d_grph_scale_outer_v_size \vsize % \textheight =\vsize \scratchdimen\vsize % \scratchdimen=\textheight \else\ifinpagebody - \d_transforms_scale_outer_v_size \vsize % \textheight =\vsize + \d_grph_scale_outer_v_size \vsize % \textheight =\vsize \scratchdimen\vsize % \scratchdimen=\textheight \else % hm, there should be an option to force this \ifdim\pagegoal<\maxdimen \ifdim\pagetotal<\pagegoal \scratchdimen\dimexpr\pagegoal-\pagetotal\relax \else - \scratchdimen\d_transforms_scale_outer_v_size % \textheight + \scratchdimen\d_grph_scale_outer_v_size % \textheight \fi \else - \scratchdimen\d_transforms_scale_outer_v_size % \textheight + \scratchdimen\d_grph_scale_outer_v_size % \textheight \fi \fi\fi\fi \else \scratchdimen\p_maxheight - \d_transforms_scale_outer_v_size\scratchdimen + \d_grph_scale_outer_v_size\scratchdimen \fi \ifx\p_height\empty - \d_transforms_scale_v_size\scratchdimen + \d_grph_scale_v_size\scratchdimen \else - \d_transforms_scale_v_size\p_height + \d_grph_scale_v_size\p_height \fi \ifx\p_width\empty - \d_transforms_scale_h_size\hsize + \d_grph_scale_h_size\hsize \else - \d_transforms_scale_h_size\p_width + \d_grph_scale_h_size\p_width \fi} -\def\transforms_scale_convert_large_scale#1#2#3#4% +\def\grph_scale_convert_large_scale#1#2#3#4% {\scratchdimen#1\relax \ifnum#3=\plusthousand % == scale 1 @@ -508,37 +508,37 @@ % {\externalfigure[mill.png][frame=on,height=3cm,equalwidth=6cm]} {} % \stopcombination -\def\transforms_scale_position +\def\grph_scale_position {\ifx\p_equalwidth\empty \else \scratchdimen\p_equalwidth\relax - \ifdim\d_transforms_scale_wd<\scratchdimen + \ifdim\d_grph_scale_wd<\scratchdimen \setbox\nextbox\hbox to \scratchdimen{\hss\box\nextbox\hss}% \fi \fi \ifx\p_equalheight\empty \else \scratchdimen\p_equalheight\relax - \ifdim\d_transforms_scale_ht<\scratchdimen + \ifdim\d_grph_scale_ht<\scratchdimen \setbox\nextbox\vbox to \scratchdimen{\vss\box\nextbox\vss}% \fi \fi} \unexpanded\def\fastscale#1% {\ifnum#1=1000\relax - \expandafter\transforms_fast_scale_nop + \expandafter\grph_scale_fast_nop \else - \expandafter\transforms_fast_scale_yes + \expandafter\grph_scale_fast_yes \fi{#1}} -\def\transforms_fast_scale_nop#1% +\def\grph_scale_fast_nop#1% {\hbox} -\def\transforms_fast_scale_yes#1% - {\edef\finalscaleboxxscale{\withoutpt\the\dimexpr#1pt/1000\relax}% +\def\grph_scale_fast_yes#1% + {\edef\finalscaleboxxscale{\withoutpt\the\dimexpr#1pt/1000\relax}% brrr \let\finalscaleboxyscale\finalscaleboxxscale - \dowithnextboxcs\transforms_fast_scale_finish\hbox} + \dowithnextboxcs\grph_scale_fast_finish\hbox} -\def\transforms_fast_scale_finish - {\transforms_scale_apply +\def\grph_scale_fast_finish + {\grph_scale_apply \box\nextbox \endgroup} @@ -577,21 +577,21 @@ {\dodoubleargument\getparameters[\??cp]} \unexpanded\def\clip - {\dosingleempty\transforms_clip} + {\dosingleempty\grph_clip} -\def\transforms_clip[#1]% nb top->bottom left->right +\def\grph_clip[#1]% nb top->bottom left->right {\bgroup \iffirstargument \getparameters[\??cp][#1]% \fi - \dowithnextboxcs\transforms_clip_finish\hbox} + \dowithnextboxcs\grph_clip_finish\hbox} -\def\transforms_clip_finish +\def\grph_clip_finish {\doifelse\@@cpstate\v!start - \transforms_clip_yes_finish - \transforms_clip_nop_finish} + \grph_clip_yes_finish + \grph_clip_nop_finish} -\def\transforms_clip_yes_finish +\def\grph_clip_yes_finish {\ifdim\@@cpwidth>\zeropoint \!!dimena\@@cpwidth \!!dimenc\@@cphoffset @@ -642,7 +642,7 @@ \box\nextbox \egroup} -\def\transforms_clip_nop_finish +\def\grph_clip_nop_finish {\box\nextbox \egroup} @@ -684,9 +684,9 @@ \unexpanded\def\mirror {\bgroup - \dowithnextboxcs\transforms_mirror_finish\hbox} + \dowithnextboxcs\grph_mirror_finish\hbox} -\def\transforms_mirror_finish +\def\grph_mirror_finish {\dontshowcomposition \scratchdimen\wd\nextbox % better use an hbox (if no \forgetall, leftskip etc may creep in) @@ -729,26 +729,26 @@ % maybe just \rotation_... -\newdimen\d_transforms_rotation_x_size -\newdimen\d_transforms_rotation_y_size -\newdimen\d_transforms_rotation_x_offset -\newdimen\d_transforms_rotation_y_offset -\newdimen\d_transforms_rotation_x_position -\newdimen\d_transforms_rotation_y_position +\newdimen\d_grph_rotate_x_size +\newdimen\d_grph_rotate_y_size +\newdimen\d_grph_rotate_x_offset +\newdimen\d_grph_rotate_y_offset +\newdimen\d_grph_rotate_x_position +\newdimen\d_grph_rotate_y_position -\newdimen\d_transforms_rotation_used_height +\newdimen\d_grph_rotate_used_height -\let\d_transforms_rotation_width \!!widtha -\let\d_transforms_rotation_height\!!heighta -\let\d_transforms_rotation_depth \!!deptha +\let\d_grph_rotate_width \!!widtha +\let\d_grph_rotate_height\!!heighta +\let\d_grph_rotate_depth \!!deptha -\let\d_transforms_rotation_saved_width \!!widthb -\let\d_transforms_rotation_saved_height\!!heightb -\let\d_transforms_rotation_saved_depth \!!depthb +\let\d_grph_rotate_saved_width \!!widthb +\let\d_grph_rotate_saved_height\!!heightb +\let\d_grph_rotate_saved_depth \!!depthb -\newconditional\c_transforms_rotation_obey_depth -\newconditional\c_transforms_rotation_not_fit -\newconditional\c_transforms_rotation_center +\newconditional\c_grph_rotate_obey_depth +\newconditional\c_grph_rotate_not_fit +\newconditional\c_grph_rotate_center \installframedcommandhandler \??rotate {rotate} \??rotate @@ -765,9 +765,9 @@ \unexpanded\def\rotate % \bgroup: \rotate kan argument zijn {\bgroup - \dosingleempty\transforms_rotate} + \dosingleempty\grph_rotate} -\def\transforms_rotate[#1]% +\def\grph_rotate[#1]% {\iffirstargument \setupcurrentrotate[#1]% \fi @@ -777,83 +777,83 @@ \ifcsname\??rotatelocation\p_rotation_location\endcsname\p_rotation_location\else\v!default\fi \endcsname} -\def\transforms_rotate_framed +\def\grph_rotate_framed {\resetrotateparameter\c!location - \dowithnextboxcs\transforms_rotate_finish\vbox + \dowithnextboxcs\grph_rotate_finish\vbox \inheritedrotateframed} -\def\transforms_rotate_normal - {\dowithnextboxcs\transforms_rotate_finish\vbox} +\def\grph_rotate_normal + {\dowithnextboxcs\grph_rotate_finish\vbox} -\def\transforms_rotate_finish - {\transforms_rotation_finish_indeed +\def\grph_rotate_finish + {\grph_rotate_finish_indeed \egroup} \setvalue{\??rotatelocation\v!depth}% - {\setfalse\c_transforms_rotation_not_fit - \setfalse\c_transforms_rotation_center - \settrue \c_transforms_rotation_obey_depth - \transforms_rotate_normal} + {\setfalse\c_grph_rotate_not_fit + \setfalse\c_grph_rotate_center + \settrue \c_grph_rotate_obey_depth + \grph_rotate_normal} \setvalue{\??rotatelocation\v!fit}% - {\settrue \c_transforms_rotation_not_fit - \setfalse\c_transforms_rotation_center - \settrue \c_transforms_rotation_obey_depth - \transforms_rotate_normal} + {\settrue \c_grph_rotate_not_fit + \setfalse\c_grph_rotate_center + \settrue \c_grph_rotate_obey_depth + \grph_rotate_normal} \setvalue{\??rotatelocation\v!broad}% - {\setfalse\c_transforms_rotation_not_fit - \setfalse\c_transforms_rotation_center - \setfalse\c_transforms_rotation_obey_depth - \transforms_rotate_normal} + {\setfalse\c_grph_rotate_not_fit + \setfalse\c_grph_rotate_center + \setfalse\c_grph_rotate_obey_depth + \grph_rotate_normal} \setvalue{\??rotatelocation\v!high}% - {\setfalse\c_transforms_rotation_not_fit - \setfalse\c_transforms_rotation_center - \setfalse\c_transforms_rotation_obey_depth - \transforms_rotate_framed} + {\setfalse\c_grph_rotate_not_fit + \setfalse\c_grph_rotate_center + \setfalse\c_grph_rotate_obey_depth + \grph_rotate_framed} \setvalue{\??rotatelocation\v!middle}% - {\setfalse\c_transforms_rotation_not_fit - \settrue \c_transforms_rotation_center - \setfalse\c_transforms_rotation_obey_depth % hm, depth ? - \transforms_rotate_normal} + {\setfalse\c_grph_rotate_not_fit + \settrue \c_grph_rotate_center + \setfalse\c_grph_rotate_obey_depth % hm, depth ? + \grph_rotate_normal} \setvalue{\??rotatelocation\v!default}% - {\setfalse\c_transforms_rotation_not_fit - \setfalse\c_transforms_rotation_center - \settrue \c_transforms_rotation_obey_depth - \transforms_rotate_framed} + {\setfalse\c_grph_rotate_not_fit + \setfalse\c_grph_rotate_center + \settrue \c_grph_rotate_obey_depth + \grph_rotate_framed} \def\dorotatebox#1% {angle} \hbox/\vbox/\vtop % a fast low level one {\ifcase#1\relax \expandafter\gobbleoneargument \else - \expandafter\transforms_rotation_box + \expandafter\grph_rotate_box \fi{#1}} -\def\transforms_rotation_box#1% {angle} \hbox/\vbox/\vtop +\def\grph_rotate_box#1% {angle} \hbox/\vbox/\vtop {\bgroup \hbox\bgroup % compatibility hack \edef\p_rotation_rotation{#1}% - \dowithnextboxcs\transforms_rotation_finish} + \dowithnextboxcs\grph_rotate_finish} -\def\transforms_rotation_finish +\def\grph_rotate_finish {\getvalue{\??rotatelocation\v!broad}% - \transforms_rotation_finish_indeed + \grph_rotate_finish_indeed \egroup \egroup} -\def\transforms_rotation_finish_indeed +\def\grph_rotate_finish_indeed {\hbox\bgroup \ifx\p_rotation_rotation\empty - \transforms_rotation_finish_nop + \grph_rotate_finish_nop \else - \transforms_rotation_finish_yes + \grph_rotate_finish_yes \fi \egroup} -\def\transforms_rotation_finish_nop +\def\grph_rotate_finish_nop {\boxcursor\box\nextbox} \setvalue{\??rotatepreset\v!left}% @@ -873,133 +873,133 @@ \setvalue{\??rotatepreset\v!default}% {\edef\p_rotation_rotation{\realnumber{\p_rotation_rotation}}}% get rid of leading zeros and spaces -\def\transforms_rotation_finish_yes +\def\grph_rotate_finish_yes {\csname\??rotatepreset \ifcsname\??rotatepreset\p_rotation_rotation\endcsname\p_rotation_rotation\else\v!default\fi \endcsname \setbox\nextbox\vbox{\box\nextbox}% not really needed \dontshowcomposition \dontcomplain - \ifconditional\c_transforms_rotation_center - \d_transforms_rotation_saved_width \wd\nextbox - \d_transforms_rotation_saved_height\ht\nextbox - \d_transforms_rotation_saved_depth \dp\nextbox + \ifconditional\c_grph_rotate_center + \d_grph_rotate_saved_width \wd\nextbox + \d_grph_rotate_saved_height\ht\nextbox + \d_grph_rotate_saved_depth \dp\nextbox \setbox\nextbox\vbox{\vskip.5\ht\nextbox\hskip-.5\wd\nextbox\box\nextbox}% \smashbox\nextbox \fi - \d_transforms_rotation_width \wd\nextbox - \d_transforms_rotation_height\ht\nextbox - \d_transforms_rotation_depth \dp\nextbox + \d_grph_rotate_width \wd\nextbox + \d_grph_rotate_height\ht\nextbox + \d_grph_rotate_depth \dp\nextbox \setbox\nextbox\vbox{\hbox{\raise\dp\nextbox\box\nextbox}}% - \d_transforms_rotation_used_height \ht\nextbox + \d_grph_rotate_used_height \ht\nextbox % much of the next happens in lua (all the sin and cos) so we can do that in % one go if needed \setcalculatedcos\cos\p_rotation_rotation \setcalculatedsin\sin\p_rotation_rotation \ifdim\sin\points>\zeropoint \ifdim\cos\points>\zeropoint - \transforms_rotation_calculate_a - \transforms_rotation_apply + \grph_rotate_calculate_a + \grph_rotate_apply \else - \transforms_rotation_calculate_b - \transforms_rotation_apply - \wd\nextbox\ifconditional\c_transforms_rotation_not_fit\sin\d_transforms_rotation_depth\else\d_transforms_rotation_x_size\fi + \grph_rotate_calculate_b + \grph_rotate_apply + \wd\nextbox\ifconditional\c_grph_rotate_not_fit\sin\d_grph_rotate_depth\else\d_grph_rotate_x_size\fi \fi \else \ifdim\cos\points<\zeropoint - \transforms_rotation_calculate_c - \transforms_rotation_apply - \wd\nextbox\ifconditional\c_transforms_rotation_not_fit\negated\sin\d_transforms_rotation_height\else\d_transforms_rotation_x_size\fi + \grph_rotate_calculate_c + \grph_rotate_apply + \wd\nextbox\ifconditional\c_grph_rotate_not_fit\negated\sin\d_grph_rotate_height\else\d_grph_rotate_x_size\fi \else\ifdim\sin\points=\zeropoint - \transforms_rotation_calculate_d - \transforms_rotation_apply + \grph_rotate_calculate_d + \grph_rotate_apply % no wd ? \else - \transforms_rotation_calculate_e - \transforms_rotation_apply - \wd\nextbox\ifconditional\c_transforms_rotation_not_fit\negated\sin\d_transforms_rotation_height\else\d_transforms_rotation_x_size\fi + \grph_rotate_calculate_e + \grph_rotate_apply + \wd\nextbox\ifconditional\c_grph_rotate_not_fit\negated\sin\d_grph_rotate_height\else\d_grph_rotate_x_size\fi \fi\fi \fi - \ifconditional\c_transforms_rotation_center - \setbox\nextbox\vbox{\vskip-.5\d_transforms_rotation_saved_height\hskip.5\d_transforms_rotation_saved_height\box\nextbox}% - \wd\nextbox\d_transforms_rotation_saved_width - \ht\nextbox\d_transforms_rotation_saved_height - \dp\nextbox\d_transforms_rotation_saved_depth + \ifconditional\c_grph_rotate_center + \setbox\nextbox\vbox{\vskip-.5\d_grph_rotate_saved_height\hskip.5\d_grph_rotate_saved_height\box\nextbox}% + \wd\nextbox\d_grph_rotate_saved_width + \ht\nextbox\d_grph_rotate_saved_height + \dp\nextbox\d_grph_rotate_saved_depth \fi \boxcursor\box\nextbox} -\def\transforms_rotation_calculate_a - {\d_transforms_rotation_x_size\dimexpr\cos\d_transforms_rotation_width+\sin\d_transforms_rotation_used_height\relax - \d_transforms_rotation_y_size\dimexpr\sin\d_transforms_rotation_width+\cos\d_transforms_rotation_used_height\relax - \d_transforms_rotation_x_position\zeropoint - \d_transforms_rotation_y_position\cos\d_transforms_rotation_used_height - \ifconditional\c_transforms_rotation_not_fit - \d_transforms_rotation_x_offset\dimexpr\negated\sin\d_transforms_rotation_used_height+\sin\d_transforms_rotation_depth\relax +\def\grph_rotate_calculate_a + {\d_grph_rotate_x_size\dimexpr\cos\d_grph_rotate_width+\sin\d_grph_rotate_used_height\relax + \d_grph_rotate_y_size\dimexpr\sin\d_grph_rotate_width+\cos\d_grph_rotate_used_height\relax + \d_grph_rotate_x_position\zeropoint + \d_grph_rotate_y_position\cos\d_grph_rotate_used_height + \ifconditional\c_grph_rotate_not_fit + \d_grph_rotate_x_offset\dimexpr\negated\sin\d_grph_rotate_used_height+\sin\d_grph_rotate_depth\relax \fi - \ifconditional\c_transforms_rotation_obey_depth - \d_transforms_rotation_y_offset\cos\d_transforms_rotation_depth + \ifconditional\c_grph_rotate_obey_depth + \d_grph_rotate_y_offset\cos\d_grph_rotate_depth \fi} -\def\transforms_rotation_calculate_b - {\d_transforms_rotation_x_size\dimexpr\negated\cos\d_transforms_rotation_width+\sin\d_transforms_rotation_used_height\relax - \d_transforms_rotation_y_size\dimexpr\sin\d_transforms_rotation_width+\negated\cos\d_transforms_rotation_used_height\relax - \d_transforms_rotation_x_position\negated\cos\d_transforms_rotation_width - \d_transforms_rotation_y_position\zeropoint - \ifconditional\c_transforms_rotation_not_fit - \d_transforms_rotation_x_offset\dimexpr-\d_transforms_rotation_x_size+\sin\d_transforms_rotation_depth\relax +\def\grph_rotate_calculate_b + {\d_grph_rotate_x_size\dimexpr\negated\cos\d_grph_rotate_width+\sin\d_grph_rotate_used_height\relax + \d_grph_rotate_y_size\dimexpr\sin\d_grph_rotate_width+\negated\cos\d_grph_rotate_used_height\relax + \d_grph_rotate_x_position\negated\cos\d_grph_rotate_width + \d_grph_rotate_y_position\zeropoint + \ifconditional\c_grph_rotate_not_fit + \d_grph_rotate_x_offset\dimexpr-\d_grph_rotate_x_size+\sin\d_grph_rotate_depth\relax \fi - \ifconditional\c_transforms_rotation_obey_depth - \d_transforms_rotation_y_offset\negated\cos\d_transforms_rotation_height + \ifconditional\c_grph_rotate_obey_depth + \d_grph_rotate_y_offset\negated\cos\d_grph_rotate_height \fi} -\def\transforms_rotation_calculate_c - {\d_transforms_rotation_x_size\dimexpr\negated\cos\d_transforms_rotation_width+\negated\sin\d_transforms_rotation_used_height\relax - \d_transforms_rotation_y_size\dimexpr\negated\sin\d_transforms_rotation_width+\negated\cos\d_transforms_rotation_used_height\relax - \d_transforms_rotation_x_position\d_transforms_rotation_x_size - \d_transforms_rotation_y_position\negated\sin\d_transforms_rotation_width - \ifconditional\c_transforms_rotation_not_fit - \d_transforms_rotation_x_offset\dimexpr-\d_transforms_rotation_x_size+\negated\sin\d_transforms_rotation_height\relax +\def\grph_rotate_calculate_c + {\d_grph_rotate_x_size\dimexpr\negated\cos\d_grph_rotate_width+\negated\sin\d_grph_rotate_used_height\relax + \d_grph_rotate_y_size\dimexpr\negated\sin\d_grph_rotate_width+\negated\cos\d_grph_rotate_used_height\relax + \d_grph_rotate_x_position\d_grph_rotate_x_size + \d_grph_rotate_y_position\negated\sin\d_grph_rotate_width + \ifconditional\c_grph_rotate_not_fit + \d_grph_rotate_x_offset\dimexpr-\d_grph_rotate_x_size+\negated\sin\d_grph_rotate_height\relax \fi - \ifconditional\c_transforms_rotation_obey_depth - \d_transforms_rotation_y_offset\dimexpr\d_transforms_rotation_y_size+\cos\d_transforms_rotation_depth\relax + \ifconditional\c_grph_rotate_obey_depth + \d_grph_rotate_y_offset\dimexpr\d_grph_rotate_y_size+\cos\d_grph_rotate_depth\relax \fi} -\def\transforms_rotation_calculate_d - {\d_transforms_rotation_x_size\dimexpr\cos\d_transforms_rotation_width+\negated\sin\d_transforms_rotation_used_height\relax - \d_transforms_rotation_y_size\dimexpr\negated\sin\d_transforms_rotation_width+\cos\d_transforms_rotation_used_height\relax - \d_transforms_rotation_x_position\zeropoint - \d_transforms_rotation_y_position\d_transforms_rotation_y_size - \d_transforms_rotation_x_offset\zeropoint - \ifconditional\c_transforms_rotation_obey_depth - \d_transforms_rotation_y_offset\d_transforms_rotation_depth +\def\grph_rotate_calculate_d + {\d_grph_rotate_x_size\dimexpr\cos\d_grph_rotate_width+\negated\sin\d_grph_rotate_used_height\relax + \d_grph_rotate_y_size\dimexpr\negated\sin\d_grph_rotate_width+\cos\d_grph_rotate_used_height\relax + \d_grph_rotate_x_position\zeropoint + \d_grph_rotate_y_position\d_grph_rotate_y_size + \d_grph_rotate_x_offset\zeropoint + \ifconditional\c_grph_rotate_obey_depth + \d_grph_rotate_y_offset\d_grph_rotate_depth \fi} -\def\transforms_rotation_calculate_e - {\d_transforms_rotation_x_size\dimexpr\cos\d_transforms_rotation_width+\negated\sin\d_transforms_rotation_used_height\relax - \d_transforms_rotation_y_size\dimexpr\negated\sin\d_transforms_rotation_width+\cos\d_transforms_rotation_used_height\relax - \d_transforms_rotation_x_position\negated\sin\d_transforms_rotation_used_height - \d_transforms_rotation_y_position\d_transforms_rotation_y_size - \ifconditional\c_transforms_rotation_not_fit - \d_transforms_rotation_x_offset\dimexpr-\d_transforms_rotation_x_size+\negated\sin\d_transforms_rotation_height\relax +\def\grph_rotate_calculate_e + {\d_grph_rotate_x_size\dimexpr\cos\d_grph_rotate_width+\negated\sin\d_grph_rotate_used_height\relax + \d_grph_rotate_y_size\dimexpr\negated\sin\d_grph_rotate_width+\cos\d_grph_rotate_used_height\relax + \d_grph_rotate_x_position\negated\sin\d_grph_rotate_used_height + \d_grph_rotate_y_position\d_grph_rotate_y_size + \ifconditional\c_grph_rotate_not_fit + \d_grph_rotate_x_offset\dimexpr-\d_grph_rotate_x_size+\negated\sin\d_grph_rotate_height\relax \fi - \ifconditional\c_transforms_rotation_obey_depth - \d_transforms_rotation_y_offset\negated\sin\d_transforms_rotation_depth + \ifconditional\c_grph_rotate_obey_depth + \d_grph_rotate_y_offset\negated\sin\d_grph_rotate_depth \fi} -\def\transforms_rotation_apply - {\setbox\nextbox\vbox to \d_transforms_rotation_y_size +\def\grph_rotate_apply + {\setbox\nextbox\vbox to \d_grph_rotate_y_size {\vfill - \hbox to \d_transforms_rotation_x_size + \hbox to \d_grph_rotate_x_size {\dostartrotation\p_rotation_rotation \wd\nextbox\zeropoint \ht\nextbox\zeropoint \box\nextbox \dostoprotation \hfill}% - \kern\d_transforms_rotation_y_position}% + \kern\d_grph_rotate_y_position}% \setbox\nextbox\hbox - {\kern\dimexpr\d_transforms_rotation_x_position+\d_transforms_rotation_x_offset\relax - \lower\d_transforms_rotation_y_offset\box\nextbox}} + {\kern\dimexpr\d_grph_rotate_x_position+\d_grph_rotate_x_offset\relax + \lower\d_grph_rotate_y_offset\box\nextbox}} % \dostepwiserecurse{0}{360}{10} % {\startlinecorrection[blank] |