]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/ligature-bracket-engraver.cc
Merge branch 'master' of ssh+git://jneem@git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / lily / ligature-bracket-engraver.cc
index b483f660586b841715d7ae76d18d640d8fd7292b..6e8dd9a22a9469cb878996252023b332b5d3e6a0 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--2006 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 ();
+  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,13 +79,10 @@ 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_TRANSLATOR (Ligature_bracket_engraver,
-               /* descr */ "Handles Ligature_events by engraving Ligature brackets.",
-               /* creats*/ "TupletBracket",
-               /* accepts */ "ligature-event",
-               /* reads */ "",
+               /* doc */ "Handles Ligature_events by engraving Ligature brackets.",
+               /* create */ "TupletBracket",
+               /* read */ "",
                /* write */ "");