]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/ligature-bracket-engraver.cc
Run sort-lines on .gitignore.
[lilypond.git] / lily / ligature-bracket-engraver.cc
index 9d00279b1c00d8441f4edf509c5e403477195747..85cd473ecd21ee4e0ffbb5bdd7a281bd9c687700 100644 (file)
@@ -3,13 +3,18 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 2002--2005 Juergen Reuter <reuter@ipd.uka.de>
+  (c) 2002--2007 Juergen Reuter <reuter@ipd.uka.de>
 */
 
 #include "ligature-engraver.hh"
 #include "note-column.hh"
 #include "tuplet-bracket.hh"
 #include "spanner.hh"
+#include "stream-event.hh"
+#include "spanner.hh"
+#include "item.hh"
+
+#include "translator.icc"
 
 /*
  * This engraver marks ligatures of any kind by just printing a
@@ -21,12 +26,22 @@ class Ligature_bracket_engraver : public Ligature_engraver
 {
 protected:
   virtual Spanner *create_ligature_spanner ();
-  DECLARE_ACKNOWLEDGER(rest);
-  DECLARE_ACKNOWLEDGER(note_column);
+  virtual void typeset_ligature (Spanner *ligature,
+                                vector<Grob_info> primitives);
+  DECLARE_ACKNOWLEDGER (rest);
+  DECLARE_ACKNOWLEDGER (note_column);
+  DECLARE_TRANSLATOR_LISTENER (ligature);
 public:
   TRANSLATOR_DECLARATIONS (Ligature_bracket_engraver);
 };
 
+IMPLEMENT_TRANSLATOR_LISTENER (Ligature_bracket_engraver, ligature);
+void
+Ligature_bracket_engraver::listen_ligature (Stream_event *ev)
+{
+  Ligature_engraver::listen_ligature (ev);
+}
+
 Ligature_bracket_engraver::Ligature_bracket_engraver ()
 {
 }
@@ -37,6 +52,12 @@ Ligature_bracket_engraver::create_ligature_spanner ()
   return make_spanner ("LigatureBracket", SCM_EOL);
 }
 
+void
+Ligature_bracket_engraver::typeset_ligature (Spanner *, vector<Grob_info>)
+{
+  // no real ligature to typeset; the LigatureBracket just does it
+}
+
 void
 Ligature_bracket_engraver::acknowledge_note_column (Grob_info info)
 {
@@ -44,6 +65,10 @@ Ligature_bracket_engraver::acknowledge_note_column (Grob_info info)
     {
       Tuplet_bracket::add_column (current_ligature (),
                                  dynamic_cast<Item *> (info.grob ()));
+
+      // avoid "junking empty ligature" message by acknowledging dummy
+      // note head
+      Ligature_engraver::acknowledge_note_head (Grob_info ());
     }
 }
 
@@ -54,14 +79,11 @@ Ligature_bracket_engraver::acknowledge_rest (Grob_info info)
     Ligature_engraver::acknowledge_rest (info);
 }
 
-#include "translator.icc"
+ADD_ACKNOWLEDGER (Ligature_bracket_engraver, rest);
+ADD_ACKNOWLEDGER (Ligature_bracket_engraver, note_column);
 
-ADD_ACKNOWLEDGER(Ligature_bracket_engraver, rest);
-ADD_ACKNOWLEDGER(Ligature_bracket_engraver, note_column);
 ADD_TRANSLATOR (Ligature_bracket_engraver,
-               /* descr */ "Handles Ligature_events by engraving Ligature brackets.",
-               /* creats*/ "TupletBracket",
-               /* accepts */ "ligature-event",
-               /* acks  */ "",
-               /* reads */ "",
+               /* doc */ "Handles Ligature_events by engraving Ligature brackets.",
+               /* create */ "TupletBracket",
+               /* read */ "",
                /* write */ "");