X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffigured-bass-engraver.cc;h=025f7de6edd0590e97f4c8b1853be99424bc626c;hb=f3612db9b8f979653df58ad0a55efa5e9004d5b1;hp=9e0bf61786704b5a0e1882748789cae163931a69;hpb=cc676c5aadd45985251b5d60fa23eed1ed98f6e6;p=lilypond.git diff --git a/lily/figured-bass-engraver.cc b/lily/figured-bass-engraver.cc index 9e0bf61786..025f7de6ed 100644 --- a/lily/figured-bass-engraver.cc +++ b/lily/figured-bass-engraver.cc @@ -129,15 +129,26 @@ Figured_bass_engraver::start_translation_timestep () new_events_.clear (); for (vsize i = 0; i < groups_.size (); i++) groups_[i].current_event_ = 0; + continuation_ = false; + + } IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, rest); void Figured_bass_engraver::listen_rest (Stream_event *ev) { - new_event_found_ = true; - rest_event_ = ev; + if (to_boolean (get_property ("ignoreFiguredBassRest"))) + { + new_event_found_ = true; + + /* + No ASSIGN_EVENT_ONCE() ; otherwise we get warnings about + polyphonic rests. + */ + rest_event_ = ev; + } } IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, bass_figure); @@ -145,22 +156,25 @@ void Figured_bass_engraver::listen_bass_figure (Stream_event *ev) { new_event_found_ = true; - stop_moment_ = now_mom () + get_event_length (ev); - - SCM fig = ev->get_property ("figure"); - for (vsize i = 0; i < groups_.size (); i++) + Moment stop = now_mom () + get_event_length (ev); + stop_moment_ = max (stop_moment_, stop); + + if (to_boolean (get_property ("useBassFigureExtenders"))) { - if (!groups_[i].current_event_ - && ly_is_equal (groups_[i].number_, fig)) + SCM fig = ev->get_property ("figure"); + for (vsize i = 0; i < groups_.size (); i++) { - groups_[i].current_event_ = ev; - groups_[i].force_no_continuation_ - = to_boolean (ev->get_property ("no-continuation")); - continuation_ = true; - return; + if (!groups_[i].current_event_ + && ly_is_equal (groups_[i].number_, fig)) + { + groups_[i].current_event_ = ev; + groups_[i].force_no_continuation_ + = to_boolean (ev->get_property ("no-continuation")); + continuation_ = true; + return; + } } - } - + } new_events_.push_back (ev); } @@ -272,6 +286,9 @@ Figured_bass_engraver::add_brackets () void Figured_bass_engraver::process_music () { + if (!to_boolean (get_property ("useBassFigureExtenders"))) + clear_spanners (); + if (rest_event_) { clear_spanners (); @@ -339,7 +356,7 @@ Figured_bass_engraver::process_music () vector junk_continuations; for (vsize i = 0; i < groups_.size(); i++) { - Figure_group &group = groups_[i]; + Figure_group &group = groups_[i]; if (group.is_continuation ()) { @@ -474,8 +491,6 @@ ADD_TRANSLATOR (Figured_bass_engraver, "BassFigureContinuation " "BassFigureLine " , - /* accept */ - "bass-figure-event rest-event", /* read */ "figuredBassAlterationDirection " @@ -483,6 +498,7 @@ ADD_TRANSLATOR (Figured_bass_engraver, "figuredBassFormatter " "implicitBassFigures " "useBassFigureExtenders " + "ignoreFiguredBassRest " , /* write */