staff-symbol-referencer.cc: Junk redundant functions.
[lilypond.git] / lily / rest-collision-engraver.cc
blobecc3164c7c5d8d4f6e2f5a7cb439b5aa1dd3b891
1 /*
2 rest-collision-engraver.cc -- implement Rest_collision_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
7 */
9 #include "warn.hh"
10 #include "engraver.hh"
11 #include "rest-collision.hh"
12 #include "note-column.hh"
13 #include "item.hh"
15 class Rest_collision_engraver : public Engraver
17 Item *rest_collision_;
18 vsize rest_count_;
19 vector<Grob*> note_columns_;
20 protected:
21 DECLARE_ACKNOWLEDGER (note_column);
22 void process_acknowledged ();
23 void stop_translation_timestep ();
24 public:
25 TRANSLATOR_DECLARATIONS (Rest_collision_engraver);
28 Rest_collision_engraver::Rest_collision_engraver ()
30 rest_collision_ = 0;
31 rest_count_ = 0;
34 void
35 Rest_collision_engraver::process_acknowledged ()
37 if (rest_collision_
38 || note_columns_.empty ()
39 || !rest_count_
40 || (note_columns_.size () == rest_count_
41 && rest_count_ < 2))
42 return;
44 rest_collision_ = make_item ("RestCollision", SCM_EOL);
46 for (vsize i = 0; i < note_columns_.size (); i++)
47 Rest_collision::add_column (rest_collision_, note_columns_[i]);
50 void
51 Rest_collision_engraver::acknowledge_note_column (Grob_info i)
53 note_columns_.push_back (i.grob ());
54 if (Note_column::has_rests (i.grob ()))
55 rest_count_++;
58 void
59 Rest_collision_engraver::stop_translation_timestep ()
61 rest_collision_ = 0;
62 note_columns_.clear ();
63 rest_count_ = 0;
66 #include "translator.icc"
68 ADD_ACKNOWLEDGER (Rest_collision_engraver, note_column);
69 ADD_TRANSLATOR (Rest_collision_engraver,
70 /* doc */
71 "Handle collisions of rests.",
73 /* create */
74 "RestCollision ",
76 /* read */
77 "",
79 /* write */