From: fred Date: Sun, 24 Mar 2002 19:53:37 +0000 (+0000) Subject: lilypond-0.1.7 X-Git-Tag: release/1.5.59~4128 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=15ea7bf0ab406f8e72aa939d1190940264e2a583;p=lilypond.git lilypond-0.1.7 --- diff --git a/lily/item.cc b/lily/item.cc index 083798be00..7553b8cf6b 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -14,9 +14,10 @@ Item::Item() { + breakable_b_ = false; + break_status_i_ = 0; pcol_l_ = 0; - broken_to_a_[0] - = broken_to_a_[1]=0; + broken_to_a_[0] = broken_to_a_[1]=0; } IMPLEMENT_IS_TYPE_B1(Item, Score_elem); @@ -33,11 +34,9 @@ Item::do_print() const Real Item::hpos_f()const { - return pcol_l_->hpos_f_ + offset().x; + return pcol_l_->hpos_f_ + absolute_coordinate(X_AXIS); } - - Line_of_score * Item::line_l()const { @@ -47,43 +46,42 @@ Item::line_l()const int Item::break_status_i() const { - PCol * c = pcol_l_; - if (c->breakable_b()) - return 0; - else if (!c->daddy_l_) - return 0; - else if (c == c->daddy_l_->prebreak_p_) - return -1; - else - return 1; + return break_status_i_; } void Item::copy_breakable_items() { + if ( broken_to_a_[0] || broken_to_a_[1] ) + return; + Item *new_copies[2]; for (int i=0; i < 2; i++) { Item * item_p = clone()->item(); item_p->copy_dependencies(*this); - /* add our pre and postbreaks blondly to our own y_group - Let Vertical_group_spanner figure out the mess. - */ - if ( y_group_l_ ) - y_group_l_->add_element( item_p ); - pscore_l_->typeset_item(item_p, pcol_l_, -1+ 2*i); + + item_p->break_status_i_ = -1+ 2*i; + pscore_l_->typeset_item(item_p, pcol_l_); item_p->handle_prebroken_dependencies(); - broken_to_a_[i] = item_p; + new_copies[i] =item_p; } + broken_to_a_= new_copies; } void Item::do_breakable_col_processing() { - PCol * c = pcol_l_; - if (!c->breakable_b()) + if (!breakable_b_ || !pcol_l_->breakable_b()) return; - + copy_breakable_items(); handle_prebroken_dependencies(); + + /* + Otherwise the broken items won't be pre_process()'ed. + */ + add_dependency( broken_to_a_[0] ); + add_dependency( broken_to_a_[1] ); + } Item* @@ -116,6 +114,6 @@ Item::find_prebroken_piece(PCol*c)const void Item::handle_prebroken_dependencies() { - if ( pcol_l_->breakable_b() || pcol_l_->daddy_l_ ) + if ( breakable_b_ ) Score_elem::handle_prebroken_dependencies(); }