]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/ligature-bracket-engraver.cc
(process_acknowledged): don't create
[lilypond.git] / lily / ligature-bracket-engraver.cc
index 9eddeb71daf22f3bb5958a45364c24a080546c21..4e73a7df2fae309bf582dce71a077995925cc3a5 100644 (file)
@@ -3,7 +3,7 @@
 
   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"
@@ -21,7 +21,10 @@ class Ligature_bracket_engraver : public Ligature_engraver
 {
 protected:
   virtual Spanner *create_ligature_spanner ();
-  virtual void acknowledge_grob (Grob_info);
+  virtual void typeset_ligature (Spanner *ligature,
+                                vector<Grob_info> primitives);
+  DECLARE_ACKNOWLEDGER (rest);
+  DECLARE_ACKNOWLEDGER (note_column);
 public:
   TRANSLATOR_DECLARATIONS (Ligature_bracket_engraver);
 };
@@ -37,23 +40,39 @@ Ligature_bracket_engraver::create_ligature_spanner ()
 }
 
 void
-Ligature_bracket_engraver::acknowledge_grob (Grob_info info)
+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)
 {
   if (current_ligature ())
     {
-      if (Note_column::has_interface (info.grob ()))
-       {
-         Tuplet_bracket::add_column (current_ligature (),
-                                     dynamic_cast<Item *> (info.grob ()));
-       }
-      else Ligature_engraver::acknowledge_grob (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 ());
     }
 }
 
+void
+Ligature_bracket_engraver::acknowledge_rest (Grob_info info)
+{
+  if (current_ligature ())
+    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",
-               /* acks  */ "rest-interface note-column-interface",
-               /* reads */ "",
+               /* doc */ "Handles Ligature_events by engraving Ligature brackets.",
+               /* create */ "TupletBracket",
+               /* accept */ "ligature-event",
+               /* read */ "",
                /* write */ "");