Thanks for sharing this, Wolfgang. Very nice effects! Duane Johnson (canadaduane)
On Sep 19, 2007, at 5:55 AM, Wolfgang Schuster wrote: > Hi Mike, > > you can control the rotation placement with the location key and the > value middle for location seems to be what you want but the the result > looks to me weird or broken and tried to fix this with the new value > center, you can see the results in small example below. > > \unprotect > > \def\dodorotatenextbox#1#2% quite some trial and error -) > {\dontshowcomposition > \dontcomplain > \ifnum#2=\plusfour > % new, location=middle > \!!widthb \nextboxwd > \!!heightb\nextboxht > \!!depthb \nextboxdp > \setbox\nextbox\vbox{\vskip.5\nextboxht\hskip-.5\nextboxwd > \flushnextbox}% \smashbox\nextbox > \else\ifnum#2=\plusfive > % wolf: location=center > \!!widthb \nextboxwd > \!!heightb\nextboxht > \!!depthb \nextboxdp > \setbox\nextbox\vbox{\vskip.5\nextboxht\hskip-.5\nextboxwd > \flushnextbox}% \smashbox\nextbox > \fi\fi > \!!widtha \nextboxwd > \!!heighta\nextboxht > \!!deptha \nextboxdp > \!!doneafalse > \!!donebfalse > \ifcase#2\or > % 1: fit > \or > % 2: depth, not fit > \!!doneatrue > \!!donebtrue > \or > % 3: depth, fit > \!!donebtrue > \fi > \setbox\nextbox\vbox{\hbox{\raise\nextboxdp\flushnextbox}}% > \!!dimena \nextboxht > \calculatecos\@@rorotation\edef\cos{\calculatedcos\@@rorotation}% > \calculatesin\@@rorotation\edef\sin{\calculatedsin\@@rorotation}% > \@@layerxpos\zeropoint > \@@layerypos\zeropoint > \@@layerxoff\zeropoint > \@@layeryoff\zeropoint > \ifdim\sin\points>\zeropoint > \ifdim\cos\points>\zeropoint > \@@layerxsiz \cos\!!widtha > \@@layerysiz \sin\!!widtha > \advance\@@layerxsiz \sin\!!dimena > \advance\@@layerysiz \cos\!!dimena > \@@layerypos \cos\!!dimena > \if!!donea > \@@layerxoff \negated\sin\!!dimena > \advance\@@layerxoff \sin\!!deptha > \fi > \if!!doneb > \@@layeryoff \cos\!!deptha > \fi > \dododorotatenextbox > \else > \@@layerxsiz \negated\cos\!!widtha > \@@layerysiz \sin\!!widtha > \advance\@@layerxsiz \sin\!!dimena > \advance\@@layerysiz \negated\cos\!!dimena > \@@layerxpos \negated\cos\!!widtha > \if!!donea > \@@layerxoff -\@@layerxsiz > \advance\@@layerxoff \sin\!!deptha > \fi > \if!!doneb > \@@layeryoff \negated\cos\!!heighta > \fi > \dododorotatenextbox > \wd\nextbox\if!!donea\sin\!!deptha\else\@@layerxsiz\fi > \fi > \else > \ifdim\cos\points<\zeropoint > \@@layerxsiz \negated\cos\!!widtha > \@@layerysiz \negated\sin\!!widtha > \advance\@@layerxsiz \negated\sin\!!dimena > \advance\@@layerysiz \negated\cos\!!dimena > \@@layerxpos \@@layerxsiz > \@@layerypos \negated\sin\!!widtha > \if!!donea > \@@layerxoff -\@@layerxsiz > \advance\@@layerxoff \negated\sin\!!heighta > \fi > \if!!doneb > \@@layeryoff \@@layerysiz > \advance\@@layeryoff \cos\!!deptha > \fi > \dododorotatenextbox > \wd\nextbox\if!!donea\negated\sin\!!heighta\else\@@layerxsiz\fi > \else > \@@layerxsiz \cos\!!widtha > \@@layerysiz \negated\sin\!!widtha > \advance\@@layerxsiz \negated\sin\!!dimena > \advance\@@layerysiz \cos\!!dimena > \ifdim\sin\points=\zeropoint > \@@layerxpos \zeropoint > \@@layerxoff \zeropoint > \@@layerypos \@@layerysiz > \if!!doneb > \@@layeryoff \!!deptha > \fi > \else > \@@layerypos \@@layerysiz > \@@layerxpos \negated\sin\!!dimena > \if!!donea > \@@layerxoff -\@@layerxsiz > \advance\@@layerxoff \negated\sin\!!heighta > \fi > \if!!doneb > \@@layeryoff \negated\sin\!!deptha > \fi > \fi > \dododorotatenextbox > \ifdim\sin\points=\zeropoint > \else > \wd\nextbox\if!!donea\negated\sin\!!heighta\else > \@@layerxsiz\fi > \fi > \fi > \fi > % new, location=middle > \ifnum#2=\plusfour > \setbox\nextbox\vbox{\vskip-.5\!!heightb\hskip.5\!!heightb > \flushnextbox}% \nextboxwd\!!widthb > \nextboxht\!!heightb > \nextboxdp\!!depthb > \else\ifnum#2=\plusfive > % wolf: location=center > \setbox\nextbox\vbox{\vskip.5\!!heightb\ifnum#1=270\relax > \hskip2\!! > heightb\fi\flushnextbox}% \nextboxwd\!!widthb > \nextboxht\!!heightb > \nextboxdp\!!depthb > \fi\fi} > > \def\complexrotate[#1]% framed met diepte ! > {\getparameters[\??ro][#1]% > \processaction > [\@@rolocation] > [ \v!depth=>\!!counta\plusthree\donefalse,% depth fit - raw > box \v!fit=>\!!counta\plustwo \donefalse,% depth tight - raw box > \v!broad=>\!!counta\plusone \donefalse,% nodepth fit - raw > box \v!high=>\!!counta\plusone \donetrue ,% nodepth fit - framed > \v!middle=>\!!counta\plusfour \donefalse,% centered, keep > dimensions \v!center=>\!!counta\plusfive \donefalse,% > \s!default=>\!!counta\plusthree\donetrue ,% depth fit - > framed > \s!unknown=>\!!counta\plusthree\donetrue ]% depth fit - > framed > \ifdone > \def\docommand{\localframed[\??ro][#1,\c!location=]}% > \else > \let\docommand\relax > \fi > \dowithnextbox{\dorotatenextbox\@@rorotation\!!counta\egroup}\vbox > \docommand} > > \protect > > \setuppapersize[A4,landscape][A4,landscape] > > \starttext > > \input knuth > \rotate[rotation=0]{\framed[width=4cm,height=2cm,align={middle,lohi}] > {Text}} text \rotate[rotation=90,location=center]{\framed > [width=4cm,height=2cm,align={middle,lohi}]{Text}} text \rotate > [rotation=180]{\framed[width=4cm,height=2cm,align={middle,lohi}] > {Text}} > text \rotate[rotation=270,location=center]{\framed > [width=4cm,height=2cm,align={middle,lohi}]{Text}} text %\rotate > [rotation=270]{\framed[width=4cm,height=2cm,align={middle,lohi}] > {Text}} > \input knuth > > \stoptext > > Wolfgang > ______________________________________________________________________ > _____________ > If your question is of interest to others as well, please add an > entry to the Wiki! > > maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ > ntg-context > webpage : http://www.pragma-ade.nl / http://tex.aanhet.net > archive : https://foundry.supelec.fr/projects/contextrev/ > wiki : http://contextgarden.net > ______________________________________________________________________ > _____________ ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________