From: fred Date: Sun, 24 Mar 2002 20:14:44 +0000 (+0000) Subject: lilypond-1.0.16 X-Git-Tag: release/1.5.59~2941 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=03ce6c9290048ab17e98077b7b31daa473da268c;p=lilypond.git lilypond-1.0.16 --- diff --git a/lily/note-column.cc b/lily/note-column.cc index 1085a3c071..8f700129e5 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -38,9 +38,15 @@ Interval_t Note_column::head_positions_interval() const { ((Note_column*)this)->sort(); - return Interval_t (head_l_arr_[0]->position_i_, - head_l_arr_.top()->position_i_); + Interval_t iv; + + iv.set_empty (); + if (head_l_arr_.size ()) + iv = Interval_t(head_l_arr_[0]->position_i_, + head_l_arr_.top()->position_i_); + + return iv; } Interval diff --git a/lily/slur.cc b/lily/slur.cc index 14edd7b3e2..28bd21fa6e 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -38,6 +38,8 @@ Slur::Slur () void Slur::add_column (Note_column*n) { + if (!n->head_l_arr_.size ()) + warning (_ ("Putting slur over rest.")); encompass_arr_.push (n); add_dependency (n); } @@ -144,7 +146,8 @@ Slur::do_post_processing () /* normal slur */ - else if (extrema[d]->stem_l_ && !extrema[d]->stem_l_->transparent_b_) + else if (extrema[d]->stem_l_ && !extrema[d]->stem_l_->transparent_b_ + && extrema[d]->head_l_arr_.size ()) { Real notewidth_f = extrema[d]->width ().length (); dy_f_drul_[d] = (int)rint (extrema[d]->stem_l_->height ()[dir_]); @@ -157,17 +160,17 @@ Slur::do_post_processing () dx_f_drul_[d] += 0.25 * (dir_ * d) * d * notewidth_f; } } - else - { - Real notewidth_f = extrema[d]->width ().length (); - dy_f_drul_[d] = (int)rint (extrema[d]->head_positions_interval () - [dir_]) * internote_f; - dx_f_drul_[d] += 0.5 * notewidth_f - d * gap_f; + else + { + Real notewidth_f = extrema[d]->width ().length (); + dy_f_drul_[d] = (int)rint (extrema[d]->head_positions_interval () + [dir_]) * internote_f; + dx_f_drul_[d] += 0.5 * notewidth_f - d * gap_f; } - dy_f_drul_[d] += dir_ * interline_f; - if (extrema[d]->stem_l_ && (dir_ == extrema[d]->stem_l_->dir_)) - dy_f_drul_[d] -= dir_ * internote_f; - } + dy_f_drul_[d] += dir_ * interline_f; + if (extrema[d]->stem_l_ && (dir_ == extrema[d]->stem_l_->dir_)) + dy_f_drul_[d] -= dir_ * internote_f; + } while (flip(&d) != LEFT); // now that both are set, do dependent