2 note-spacing-engraver.cc -- implement Note_spacing_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2006 Han-Wen Nienhuys <hanwen@lilypond.org>
10 #include "engraver.hh"
13 #include "pointer-group-interface.hh"
15 #include "translator.icc"
17 class Note_spacing_engraver : public Engraver
22 void add_spacing_item (Grob *);
24 TRANSLATOR_DECLARATIONS (Note_spacing_engraver);
27 DECLARE_ACKNOWLEDGER (rhythmic_grob);
28 DECLARE_ACKNOWLEDGER (note_column);
29 void stop_translation_timestep ();
32 Note_spacing_engraver::Note_spacing_engraver ()
39 Note_spacing_engraver::add_spacing_item (Grob *g)
43 spacing_ = make_item ("NoteSpacing", g->self_scm ());
49 Pointer_group_interface::add_grob (spacing_,
50 ly_symbol2scm ("left-items"),
55 Pointer_group_interface::add_grob (last_spacing_,
56 ly_symbol2scm ("right-items"),
64 Note_spacing_engraver::acknowledge_note_column (Grob_info gi)
66 add_spacing_item (gi.grob ());
70 Note_spacing_engraver::acknowledge_rhythmic_grob (Grob_info gi)
72 add_spacing_item (gi.grob ());
76 Note_spacing_engraver::stop_translation_timestep ()
80 last_spacing_ = spacing_;
85 ADD_ACKNOWLEDGER (Note_spacing_engraver, note_column);
86 ADD_ACKNOWLEDGER (Note_spacing_engraver, rhythmic_grob);
88 ADD_TRANSLATOR (Note_spacing_engraver,
89 /* doc */ "Generates NoteSpacing, an object linking horizontal lines for use in spacing.",
90 /* create */ "NoteSpacing",