On 11/28/06, Han-Wen Nienhuys <[EMAIL PROTECTED]> wrote:
Joe Neeman escreveu: > On 11/28/06, *Werner LEMBERG* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote: > > > Joe, > > > here's a quite important problem regarding skyline positioning and > outside-staff-priority. Hopefully, you can fix that easily since this > feature rocks! > I'm not on a lilypond-enabled computer right now, so it could be caused > by a bug, but I can't tell from your example. > marks are typeset at score level. I'd be surprised if they partook in skyline stuff.
How's this? I just recurse into smaller boxes if I find a vertical-axis-group (before, the System was treating the VerticalAlignment as a single grob and therefore the skyline was just a big box).
diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc index 2ede254..c6452d3 100644 --- a/lily/axis-group-interface.cc +++ b/lily/axis-group-interface.cc @@ -269,6 +269,22 @@ staff_priority_less (Grob * const &g1, G return rank_1 < rank_2; } +static void +add_boxes (Grob *me, Grob *x_common, Grob *y_common, vector<Box> *const boxes) +{ + if (Axis_group_interface::has_interface (me) + && Axis_group_interface::has_axis (me, Y_AXIS)) + { + Grob_array *elements = unsmob_grob_array (me->get_object ("elements")); + if (elements) + for (vsize i = 0; i < elements->size (); i++) + add_boxes (elements->grob (i), x_common, y_common, boxes); + } + else + boxes->push_back (Box (me->extent (x_common, X_AXIS), + me->extent (y_common, Y_AXIS))); +} + void Axis_group_interface::skyline_spacing (Grob *me, vector<Grob*> elements) { @@ -281,9 +297,7 @@ Axis_group_interface::skyline_spacing (G for (i = 0; i < elements.size () && !scm_is_number (elements[i]->get_property ("outside-staff-priority")); i++) - boxes.push_back (Box (elements[i]->extent (x_common, X_AXIS), - elements[i]->extent (y_common, Y_AXIS))); - + add_boxes (elements[i], x_common, y_common, &boxes); Drul_array<Skyline> skylines (Skyline (boxes, X_AXIS, DOWN), Skyline (boxes, X_AXIS, UP));
_______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel