diff options
author | Marius <mariausol@gmail.com> | 2011-12-15 15:20:16 +0200 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2011-12-15 15:20:16 +0200 |
commit | 87020c1d54ea9608876f219ba4a2be5949e21916 (patch) | |
tree | c43d623de6394f14ba339436533a05580d7db24a /tex/context/base/grph-trf.mkiv | |
parent | b68cb421b46c1b7ce16be9172a3ce6ad0472a55f (diff) | |
download | context-87020c1d54ea9608876f219ba4a2be5949e21916.tar.gz |
beta 2011.12.15 13:56
Diffstat (limited to 'tex/context/base/grph-trf.mkiv')
-rw-r--r-- | tex/context/base/grph-trf.mkiv | 112 |
1 files changed, 81 insertions, 31 deletions
diff --git a/tex/context/base/grph-trf.mkiv b/tex/context/base/grph-trf.mkiv index 9b4201116..4801a2aa5 100644 --- a/tex/context/base/grph-trf.mkiv +++ b/tex/context/base/grph-trf.mkiv @@ -14,7 +14,8 @@ %D It may be that some functionality got lost. If it concerns %D defined features, let me know and it will be sorted out. -%D We will move the calculations to lua. +%D We will move the calculations to \LUA\ and clean up this +%D lot anyway. \writestatus{loading}{ConTeXt Graphic Macros / Transformations} @@ -285,34 +286,46 @@ \def\setscaleboxbydimension {\ifdim\scaleboxdimx>\zeropoint \ifdim\scaleboxdimy>\zeropoint - \dosetdimensionscaleboxsize - {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay - \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% - {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay - \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% - {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay - \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% + \setscaleboxbydimension_a \else - \dosetdimensionscaleboxsize - {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% - {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% - {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% + \setscaleboxbydimension_b \fi \else \ifdim\scaleboxdimy>\zeropoint - \dosetdimensionscaleboxsize - {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% - {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% - {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% + \setscaleboxbydimension_c \else - \dosetdimensionscaleboxsize - {\doapplyscaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax\c!xscale - \doapplyscaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay\c!yscale}% - {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% - {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% + \setscaleboxbydimension_d \fi \fi} +\def\setscaleboxbydimension_a + {\dosetdimensionscaleboxsize + {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay + \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% + {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay + \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}% + {\docalculatescaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay + \docalculatescaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax}} + +\def\setscaleboxbydimension_b + {\dosetdimensionscaleboxsize + {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% + {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% + {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}} + +\def\setscaleboxbydimension_c + {\dosetdimensionscaleboxsize + {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% + {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}% + {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}} + +\def\setscaleboxbydimension_d + {\dosetdimensionscaleboxsize + {\doapplyscaleboxscale\scaleboxdimx\scaleboxsizex\scaleboxscax\c!xscale + \doapplyscaleboxscale\scaleboxdimy\scaleboxsizey\scaleboxscay\c!yscale}% + {\docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey}% + {\docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex}} + \def\dosetdimensionscaleboxsize#1#2#3% {#1\relax \doifsomething{\scaleparameter\c!maxwidth} @@ -326,15 +339,41 @@ #3\relax \fi}} -\def\docalculatescaleboxnorm#1#2#3#4#5% 2 3 parameters (dodo:speedup) - {\processaction - [\scaleparameter#2] - [ \v!max=>\global#1\dimexpr#4\relax, - \v!fit=>\global#1\dimexpr#5\relax, - \v!broad=>\global#1\dimexpr#5-4\@@exbodyfont\relax, - \v!auto=>\doifsomething{\scaleparameter#3}{\global#1\dimexpr\scaleparameter#3\relax}, - \s!default=>\doifsomething{\scaleparameter#3}{\global#1\dimexpr\scaleparameter#3\relax}, - \s!unknown=>\global#1\dimexpr\scaleparameter#2\dimexpr\@@exbodyfont/10\relax\relax]} +% \def\docalculatescaleboxnorm#1#2#3#4#5% 2 3 parameters (dodo:speedup) +% {\processaction +% [\scaleparameter#2] +% [ \v!max=>\global#1\dimexpr#4\relax, +% \v!fit=>\global#1\dimexpr#5\relax, +% \v!broad=>\global#1\dimexpr#5-4\@@exbodyfont\relax, +% \v!auto=>\doifsomething{\scaleparameter#3}{\global#1\dimexpr\scaleparameter#3\relax}, +% \s!default=>\doifsomething{\scaleparameter#3}{\global#1\dimexpr\scaleparameter#3\relax}, +% \s!unknown=>\global#1\dimexpr\scaleparameter#2\dimexpr\@@exbodyfont/10\relax\relax]} + +\def\docalculatescaleboxnorm#1#2% todo: swap 1 and 2 and pass one less + {\edef\askedscaleboxnorm{\scaleparameter#2}% + \csname\??ef:n:\ifcsname\??ef:n:\askedscaleboxnorm\endcsname + \askedscaleboxnorm\else\s!unknown + \fi\endcsname{#1}} + +\setvalue{\??ef:n:\v!max}#1#2#3#4% + {\global#1#3} + +\setvalue{\??ef:n:\v!fit}#1#2#3#4% + {\global#1#4} + +\setvalue{\??ef:n:\v!broad}#1#2#3#4% + {\global#1\dimexpr#4-4\@@exbodyfont\relax} + +\setvalue{\??ef:n:\s!unknown}#1#2#3#4% + {\global#1\dimexpr\askedscaleboxnorm\dimexpr\@@exbodyfont/10\relax\relax} + +\def\docalculatescaleboxnormauto#1#2#3#4% + {\edef\askedscaleboxnorm{\scaleparameter#2}% + \ifx\askedscaleboxnorm\empty\else\global#1\askedscaleboxnorm\fi} + +\letvalue{\??ef:n:\v!auto }\docalculatescaleboxnormauto +\letvalue{\??ef:n:\empty }\docalculatescaleboxnormauto +\letvalue{\??ef:n:\s!default}\docalculatescaleboxnormauto \def\docalculatescaleboxscales#1#2#3#4% {\scratchdimen\dimexpr#1/\dimexpr#2/\plusthousand\relax\relax @@ -426,7 +465,18 @@ \ifdim\ht\nextbox<\scratchdimen \setbox\nextbox\vbox to \scratchdimen{\vss\box\nextbox\vss}% \fi}} - + +\def\fastscale#1% + {\begingroup + \ifnum#1=1000\relax + \setfalse\scaleboxdone + \else + \settrue\scaleboxdone + \edef\finalscaleboxxscale{\withoutpt\the\dimexpr#1pt/1000\relax}% + \let\finalscaleboxyscale\finalscaleboxxscale + \fi + \dowithnextbox{\doscaleboxindeed\flushnextbox\endgroup}\hbox} + %D \macros %D {clip, setupclipping} %D |