]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/rest-engraver.cc
release: 1.5.29
[lilypond.git] / lily / rest-engraver.cc
index ce77975e2b606d63ffb322d04bb71b88a3b432c9..b64d874facf3d418de7fe90d03db11a7d7ea6e2f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "item.hh"
 #include "staff-symbol-referencer.hh"
@@ -17,16 +17,16 @@ class Rest_engraver : public Engraver
 {
   Rest_req *rest_req_l_;
   Item * dot_p_;
-  Score_element* rest_p_;
+  Grob* rest_p_;
 protected:
-  virtual bool do_try_music (Music *);
-  virtual void do_pre_move_processing ();
-  virtual void do_post_move_processing ();
-  virtual void do_process_music ();
+  virtual bool try_music (Music *);
+  virtual void stop_translation_timestep ();
+  virtual void start_translation_timestep ();
+  virtual void create_grobs ();
+
 public:
   
-  VIRTUAL_COPY_CONS(Translator);
-  Rest_engraver ();
+  TRANSLATOR_DECLARATIONS(Rest_engraver);
 };
 
 
@@ -41,58 +41,58 @@ Rest_engraver::Rest_engraver ()
 }
 
 void
-Rest_engraver::do_post_move_processing ()
+Rest_engraver::start_translation_timestep ()
 {
   rest_req_l_ =0;
 }
 
 void
-Rest_engraver::do_pre_move_processing ()
+Rest_engraver::stop_translation_timestep ()
 {
   if (rest_p_)
     {
-      typeset_element (rest_p_);
+      typeset_grob (rest_p_);
       rest_p_ =0;
     }
   if (dot_p_)
     {
-      typeset_element (dot_p_);
+      typeset_grob (dot_p_);
       dot_p_ =0;
     }    
 }
 
 void
-Rest_engraver::do_process_music ()
+Rest_engraver::create_grobs ()
 {
   if (rest_req_l_ && !rest_p_) 
     {
-      rest_p_ = new Item (get_property ("basicRestProperties"));
+      rest_p_ = new Item (get_property ("Rest"));
       Rhythmic_head::set_interface (rest_p_);
       Staff_symbol_referencer::set_interface (rest_p_);
-
       
-      rest_p_->set_elt_property ("duration-log",
-                                gh_int2scm (rest_req_l_->duration_.durlog_i_)); 
+      int durlog  = unsmob_duration (rest_req_l_->get_mus_property ("duration"))-> duration_log ();
       
-      if (rest_req_l_->duration_.dots_i_)
+      rest_p_->set_grob_property ("duration-log",
+                                 gh_int2scm (durlog));
+
+      int dots =unsmob_duration (rest_req_l_->get_mus_property ("duration"))->dot_count ();
+      
+      if (dots)
        {
-         dot_p_ = new Item (get_property ("basicDotsProperties"));
+         dot_p_ = new Item (get_property ("Dots"));
 
-         Staff_symbol_referencer::set_interface (dot_p_);
          Rhythmic_head::set_dots (rest_p_, dot_p_);
          dot_p_->set_parent (rest_p_, Y_AXIS);
-         dot_p_->add_offset_callback (Dots_quantised_position_callback_proc, Y_AXIS);
-         dot_p_->set_elt_property ("dot-count",
-                                   gh_int2scm (rest_req_l_->duration_.dots_i_));
-         announce_element (dot_p_,0);
+         dot_p_->set_grob_property ("dot-count", gh_int2scm (dots));
+         announce_grob (dot_p_,0);
        }
 
-      announce_element (rest_p_, rest_req_l_);
+      announce_grob (rest_p_, rest_req_l_);
     }
 }
 
 bool
-Rest_engraver::do_try_music (Music *m)
+Rest_engraver::try_music (Music *m)
 {
   if (Rest_req *r = dynamic_cast <Rest_req *> (m))
     {
@@ -103,4 +103,10 @@ Rest_engraver::do_try_music (Music *m)
 }
 
 
-ADD_THIS_TRANSLATOR(Rest_engraver);
+
+ENTER_DESCRIPTION(Rest_engraver,
+/* descr */       "",
+/* creats*/       "Rest Dots",
+/* acks  */       "",
+/* reads */       "",
+/* write */       "");