ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Tim Steenvoorden <tim.steenvoorden@gmail.com>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: Position of MetaPost graphics
Date: Mon, 4 Apr 2011 01:22:37 +0200	[thread overview]
Message-ID: <BANLkTin7R5oLM1zzygj0e49wUkBnezOCYA@mail.gmail.com> (raw)
In-Reply-To: <4D9859C6.9040200@wxs.nl>

Thanks Peter! You are right it is easier to draw both the wave and the
line in Metapost. And the dx=-\cutspace is just what I needed for left
pages!

I striped the frames out of the code and placed just the graphics in
the layer with a reuseMPgraphic. Also, I pulled out the definition of
the wave into a MPinclusions. I have to do LoadPageState in each
graphic though.

%\showframe
\setuppapersize[A5][A5]
\setuppagenumbering[alternative=doublesided]

\startMPinclusions
numeric periods, width;
path wave;
periods := 3 + 1/4;
width   := periods * 2*pi;
wave    := origin for x=0 step 0.1 until width:
             .. (x,x*sin(x))
           endfor;
\stopMPinclusions

\startreusableMPgraphic{rightwave}
LoadPageState;
pickup pencircle scaled 1pt;
draw origin -- (TextWidth,0) -- wave xscaled (CutSpace/width) yscaled
(LineHeight/width) shifted (TextWidth,0);
%setbounds currentpicture to unitsquare xscaled (TextWidth+CutSpace);
\stopreusableMPgraphic

\startreusableMPgraphic{leftwave}
LoadPageState;
pickup pencircle scaled 1pt;
draw reverse wave xscaled (-1*CutSpace/width) yscaled
(LineHeight/width) -- (TextWidth,0);
\stopreusableMPgraphic

\definelayer[decorations][position=yes,option=test]
\setupbackgrounds[page][background=decorations]

\starttext

{\ss\bfc A chapter title}
\blank[small]
{\ss\bfx \date \hfill Author Name}
\setlayer[decorations][location=r]{\reuseMPgraphic{rightwave}}

\input knuth

\page

{\ss\bfc A very long chapter title on two or more lines}
\blank[small]
{\ss\bfx \date \hfill Author Name}
\setlayer[decorations][location=r,dx=-\cutspace]{\reuseMPgraphic{leftwave}}

\input knuth

\stoptext

Just one problem is left. The graphic occupies space in the text layer
as if the location was set to rb. If you place it with the position=no
option, it is properly placed in the background and it doesn't disturb
the text. Is this a bug or a feature?

I tried to play a bit with the bounding boxes, but I think I don't
understand them that well.

Regards,
Tim


2011/4/3 Hans Hagen <pragma@wxs.nl>:
> On 1-4-2011 11:39, Tim Steenvoorden wrote:
>>
>> Dear list,
>>
>> I'm trying to make some fancy chapter headers. With MetaPost I drew a
>> wave, which I'd like to place in the margin. I've read details.pdf and
>> metafun.pdf, but I don't manage to get the positioning right. The wave
>> should begin where the bottomframe ends and move on to the page
>> border. Also, the graphic is placed in the page background layer, but
>> nevertheless the text after the the graphic is shifted down.
>>
>> \startuniqueMPgraphic{wave}
>> numeric periods, width;
>> path wave;
>> periods := 3 + 1/4;
>> width   := periods * 2*pi;
>> wave    := origin for x=0 step 0.1 until width:
>>              -- (x,x*sin(x))
>>            endfor;
>> pickup pencircle scaled 1pt;
>> draw wave xscaled (OverlayWidth/width) yscaled (OverlayHeight/(2*width));
>> \stopuniqueMPgraphic
>>
>> \definelayer[decorations][position=yes,option=test,location=r]
>> \setupbackgrounds[page][background=decorations]
>> \defineoverlay[wave][\uniqueMPgraphic{wave}]
>>
>> \starttext
>>
>> {\ss\bfc A chapter title}
>> \blank[small]
>> \framed[frame=off,bottomframe=on,width=broad,rulethickness=1pt]
>>  {\ss\bfx \date \hfill Author Name}
>>
>> \setlayer[decorations]{\framed[background=wave,frame=off,width=\cutspace,height=2\lineheight]{}}
>>
>> \input knuth
>>
>> \stoptext
>>
>> What am I doing wrong? Is it a better idea to draw the bottomframe in
>> MetaPost too? How do I take care of positioning in that case? Absolute
>> positioning is not an option, because the length of the chapterheads
>> can be two lines. It should also work on other paper sizes (A5 in
>> particular).
>
> you probably need to set the boundingbopx of your picture to something
> reasonable (you can use the OverlayWidth and OverlayHeight variables)
>
> -----------------------------------------------------------------
>                                          Hans Hagen | PRAGMA ADE
>              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>    tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
>                                             | www.pragma-pod.nl
> -----------------------------------------------------------------
>
___________________________________________________________________________________
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  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

  parent reply	other threads:[~2011-04-03 23:22 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-01  9:39 Tim Steenvoorden
2011-04-03 15:33 ` Peter Rolf
2011-04-03 16:42 ` Aditya Mahajan
     [not found] ` <4D9859C6.9040200@wxs.nl>
2011-04-03 23:22   ` Tim Steenvoorden [this message]
2011-04-04  7:33     ` Wolfgang Schuster
2011-04-06 14:04       ` Tim Steenvoorden

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=BANLkTin7R5oLM1zzygj0e49wUkBnezOCYA@mail.gmail.com \
    --to=tim.steenvoorden@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).