]> git.donarmstrong.com Git - lilypond.git/blob - lily/melody-engraver.cc
557da5a0123198efa51b55eb67f98b5f7b8e5655
[lilypond.git] / lily / melody-engraver.cc
1 /*
2   melody-engraver.cc -- implement Melody_engraver
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997--2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
7 */
8
9
10 #include "engraver.hh"
11
12 #include "item.hh"
13 #include "melody-spanner.hh"
14 #include "pointer-group-interface.hh"
15
16 /**
17    Make stems upon receiving noteheads.
18 */
19 class Melody_engraver : public Engraver
20 {
21   Grob *melody_item_;
22 protected:
23   
24   DECLARE_ACKNOWLEDGER (stem);
25   TRANSLATOR_DECLARATIONS (Melody_engraver);
26 };
27
28
29 Melody_engraver::Melody_engraver ()
30 {
31   melody_item_ = 0;
32 }
33
34 void
35 Melody_engraver::acknowledge_stem (Grob_info info)
36 {
37   extract_grob_set (info.grob (), "rests", rests);
38   if (rests.size ())
39     melody_item_ = 0;
40   else
41     {
42       if (!melody_item_)
43         melody_item_ = make_item ("MelodyItem", info.grob ()->self_scm ());
44
45       Melody_spanner::add_stem (melody_item_, info.grob ());
46     }
47 }
48
49 #include "translator.icc"
50 ADD_ACKNOWLEDGER (Melody_engraver, stem);
51 ADD_TRANSLATOR (Melody_engraver,
52                 "Create information for context dependent typesetting decisions. ",
53                 "MelodyItem",
54                 "",
55                 "",
56                 "");
57