X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmulti-measure-rest-engraver.cc;h=51ff44654231651913b3ddc33fbe5a4ae4449007;hb=0cf97b5cdceecbba937f43ac827f4065aad5001e;hp=8dd071d6d5acbe89dd185b897644eafbb2cf3673;hpb=75be12aa75a535af753d6125bfc03da3ee303b36;p=lilypond.git diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc index 8dd071d6d5..51ff446542 100644 --- a/lily/multi-measure-rest-engraver.cc +++ b/lily/multi-measure-rest-engraver.cc @@ -1,7 +1,7 @@ /* multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver - (c) 1998 Jan Nieuwenhuizen + (c) 1998--1999 Jan Nieuwenhuizen Han-Wen Nienhuys */ @@ -11,11 +11,6 @@ #include "multi-measure-rest-engraver.hh" #include "score-column.hh" #include "time-description.hh" -//#include "paper-score.hh" -//#include "p-score.hh" -//#include "paper-def.hh" -//#include "main.hh" -//#include "global-translator.hh" #include "bar.hh" @@ -27,6 +22,8 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver () rest_moments_[START] = rest_moments_[STOP] =0; multi_measure_req_l_ = 0; + + lastrest_p_ =0; mmrest_p_ = 0; } @@ -45,20 +42,28 @@ Multi_measure_rest_engraver::acknowledge_element (Score_element_info i) bool Multi_measure_rest_engraver::do_try_music (Music* req_l) { - if (Multi_measure_rest_req *mr = dynamic_cast (req_l)) - { - if (multi_measure_req_l_) - if (!multi_measure_req_l_->equal_b (mr) - || rest_moments_[START] != now_moment ()) - return false; - - multi_measure_req_l_ = mr; - rest_moments_[START] = now_moment (); - - rest_moments_[STOP] = rest_moments_[START] + multi_measure_req_l_->duration_.length (); - return true; - } - return false; + Rhythmic_req *r=0; + if (Multi_measure_rest_req *mr = + dynamic_cast (req_l)) + r=mr; + else if (Repetitions_req *rr = + dynamic_cast (req_l)) + r=rr; + if (r) + { + if (multi_measure_req_l_) + if (!multi_measure_req_l_->equal_b (r) + || rest_moments_[START] != now_mom ()) + return false; + + multi_measure_req_l_ = r; + rest_moments_[START] = now_mom (); + + rest_moments_[STOP] = rest_moments_[START] + + multi_measure_req_l_->duration_.length_mom (); + return true; + } + return false; } void @@ -68,6 +73,9 @@ Multi_measure_rest_engraver::do_process_requests () { Time_description const *time = get_staff_info().time_C_; mmrest_p_ = new Multi_measure_rest; + if(dynamic_cast (multi_measure_req_l_)) + mmrest_p_->set_elt_property (alt_symbol_scm_sym, + ly_ch_C_to_scm ("scripts-repeatsign")); announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_)); start_measure_i_ = time->bars_i_; } @@ -76,7 +84,7 @@ Multi_measure_rest_engraver::do_process_requests () void Multi_measure_rest_engraver::do_pre_move_processing () { - Moment now (now_moment ()); + Moment now (now_mom ()); Time_description const *time = get_staff_info().time_C_; if (mmrest_p_ && (now >= rest_moments_[START]) && !time->whole_in_measure_ @@ -98,7 +106,7 @@ void Multi_measure_rest_engraver::do_post_move_processing () { Time_description const *time = get_staff_info().time_C_; - Moment now (now_moment ()); + Moment now (now_mom ()); if (mmrest_p_ && !time->whole_in_measure_) {