line_break_details = me_spanner->get_bound (LEFT)->get_property ("line-break-system-details");
if (!me->get_system () && !pure)
- me->warning (_ ("vertical alignment called before line-breaking.\n"
- "Only do cross-staff spanners with PianoStaff."));
-
+ me->programming_error ("vertical alignment called before line-breaking");
}
Direction stacking_dir = robust_scm2dir (me->get_property ("stacking-dir"),
return height (smob);
}
-MAKE_SCHEME_CALLBACK (Arpeggio, calc_cross_staff, 1);
-SCM
-Arpeggio::calc_cross_staff (SCM smob)
-{
- Grob *me = unsmob_grob (smob);
- extract_grob_set (me, "stems", stems);
-
- for (vsize i = 1; i < stems.size (); i++)
- {
- Grob *s1 = Staff_symbol_referencer::get_staff_symbol (stems[i-1]);
- Grob *s2 = Staff_symbol_referencer::get_staff_symbol (stems[i]);
- if (s1 != s2)
- return SCM_BOOL_T;
- }
- return SCM_BOOL_F;
-}
-
ADD_INTERFACE (Arpeggio,
"Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.",
DECLARE_SCHEME_CALLBACK (width, (SCM));
DECLARE_SCHEME_CALLBACK (height, (SCM));
DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM));
- DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM));
DECLARE_GROB_INTERFACE();
};
*/
if (!span_arpeggio_ && arpeggios_.size () > 1
&& to_boolean (get_property ("connectArpeggios")))
- span_arpeggio_ = make_item ("Arpeggio", SCM_EOL);
+ {
+ span_arpeggio_ = make_item ("Arpeggio", SCM_EOL);
+ span_arpeggio_->set_property ("cross-staff", SCM_BOOL_T);
+ }
}
void
(script-priority . 0)
(side-axis . ,X)
(staff-position . 0.0)
- (cross-staff . ,ly:arpeggio::calc-cross-staff)
(Y-extent . ,ly:arpeggio::height)
(meta . ((class . Item)
(interfaces . (arpeggio-interface