]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/arpeggio-engraver.cc
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / lily / arpeggio-engraver.cc
index 633d924e5a950f03a1ff8847e8b196bd2beddfb5..fd28a41e1fc4ce36a726a273e78e444572495baf 100644 (file)
@@ -13,7 +13,6 @@
 #include "stem.hh"
 #include "rhythmic-head.hh"
 #include "side-position-interface.hh"
-#include "stream-event.hh"
 #include "note-column.hh"
 
 #include "translator.icc"
@@ -29,10 +28,10 @@ public:
 protected:
   void process_music ();
   void stop_translation_timestep ();
-  DECLARE_TRANSLATOR_LISTENER (arpeggio);
+  virtual bool try_music (Music *);
 private:
   Item *arpeggio_;
-  Stream_event *arpeggio_event_;
+  Music *arpeggio_event_;
 };
 
 Arpeggio_engraver::Arpeggio_engraver ()
@@ -41,10 +40,12 @@ Arpeggio_engraver::Arpeggio_engraver ()
   arpeggio_event_ = 0;
 }
 
-IMPLEMENT_TRANSLATOR_LISTENER (Arpeggio_engraver, arpeggio);
-void Arpeggio_engraver::listen_arpeggio (Stream_event *ev)
+bool
+Arpeggio_engraver::try_music (Music *m)
 {
-  ASSIGN_EVENT_ONCE (arpeggio_event_, ev);
+  if (!arpeggio_event_)
+    arpeggio_event_ = m;
+  return true;
 }
 
 void
@@ -83,9 +84,7 @@ void
 Arpeggio_engraver::process_music ()
 {
   if (arpeggio_event_)
-    {
-      arpeggio_ = make_item ("Arpeggio", arpeggio_event_->self_scm ());
-    }
+    arpeggio_ = make_item ("Arpeggio", arpeggio_event_->self_scm ());
 }
 
 void
@@ -95,13 +94,13 @@ Arpeggio_engraver::stop_translation_timestep ()
   arpeggio_event_ = 0;
 }
 
-ADD_ACKNOWLEDGER (Arpeggio_engraver, stem);
-ADD_ACKNOWLEDGER (Arpeggio_engraver, rhythmic_head);
-ADD_ACKNOWLEDGER (Arpeggio_engraver, note_column);
+ADD_ACKNOWLEDGER (Arpeggio_engraver, stem)
+  ADD_ACKNOWLEDGER (Arpeggio_engraver, rhythmic_head)
+  ADD_ACKNOWLEDGER (Arpeggio_engraver, note_column)
 
-ADD_TRANSLATOR (Arpeggio_engraver,
-               /* doc */ "Generate an Arpeggio symbol",
-               /* create */ "Arpeggio",
-               /* accept */ "arpeggio-event",
-               /* read */ "",
-               /* write */ "");
+  ADD_TRANSLATOR (Arpeggio_engraver,
+                 /* doc */ "Generate an Arpeggio symbol",
+                 /* create */ "Arpeggio",
+                 /* accept */ "arpeggio-event",
+                 /* read */ "",
+                 /* write */ "");