]> git.donarmstrong.com Git - lilypond.git/blob - lily/ligature-bracket-engraver.cc
* lily/context.cc (where_defined): also assign value in
[lilypond.git] / lily / ligature-bracket-engraver.cc
1 /*
2   ligature-bracket-engraver.cc -- implement Ligature_bracket_engraver
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2002--2005 Juergen Reuter <reuter@ipd.uka.de>
7 */
8
9 #include "ligature-engraver.hh"
10 #include "note-column.hh"
11 #include "tuplet-bracket.hh"
12 #include "spanner.hh"
13
14 /*
15  * This engraver marks ligatures of any kind by just printing a
16  * horizontal square bracket on top of each ligature.  See class
17  * Ligature_engraver for more information on the interaction between
18  * this class and its superclass.
19  */
20 class Ligature_bracket_engraver : public Ligature_engraver
21 {
22 protected:
23   virtual Spanner *create_ligature_spanner ();
24   DECLARE_ACKNOWLEDGER(rest);
25   DECLARE_ACKNOWLEDGER(note_column);
26 public:
27   TRANSLATOR_DECLARATIONS (Ligature_bracket_engraver);
28 };
29
30 Ligature_bracket_engraver::Ligature_bracket_engraver ()
31 {
32 }
33
34 Spanner *
35 Ligature_bracket_engraver::create_ligature_spanner ()
36 {
37   return make_spanner ("LigatureBracket", SCM_EOL);
38 }
39
40 void
41 Ligature_bracket_engraver::acknowledge_note_column (Grob_info info)
42 {
43   if (current_ligature ())
44     {
45       Tuplet_bracket::add_column (current_ligature (),
46                                   dynamic_cast<Item *> (info.grob ()));
47     }
48 }
49
50 void
51 Ligature_bracket_engraver::acknowledge_rest (Grob_info info)
52 {
53   if (current_ligature ())
54     Ligature_engraver::acknowledge_rest (info);
55 }
56
57 #include "translator.icc"
58
59 ADD_ACKNOWLEDGER(Ligature_bracket_engraver, rest);
60 ADD_ACKNOWLEDGER(Ligature_bracket_engraver, note_column);
61 ADD_TRANSLATOR (Ligature_bracket_engraver,
62                 /* descr */ "Handles Ligature_events by engraving Ligature brackets.",
63                 /* creats*/ "TupletBracket",
64                 /* accepts */ "ligature-event",
65                 /* reads */ "",
66                 /* write */ "");