Nitpick: ly:spanner-bound grob name slur -> spanner.
[lilypond.git] / lily / dots-engraver.cc
blob9d1af7779b31d157b7bc8cb1636fb7f061f028e4
1 /*
2 dots-engraver.cc -- implement Dots_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2006--2009 Han-Wen Nienhuys <hanwen@lilypond.org>
8 */
10 #include "engraver.hh"
11 #include "duration.hh"
12 #include "item.hh"
13 #include "rhythmic-head.hh"
14 #include "stream-event.hh"
16 #include "translator.icc"
19 class Dots_engraver : public Engraver
21 DECLARE_ACKNOWLEDGER (rhythmic_head);
22 TRANSLATOR_DECLARATIONS (Dots_engraver);
25 Dots_engraver::Dots_engraver ()
29 void
30 Dots_engraver::acknowledge_rhythmic_head (Grob_info gi)
32 Stream_event *cause = gi.event_cause ();
33 if (!cause)
34 return;
36 Grob *note = gi.grob ();
37 if (unsmob_grob (note->get_object ("dot")))
38 return;
40 Duration *dur = unsmob_duration (cause->get_property ("duration"));
41 if (dur && dur->dot_count ())
43 Item *d = make_item ("Dots", note->self_scm ());
44 Rhythmic_head::set_dots (note, d);
46 d->set_property ("dot-count", scm_from_int (dur->dot_count ()));
47 d->set_parent (note, Y_AXIS);
52 ADD_ACKNOWLEDGER (Dots_engraver, rhythmic_head);
54 ADD_TRANSLATOR (Dots_engraver,
55 "Create @ref{Dots} objects for"
56 " @ref{rhythmic-head-interface}s.",
58 /* create */
59 "Dots ",
61 /* read */
62 "",
64 /* write */