]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/percent-repeat-engraver.cc
release: 1.5.31
[lilypond.git] / lily / percent-repeat-engraver.cc
index 193a350c6cc6b6f09b9aca4be2ae9cbe1d36d111..6c9b69272ccccf08d3afa4dfac474b9530605205 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 2000--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 2000--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -36,8 +36,7 @@ class Percent_repeat_engraver : public Engraver
 {
   void typeset_perc ();
 public:
-  VIRTUAL_COPY_CONS (Translator);
-  Percent_repeat_engraver ();
+  TRANSLATOR_DECLARATIONS(Percent_repeat_engraver);
 protected:
   Repeated_music * repeat_;
 
@@ -147,7 +146,7 @@ Percent_repeat_engraver::process_music ()
       if (repeat_sign_type_ == BEAT)
        {
          beat_slash_ = new Item (get_property ("RepeatSlash"));
-         announce_grob (beat_slash_, repeat_);
+         announce_grob(beat_slash_, repeat_->self_scm());
        }
       else if (repeat_sign_type_ == MEASURE)
        {
@@ -156,28 +155,19 @@ Percent_repeat_engraver::process_music ()
          perc_p_ = new Spanner (get_property ("PercentRepeat"));
          SCM col =get_property ("currentCommandColumn");
          perc_p_->set_bound (LEFT, unsmob_grob (col));
-         announce_grob (perc_p_, repeat_);
+         announce_grob(perc_p_, repeat_->self_scm());
        }
       else if (repeat_sign_type_ == DOUBLE_MEASURE)
        
        {
          double_percent_ = new Item (get_property ("DoublePercentRepeat"));
-         announce_grob (double_percent_, repeat_);
+         announce_grob(double_percent_, repeat_->self_scm());
 
       /*
        forbid breaks on a % line. Should forbid all breaks, really.
        */
-         Score_engraver * e = 0;
-         Translator * t  =  daddy_grav_l ();
-         for (; !e && t;  t = t->daddy_trans_l_)
-           {
-             e = dynamic_cast<Score_engraver*> (t);
-           }
-
-         if (!e)
-           programming_error ("No score engraver!");
-         else
-           e->forbid_breaks ();        // guh. Use properties!      
+
+           top_engraver()->forbid_breaks ();   // guh. Use properties!      
        }
       next_moment_ = next_moment_ + body_length_;
     }
@@ -244,6 +234,12 @@ Percent_repeat_engraver::stop_translation_timestep ()
   typeset_perc ();
 }
 
-ADD_THIS_TRANSLATOR (Percent_repeat_engraver);
 
 
+
+ENTER_DESCRIPTION(Percent_repeat_engraver,
+/* descr */       "Make beat, whole bar and double bar repeats.",
+/* creats*/       "PercentRepeat RepeatSlash DoublePercentRepeat",
+/* acks  */       "",
+/* reads */       "measureLength currentCommandColumn",
+/* write */       "");