Am 20.01.2017 um 13:35 schrieb David Kastrup:
Knut Petersen <knut_peter...@t-online.de> 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?
Not even the following code shows any improvement:
Stencil total;
for (int i = 0; i < hyphens; i++)
{
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;
ws.set_empty(false);
ws = (Lookup::round_filled_box (wb, 0.8 * lt));
ws.set_empty(false);
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);
total.add_stencil (ws);
total.set_empty(false);
}
}
total.translate_axis (-me->relative_coordinate (common, X_AXIS), X_AXIS);
total.set_empty(false);
return total.smobbed_copy ();
}
Knut
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel