]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/glissando-engraver.cc
* lily/include/translator.icc: new file.
[lilypond.git] / lily / glissando-engraver.cc
index 7976601b7268a81bce566a8b4d06a75cbc66cd45..0ad3384bfa5bf48cffd600c59f5498922ee5a226 100644 (file)
@@ -1,13 +1,12 @@
-/*   
+/*
   note-head-line-engraver.cc -- implement Note_head_line_engraver
-  
+
   source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2003 Jan Nieuwenhuizen <janneke@gnu.org>
- */
+
+  (c) 2000--2005 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
 
 #include "warn.hh"
-#include "event.hh"
 #include "spanner.hh"
 #include "rhythmic-head.hh"
 #include "engraver.hh"
 class Glissando_engraver : public Engraver
 {
 public:
-  TRANSLATOR_DECLARATIONS(Glissando_engraver);
+  TRANSLATOR_DECLARATIONS (Glissando_engraver);
 
 protected:
   virtual void acknowledge_grob (Grob_info);
   virtual void finalize ();
-  virtual void stop_translation_timestep ();
+  PRECOMPUTED_VIRTUAL void stop_translation_timestep ();
   virtual bool try_music (Music *);
-  virtual void process_music ();
+  PRECOMPUTED_VIRTUAL void process_music ();
 private:
-  Spanner *line_; 
-  Spanner *last_line_; 
-  Musicevent_;
+  Spanner *line_;
+  Spanner *last_line_;
+  Music *event_;
 };
 
 Glissando_engraver::Glissando_engraver ()
@@ -40,7 +39,7 @@ Glissando_engraver::Glissando_engraver ()
 }
 
 bool
-Glissando_engraver::try_music (Musicm)
+Glissando_engraver::try_music (Music *m)
 {
   if (!event_)
     {
@@ -55,39 +54,35 @@ Glissando_engraver::process_music ()
 {
   if (event_)
     {
-      line_ = new Spanner (get_property ("Glissando"));
-      announce_grob (line_, event_->self_scm ());
+      line_ = make_spanner ("Glissando", event_->self_scm ());
     }
 }
 
-
 void
 Glissando_engraver::acknowledge_grob (Grob_info info)
 {
-  if (Rhythmic_head::has_interface (info.grob_))
+  if (Rhythmic_head::has_interface (info.grob ()))
     {
-      Grob * g = info.grob_;
+      Grob *g = info.grob ();
       if (line_)
        line_->set_bound (LEFT, g);
 
       if (last_line_)
        last_line_->set_bound (RIGHT, g);
-    }    
+    }
 }
 
-
 void
 Glissando_engraver::stop_translation_timestep ()
 {
   if (last_line_ && last_line_->get_bound (RIGHT))
     {
-      typeset_grob (last_line_);
-      last_line_ =0;
+      last_line_ = 0;
     }
   if (line_)
     {
-      if ( last_line_)
-       programming_error ("Overwriting glissando.");
+      if (last_line_)
+       programming_error ("overwriting glissando");
       last_line_ = line_;
     }
   line_ = 0;
@@ -99,24 +94,24 @@ Glissando_engraver::finalize ()
 {
   if (line_)
     {
-      String msg = _("Unterminated glissando.");
-      
+      String msg = _ ("unterminated glissando");
+
       if (event_)
        event_->origin ()->warning (msg);
       else
        warning (msg);
-      
+
       line_->suicide ();
-      line_ =0;
+      line_ = 0;
     }
 }
 
+#include "translator.icc"
 
-
-ENTER_DESCRIPTION(Glissando_engraver,
-/* descr */       "Engrave a glissandi",
-/* creats*/       "Glissando",
-/* accepts */     "glissando-event",
-/* acks  */       "rhythmic-head-interface",
-/* reads */       "followVoice",
-/* write */       "");
+ADD_TRANSLATOR (Glissando_engraver,
+               /* descr */ "Engrave a glissandi",
+               /* creats*/ "Glissando",
+               /* accepts */ "glissando-event",
+               /* acks  */ "rhythmic-head-interface",
+               /* reads */ "followVoice",
+               /* write */ "");