From ac01634a7d17566469ad54af5f3d59d5967392a9 Mon Sep 17 00:00:00 2001 From: Joe Neeman Date: Fri, 30 Mar 2007 12:32:01 +1000 Subject: [PATCH] Fix #341. Consider arpeggios as cross-staff iff they were created by span-arpeggio-engraver. --- lily/align-interface.cc | 4 +--- lily/arpeggio.cc | 17 ----------------- lily/include/arpeggio.hh | 1 - lily/span-arpeggio-engraver.cc | 5 ++++- scm/define-grobs.scm | 1 - 5 files changed, 5 insertions(+), 23 deletions(-) diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 45761f40c8..4d885b7a38 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -188,9 +188,7 @@ Align_interface::get_extents_aligned_translates (Grob *me, 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"), diff --git a/lily/arpeggio.cc b/lily/arpeggio.cc index 56066912fb..b501117624 100644 --- a/lily/arpeggio.cc +++ b/lily/arpeggio.cc @@ -165,23 +165,6 @@ Arpeggio::pure_height (SCM smob, SCM, SCM) 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.", diff --git a/lily/include/arpeggio.hh b/lily/include/arpeggio.hh index 7b0fe264b6..c18eb10c3e 100644 --- a/lily/include/arpeggio.hh +++ b/lily/include/arpeggio.hh @@ -21,7 +21,6 @@ public: 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(); }; diff --git a/lily/span-arpeggio-engraver.cc b/lily/span-arpeggio-engraver.cc index 97c2f6b870..fa2e91eec3 100644 --- a/lily/span-arpeggio-engraver.cc +++ b/lily/span-arpeggio-engraver.cc @@ -58,7 +58,10 @@ Span_arpeggio_engraver::process_acknowledged () */ 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 diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 82d377ccdc..196b550158 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -153,7 +153,6 @@ (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 -- 2.39.5