X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fbeam-engraver.cc;h=ebd09d3dffd8705e91373ad97d5623c14060b92d;hb=283f0dd4b527be207e2a497a3c864370a9dbc5e6;hp=a2f315962b75ccaba6cd1a1231737de76ae32cdd;hpb=ae0a8ce9764d714e026ed7c6f24502ac10df3797;p=lilypond.git diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index a2f315962b..ebd09d3dff 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -29,7 +29,14 @@ Beam_engraver::do_try_music (Music *m) { if (Beam_req * c = dynamic_cast(m)) { - reqs_drul_[c->spantype_] = c; + Direction d =c->spantype_; + + if (d == STOP && !beam_p_) + { + m->warning ("No Beam to end"); + return false; + } + reqs_drul_[d ] = c; return true; } return false; @@ -52,6 +59,12 @@ Beam_engraver::do_process_requests () if (reqs_drul_[START]) { + if (beam_p_) + { + reqs_drul_[START]->warning ("Already have a Beam"); + return; + } + beam_p_ = new Beam; grouping_p_ = new Rhythmic_grouping; @@ -63,19 +76,15 @@ Beam_engraver::do_process_requests () if (prop.isnum_b ()) beam_p_->quantisation_ = (Beam::Quantisation)(int)prop; - // silly try at interstaff beam // must set minVerticalAlign == maxVerticalAlign to get sane results // see input/test/beam-interstaff.ly prop = get_property ("minVerticalAlign", 0); if (prop.isnum_b ()) - beam_p_->vertical_align_f_ = prop; + beam_p_->vertical_align_drul_[MIN] = prop; prop = get_property ("maxVerticalAlign", 0); if (prop.isnum_b ()) - { - beam_p_->vertical_align_f_ += (Real)prop; - beam_p_->vertical_align_f_ /= (Real)2; - } + beam_p_->vertical_align_drul_[MAX] = prop; announce_element (Score_element_info (beam_p_, reqs_drul_[START])); } @@ -115,9 +124,13 @@ void Beam_engraver::do_removal_processing () { typeset_beam (); - finished_beam_p_ = beam_p_; - finished_grouping_p_ = grouping_p_; - typeset_beam (); + if (beam_p_) + { + warning ("Unfinished beam"); + finished_beam_p_ = beam_p_; + finished_grouping_p_ = grouping_p_; + typeset_beam (); + } } void @@ -146,6 +159,7 @@ Beam_engraver::acknowledge_element (Score_element_info info) if (rhythmic_req->duration_.durlog_i_<= 2) { rhythmic_req->warning (_ ("stem doesn't fit in beam")); + reqs_drul_[LEFT]->warning (_("beam was started here")); return; }