]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/lyric-engraver.cc
Merge branch 'master' of git://git.sv.gnu.org/lilypond
[lilypond.git] / lily / lyric-engraver.cc
index 176c9b7166157228e5eb82571d6685a5236bd671..06ffce0d50ad4cc354015a88e4e623beb2d1da53 100644 (file)
@@ -9,11 +9,12 @@
 
 #include "context.hh"
 #include "engraver.hh"
-#include "font-metric.hh"
 #include "item.hh"
-#include "multi-measure-rest.hh"
 #include "note-head.hh"
-#include "rest.hh"
+#include "stream-event.hh"
+#include "international.hh"
+
+#include "translator.icc"
 
 /**
    Generate texts for lyric syllables.  We only do one lyric at a time.
@@ -23,14 +24,14 @@ class Lyric_engraver : public Engraver
 {
 protected:
   void stop_translation_timestep ();
-  virtual bool try_music (Music *);
   void process_music ();
+  DECLARE_TRANSLATOR_LISTENER (lyric);
 
 public:
   TRANSLATOR_DECLARATIONS (Lyric_engraver);
 
 private:
-  Music *event_;
+  Stream_event *event_;
   Item *text_;
   Item *last_text_;
 
@@ -44,15 +45,11 @@ Lyric_engraver::Lyric_engraver ()
   event_ = 0;
 }
 
-bool
-Lyric_engraver::try_music (Music *r)
+IMPLEMENT_TRANSLATOR_LISTENER (Lyric_engraver, lyric);
+void
+Lyric_engraver::listen_lyric (Stream_event *ev)
 {
-  if (!event_)
-    {
-      event_ = r;
-      return true;
-    }
-  return false;
+  ASSIGN_EVENT_ONCE (event_, ev);
 }
 
 void
@@ -70,7 +67,6 @@ Lyric_engraver::process_music ()
       else
        {
          text_ = make_item ("LyricText", event_->self_scm ());
-         text_->set_property ("text", text);
        }
     }
 }
@@ -149,6 +145,11 @@ Lyric_engraver::stop_translation_timestep ()
              if (melisma_busy (voice))
                text_->set_property ("self-alignment-X", scm_from_int (LEFT));
            }
+         else
+           {
+             text_->warning (_ ("Lyric syllable does not have note. Use \\lyricsto or associatedVoice."));
+             text_->set_property ("X-offset", scm_from_int (0));
+           }
        }
 
       last_text_ = text_;
@@ -157,11 +158,8 @@ Lyric_engraver::stop_translation_timestep ()
   event_ = 0;
 }
 
-#include "translator.icc"
-
 ADD_TRANSLATOR (Lyric_engraver,
                /* doc */ "",
                /* create */ "LyricText",
-               /* accept */ "lyric-event",
                /* read */ "",
                /* write */ "");