|
From: | Knut Petersen |
Subject: | Re: C++ question: |
Date: | Fri, 20 Jan 2017 13:51:27 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 |
Am 20.01.2017 um 13:35 schrieb David Kastrup:
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?
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
[Prev in Thread] | Current Thread | [Next in Thread] |