2 span-bar-grav.cc -- implement Span_bar_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
10 #include "span-bar-grav.hh"
11 #include "vertical-align-spanner.hh"
13 Span_bar_engraver::Span_bar_engraver()
20 Span_bar_engraver::acknowledge_element(Score_elem_info i)
22 if ( i.elem_l_->is_type_b( Bar::static_name() ) ) {
23 bar_l_arr_.push( (Bar*)i.elem_l_->item() );
25 if (bar_l_arr_.size() >= 2 && !spanbar_p_) {
26 spanbar_p_ = new Span_bar;
27 announce_element( Score_elem_info(spanbar_p_,0) );
29 } else if (i.elem_l_->is_type_b( Vertical_align_spanner::static_name() )
30 && i.origin_grav_l_arr_.size() <= 2) {
31 valign_l_ = (Vertical_align_spanner*)i.elem_l_->spanner();
36 Span_bar_engraver::do_pre_move_processing()
39 for (int i=0; i < bar_l_arr_.size() ; i++)
40 spanbar_p_->add(bar_l_arr_[i]);
41 spanbar_p_->set( valign_l_ );
42 typeset_breakable_item(spanbar_p_);
45 bar_l_arr_.set_size( 0);
49 IMPLEMENT_STATIC_NAME(Span_bar_engraver);
50 IMPLEMENT_IS_TYPE_B1(Span_bar_engraver,Engraver);
51 ADD_THIS_ENGRAVER(Span_bar_engraver);