From: Duane Johnson <canadaduane@gmail.com>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: externalfigure rotation
Date: Wed, 19 Sep 2007 16:31:46 -0600 [thread overview]
Message-ID: <69F8A9DE-67BD-495E-BB06-2781FD20C7A8@gmail.com> (raw)
In-Reply-To: <20070919135532.de5137de.schuster.wolfgang@googlemail.com>
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
___________________________________________________________________________________
next prev parent reply other threads:[~2007-09-19 22:31 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-17 13:38 Santy, Michael
2007-09-19 11:55 ` Wolfgang Schuster
2007-09-19 22:31 ` Duane Johnson [this message]
[not found] <mailman.1923.1190214383.2346.ntg-context@ntg.nl>
2007-09-19 18:18 ` Santy, Michael
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=69F8A9DE-67BD-495E-BB06-2781FD20C7A8@gmail.com \
--to=canadaduane@gmail.com \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).