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
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-devel