]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/rest-engraver.cc
release: 1.3.0
[lilypond.git] / lily / rest-engraver.cc
index 96c40d75c2a79cef0426e924c20b2571f5da386b..939baa21612a12f04c016b1f7c02a937db5190eb 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "rest-engraver.hh"
@@ -48,27 +48,34 @@ Rest_engraver::do_process_requests ()
     {
       rest_p_ = new Rest;
       rest_p_->balltype_i_ = rest_req_l_->duration_.durlog_i_; 
-      rest_p_->dots_i_ = rest_req_l_->duration_.dots_i_;
-      if (rest_p_->dots_i_)
+
+      if (rest_req_l_->duration_.dots_i_)
        {
          dot_p_ = new Dots;
          rest_p_->dots_l_  =dot_p_;
+         dot_p_->dots_i_ = rest_req_l_->duration_.dots_i_;       
          announce_element (Score_element_info (dot_p_,0));
        }
+      if (rest_p_->balltype_i_ >= 2) 
+       {
+         SCM reststyle = get_property ("restStyle", 0);
+         if (gh_string_p (reststyle))
+           rest_p_->set_elt_property (style_scm_sym,reststyle);
+       }
       announce_element (Score_element_info (rest_p_, rest_req_l_));
     }
 }
 
 bool
-Rest_engraver::do_try_request (Request *r)
+Rest_engraver::do_try_music (Music *req)
 {
-  Musical_req *m = r->access_Musical_req ();
-  if (!m || !m->access_Rest_req ())
-    return false;
-
-  rest_req_l_ = m->access_Rest_req (); // ugh
-  return true;
+  if (Rest_req *r = dynamic_cast <Rest_req *> (req))
+    {
+      rest_req_l_ = r;
+      return true;
+    }  
+  return false;
 }
 
-IMPLEMENT_IS_TYPE_B1(Rest_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR(Rest_engraver);