]> git.donarmstrong.com Git - lilypond.git/blob - lily/score-halign-grav.cc
release: 0.1.7
[lilypond.git] / lily / score-halign-grav.cc
1 /*
2   score-halign-reg.cc -- implement Score_horizontal_align_engraver
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9 #include "bar.hh"
10 #include "break-align-item.hh"
11 #include "score-halign-grav.hh"
12 #include "score-align-grav.hh"
13
14 Score_horizontal_align_engraver::Score_horizontal_align_engraver()
15 {
16     halign_p_ =0;
17 }
18
19 void
20 Score_horizontal_align_engraver::do_pre_move_processing()
21 {
22     if (halign_p_) {
23         typeset_element(halign_p_);
24         halign_p_ =0;
25     }
26         
27 }
28
29 void
30 Score_horizontal_align_engraver::acknowledge_element(Score_elem_info i)
31 {
32     Engraver* reg = i.origin_grav_l_arr_[0];
33     if (reg->is_type_b( 
34         Score_align_engraver::static_name()) )
35     {
36         Score_align_engraver * align_grav_l = (Score_align_engraver*) reg;
37         if (!halign_p_) {
38             halign_p_ = new Break_align_item;
39             halign_p_->breakable_b_ = true;
40             announce_element(Score_elem_info(halign_p_,0));
41         }
42         Item * it = i.elem_l_->item();
43         if (align_grav_l->type_ch_C_ == Bar::static_name())
44             halign_p_->center_l_ = it;
45         
46         halign_p_->add(it, align_grav_l->priority_i_);
47     }
48 }
49
50 IMPLEMENT_IS_TYPE_B1(Score_horizontal_align_engraver,Engraver);
51 ADD_THIS_ENGRAVER(Score_horizontal_align_engraver);