*/
#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
{
}
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
Horizontal_align_item::Horizontal_align_item()
{
+ center_l_ = 0;
align_i_ = 0;
empty_b_ = true;
transparent_b_ = true;
(c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
*/
-
+#include "bar.hh"
#include "break-align-item.hh"
#include "score-halign-reg.hh"
#include "score-align-reg.hh"
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);