X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpercent-repeat-engraver.cc;h=f31329b7b6049eb83cc57578dba13ea858c8f0c0;hb=3b963e7de14816666287b7a2bcfd35eccef977c4;hp=cd11b6a89d5d4d1be779272f699c8a44870dfaee;hpb=5e963da4031a9efceda94f4969785bf6fa13048b;p=lilypond.git diff --git a/lily/percent-repeat-engraver.cc b/lily/percent-repeat-engraver.cc index cd11b6a89d..f31329b7b6 100644 --- a/lily/percent-repeat-engraver.cc +++ b/lily/percent-repeat-engraver.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2000--2001 Han-Wen Nienhuys + (c) 2000--2002 Han-Wen Nienhuys */ @@ -16,7 +16,7 @@ #include "spanner.hh" #include "item.hh" #include "percent-repeat-iterator.hh" -#include "bar.hh" +#include "bar-line.hh" #include "score-engraver.hh" #include "translator-group.hh" @@ -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_; @@ -103,7 +102,7 @@ Percent_repeat_engraver::try_music (Music * m) meas_len = *unsmob_moment (m); if (body_length_ < meas_len && - meas_len.mod_rat (body_length_) == Moment (0,0)) + meas_len.main_part_.mod_rat (body_length_.main_part_) == Moment (Rational (0,0))) repeat_sign_type_ = BEAT; else if (meas_len == body_length_) repeat_sign_type_ = MEASURE; @@ -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 (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 */ "");