]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/multi-measure-rest-engraver.cc
release: 1.1.6
[lilypond.git] / lily / multi-measure-rest-engraver.cc
index 56a3b8d93c4b6abf9628902a7f73af467709264d..ad1b82d413f0ff8914314808ac9b749fec38717b 100644 (file)
@@ -1,8 +1,8 @@
 /*
   multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
-       Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+       Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
@@ -12,7 +12,7 @@
 #include "score-column.hh"
 #include "time-description.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Multi_measure_rest_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR (Multi_measure_rest_engraver);
 
 Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
@@ -24,22 +24,22 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
 }
 
 bool
-Multi_measure_rest_engraver::do_try_request (Request* req_l)
+Multi_measure_rest_engraver::do_try_music (Music* req_l)
 {
-  if (!req_l->musical () || !req_l->musical ()->multi_measure ())
-    return false;
-
-  if (multi_measure_req_l_)
-    if (!multi_measure_req_l_->equal_b (req_l)
-       || req_start_mom_ != now_moment ())
-      return false;
+ if (Multi_measure_rest_req *mr = dynamic_cast<Multi_measure_rest_req *> (req_l))
+   {
+     if (multi_measure_req_l_)
+       if (!multi_measure_req_l_->equal_b (mr)
+          || req_start_mom_ != now_moment ())
+        return false;
   
-  multi_measure_req_l_ = req_l->musical ()->multi_measure ();
-  req_start_mom_ = now_moment ();
-  
-  rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
-
-  return true;
+     multi_measure_req_l_ = mr;
+     req_start_mom_ = now_moment ();
+     
+     rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
+     return true;
+   }
+ return false;
 }
 
 void
@@ -50,7 +50,7 @@ Multi_measure_rest_engraver::do_process_requests ()
       Time_description const *time = get_staff_info().time_C_;
       mmrest_p_ = new Multi_measure_rest;
       rest_item_creation_mom_ =  time->when_mom ();
-      announce_element (Score_elem_info (mmrest_p_, multi_measure_req_l_));
+      announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_));
       start_measure_i_ = time->bars_i_;
     }
 }