]> git.donarmstrong.com Git - lilypond.git/blob - lily/rest-collision-engraver.cc
release: 1.0.1
[lilypond.git] / lily / rest-collision-engraver.cc
1 /*
2   rest-collision-reg.cc -- implement Rest_collision_engraver
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9 #include "debug.hh"
10 #include "rest-collision.hh"
11 #include "rest-collision-engraver.hh"
12 #include "collision.hh"
13 #include "note-column.hh"
14
15
16 IMPLEMENT_IS_TYPE_B1(Rest_collision_engraver, Engraver);
17 ADD_THIS_TRANSLATOR(Rest_collision_engraver);
18
19 Rest_collision_engraver::Rest_collision_engraver()
20 {
21   rest_collision_p_ =0;
22 }
23
24 void
25 Rest_collision_engraver::process_acknowledged ()
26 {
27   if (rest_collision_p_ ||   note_column_l_arr_.size () < 2)
28     return;
29
30   rest_collision_p_ = new Rest_collision;
31   announce_element (Score_element_info (rest_collision_p_, 0));
32   for (int i=0; i< note_column_l_arr_.size (); i++)
33     rest_collision_p_->add_column (note_column_l_arr_[i]);
34 }
35
36 void
37 Rest_collision_engraver::acknowledge_element (Score_element_info i)
38 {
39   if (i.elem_l_->is_type_b (Note_column::static_name()))
40     note_column_l_arr_.push ((Note_column*)i.elem_l_->access_Item ());
41 }
42
43 void
44 Rest_collision_engraver::do_pre_move_processing()
45 {
46   if (rest_collision_p_) 
47     {
48       typeset_element (rest_collision_p_);
49       rest_collision_p_ = 0;
50     }
51   note_column_l_arr_.clear ();
52 }