return scm_from_double (ret);
}
-/*
- Find Y-axis parent of G that has a #'forced-distance property. This
- has the effect of finding the piano-staff given an object in that
- piano staff.
-
- FIXME: piano staves no longer have forced-distance. The code that
- relies on this function (in line-spanner) is broken.
-*/
-Grob *
-find_fixed_alignment_parent (Grob *g)
-{
- (void) g;
- programming_error ("deprecated. We don't use forced-distance anymore");
- return 0;
-}
-
ADD_INTERFACE (Align_interface,
"Order grobs from top to bottom, left to right, right to left or bottom "
static Real get_pure_child_y_translation (Grob *, Grob *child, int start, int end);
};
-Grob *find_fixed_alignment_parent (Grob *g);
-
#endif /* ALIGN_INTERFACE_HH */
DECLARE_GROB_INTERFACE ();
};
-
-static Grob *
-line_spanner_common_parent (Grob *me)
-{
- /* FIXME: what is the right thing to do here, now that PianoStaves don't
- have fixed spacing? */
- Grob *common = 0; //find_fixed_alignment_parent (me);
- if (!common)
- {
- common = Staff_symbol_referencer::get_staff_symbol (me);
- if (common)
- common = common->get_parent (Y_AXIS);
- else
- common = me->get_parent (Y_AXIS);
- }
-
- return common;
-}
-
SCM
Line_spanner::calc_bound_info (SCM smob, Direction dir)
{
if (me->get_bound (dir)->break_status_dir ())
{
- /*
- This is hairy. For the normal case, we simply find common
- parents, and draw a line between the bounds. When two note
- heads are on different systems, there is no common parent
- anymore. We have to find the piano-staff object.
- */
-
Spanner *next_sp = me->broken_neighbor (dir);
Item *next_bound = next_sp->get_bound (dir);
return SCM_EOL;
}
- Grob *next_common_y = line_spanner_common_parent (next_bound);
+ Grob *next_common_y = next_sp->common_refpoint (next_bound, X_AXIS);
Interval next_ext = next_bound->extent (next_common_y, Y_AXIS);
y = next_ext.center ();