2 span-brace-engraver.cc -- implement Span_brace_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 Jan Nieuwenhuizen <jan@digicash.com>
10 #include "span-brace-item.hh"
11 #include "span-brace-engraver.hh"
12 #include "vertical-align-spanner.hh"
14 IMPLEMENT_STATIC_NAME(Span_brace_engraver);
15 IMPLEMENT_IS_TYPE_B1(Span_brace_engraver,Engraver);
16 ADD_THIS_ENGRAVER(Span_brace_engraver);
18 Span_brace_engraver::Span_brace_engraver()
24 Span_brace_engraver::~Span_brace_engraver()
29 Span_brace_engraver::acknowledge_element( Score_elem_info i )
31 if ( i.elem_l_->is_type_b( Bar::static_name() ) ) {
32 bar_l_arr_.push( (Bar*)i.elem_l_->item() );
34 if ( bar_l_arr_.size() >= 2 && !span_brace_p_ ) {
35 span_brace_p_ = new Span_brace_item;
36 announce_element( Score_elem_info( span_brace_p_, 0 ) );
39 else if ( i.elem_l_->is_type_b( Vertical_align_spanner::static_name() )
40 && i.origin_grav_l_arr_.size() <= 2 )
41 valign_l_ = (Vertical_align_spanner*)i.elem_l_->spanner();
45 Span_brace_engraver::do_pre_move_processing()
47 if ( span_brace_p_ ) {
48 for ( int i=0; i < bar_l_arr_.size() ; i++ )
49 span_brace_p_->add( bar_l_arr_[ i ] );
50 span_brace_p_->set( valign_l_ );
51 typeset_breakable_item( span_brace_p_ );