From e7b10aeea8a3004e64107a14192a45678cfb7615 Mon Sep 17 00:00:00 2001 From: fred Date: Tue, 26 Mar 2002 22:14:32 +0000 Subject: [PATCH] lilypond-1.1.52 --- input/test/auto-staff-switch.ly | 10 +++++++--- lily/staff-switching-translator.cc | 27 ++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/input/test/auto-staff-switch.ly b/input/test/auto-staff-switch.ly index 21cb6c5922..627447148d 100644 --- a/input/test/auto-staff-switch.ly +++ b/input/test/auto-staff-switch.ly @@ -2,7 +2,7 @@ \score { \notes { \context AutoSwitchGrandStaff \relative c' { - c8^8 d^8 b^8 a^8 [a,^8 f'^8 g,^8 ~ g] + c8 d b a' a, f' g,4 ~ g } } @@ -12,19 +12,23 @@ \accepts AutoSwitchGrandStaff; } \translator{ - \context "Line_group_engraver_group"; + \type "Engraver_group_engraver"; \name AutoSwitchGrandStaff; \consists "Span_bar_engraver"; \consists "Vertical_align_engraver"; \consists "Piano_bar_engraver"; + \consistsend "Axis_group_engraver"; minVerticalAlign = 2.*\staffheight; maxVerticalAlign = 2.*\staffheight; + switcherName = "Voice"; + acceptorName = "Thread"; + staffContextName = "Staff"; \accepts "AutoSwitchContext"; \accepts "Staff"; } \translator { - \context "Engraver_group_engraver"; + \type "Engraver_group_engraver"; \name "AutoSwitchContext"; \consists "Staff_switching_translator"; } diff --git a/lily/staff-switching-translator.cc b/lily/staff-switching-translator.cc index 570631c3a7..ae56d110d3 100644 --- a/lily/staff-switching-translator.cc +++ b/lily/staff-switching-translator.cc @@ -19,6 +19,8 @@ class Staff_switching_translator : public Engraver protected: virtual bool do_try_music (Music* m); virtual void do_creation_processing (); + + void default_voice (Direction); public: Staff_switching_translator (); VIRTUAL_COPY_CONS(Translator); @@ -33,13 +35,22 @@ Staff_switching_translator::do_creation_processing () { Translator_group * daddy =daddy_grav_l (); // staff switching context - staff_handle_drul_[UP].set_translator (daddy->daddy_trans_l_ -> find_create_translator_l ("Staff", "upper")); - staff_handle_drul_[DOWN].set_translator (daddy->daddy_trans_l_-> find_create_translator_l ("Staff", "lower")); + Scalar s = get_property("staffContextName", 0); + staff_handle_drul_[UP].set_translator (daddy->daddy_trans_l_ -> find_create_translator_l (s, "upper")); + staff_handle_drul_[DOWN].set_translator (daddy->daddy_trans_l_-> find_create_translator_l (s, "lower")); staff_handle_drul_[DOWN].report_to_l ()->set_property ("defaultClef", "bass"); + + default_voice (UP); +} - my_voice_.set_translator (staff_handle_drul_[UP].report_to_l ()->find_create_translator_l ("Voice", daddy->id_str_)); + +void +Staff_switching_translator::default_voice (Direction d) +{ + Scalar s = get_property ("acceptorName",0); + my_voice_.set_translator (staff_handle_drul_[d].report_to_l ()->find_create_translator_l ("Thread", daddy_trans_l_->id_str_)); } bool @@ -54,6 +65,16 @@ Staff_switching_translator::do_try_music (Music*m) Translator_group * mv = my_voice_.report_to_l (); Translator_group *dest_staff =staff_handle_drul_[staff].report_to_l (); + Scalar s = get_property ("switcherName", 0); + + while (mv && mv->type_str_ != s) + { + mv = mv -> daddy_trans_l_; + } + + if (!mv) + default_voice (staff); + if (mv->daddy_trans_l_ != dest_staff) { mv->daddy_trans_l_->remove_translator_p (mv); -- 2.39.5