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

Reply via email to