From: fred Date: Sun, 24 Mar 2002 19:45:43 +0000 (+0000) Subject: lilypond-0.0.70pre X-Git-Tag: release/1.5.59~4591 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=56e39045d13e9f0a4b2372dd4ebce235eb4de2e1;p=lilypond.git lilypond-0.0.70pre --- diff --git a/lily/horizontal-align-item.cc b/lily/horizontal-align-item.cc index 6cfb0c00c0..46e2b67ee2 100644 --- a/lily/horizontal-align-item.cc +++ b/lily/horizontal-align-item.cc @@ -7,9 +7,11 @@ */ #include "horizontal-align-item.hh" + IMPLEMENT_STATIC_NAME(Horizontal_align_item); IMPLEMENT_IS_TYPE_B1(Horizontal_align_item,Item); + bool Horizontal_align_item::contains_b(Item *i)const { @@ -83,10 +85,18 @@ Horizontal_align_item::do_pre_processing() } Real where_f= total * (align_i_-1.0)/2.0; + Real center_dx_f = 0; for ( int i=0 ; i < item_l_arr_.size(); i++) { - item_l_arr_[i]->translate_x(where_f -dims[i][-1] ); + Real dx = where_f -dims[i][-1]; + item_l_arr_[i]->translate_x( dx ); + if (item_l_arr_[i] == center_l_) + center_dx_f = where_f; where_f += dims[i].length(); } + if (center_dx_f && !align_i_ ) + for ( int i=0 ; i < item_l_arr_.size(); i++) + item_l_arr_[i]->translate_x( - center_dx_f ); + } Interval @@ -102,6 +112,7 @@ Horizontal_align_item::do_print()const Horizontal_align_item::Horizontal_align_item() { + center_l_ = 0; align_i_ = 0; empty_b_ = true; transparent_b_ = true; diff --git a/lily/score-halign-reg.cc b/lily/score-halign-reg.cc index f2423f9461..748c018ffe 100644 --- a/lily/score-halign-reg.cc +++ b/lily/score-halign-reg.cc @@ -6,7 +6,7 @@ (c) 1997 Han-Wen Nienhuys */ - +#include "bar.hh" #include "break-align-item.hh" #include "score-halign-reg.hh" #include "score-align-reg.hh" @@ -33,12 +33,16 @@ Score_horizontal_align_register::acknowledge_element(Score_elem_info i) if (reg->is_type_b( Score_align_register::static_name()) ) { + Score_align_register * align_reg_l = (Score_align_register*) reg; if (!halign_p_) { halign_p_ = new Break_align_item; announce_element(Score_elem_info(halign_p_,0)); } - halign_p_->add(i.elem_l_->item(), - ((Score_align_register*)reg)->priority_i_ ); + Item * it = i.elem_l_->item(); + if (align_reg_l->type_ch_C_ == Bar::static_name()) + halign_p_->center_l_ = it; + + halign_p_->add(it, align_reg_l->priority_i_); } } IMPLEMENT_STATIC_NAME(Score_horizontal_align_register);