lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: C++ question:


From: David Kastrup
Subject: Re: C++ question:
Date: Fri, 20 Jan 2017 13:35:41 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux)

Knut Petersen <address@hidden> writes:

> Hi David!
>> Uh what?
>>
>> If you want to change the dimensions of a stencil copy, you can just do
>>
>> Stencil wd0 = orig;
>> wd0.set_empty (false);
>
> I use the following code to emit hyphens (stencil ds) and whiteout boxes 
> (stencil ws)
> in lyric-hyphen.cc:
>
>   Stencil total;
>   for (int i = 0; i < hyphens; i++)
>     { // ok
>       Stencil ds = dash_stencil;
>       ds.translate_axis (span_points[LEFT] + start_space +
>                          i * (dash_period + dash_length), X_AXIS);
>       total.add_stencil (ds);
>       if (whiteout > 0.0 )
>         {
>           Box wb (Interval (0, dash_length + 2 * whiteout * lt),
>                   Interval (h - whiteout * lt, h + th + whiteout * lt));
>           Stencil ws (Lookup::round_filled_box (wb, 0.8 * lt));
>           ws = ws.in_color (1.0, 0.0, 0.0);
>           ws.translate_axis (span_points[LEFT] + start_space + i * 
> (dash_period
>                              + dash_length) - whiteout * lt, X_AXIS);
>           ws.set_empty(false); // <== Does not help against collision 
> detection
>           total.add_stencil (ws);
>         }
>     }
>
> As you can see in the attached jpgs, a collision of the whiteout box moves 
> the last lyric line down.
> set_empty(true) nor anything else I tried does change anything.

Uh, you set the dimensions to 0,0 _after_ moving the thing to its place.
That would make the remaining point stick out seriously wide of the
actual glyph.  Maybe move the set_empty before the translate_axis?

> The ugly hack to define a markup property containing a filled box inside a 
> \with-dimensions zero
> for both axes, interpret, scale and move the stencil as required
> works. But there must be a better way ...

Your markup example does _not_ include any shift before zeroing the
bounding boxes of the whiteout rectangle.  So it would appear like you
don't actually do the same thing here.

> WithUglyHack.jpg shows the targeted result ...



-- 
David Kastrup



reply via email to

[Prev in Thread] Current Thread [Next in Thread]