From: Han-Wen Nienhuys Date: Sat, 2 Oct 2004 12:38:54 +0000 (+0000) Subject: (process_music): move setting X-Git-Tag: release/2.3.21~22 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=79a1f9f62e073d847883cdb56e232e7a7f4c1b0f;p=lilypond.git (process_music): move setting measure-length. This fixes spacing-whole-rest.ly --- diff --git a/ChangeLog b/ChangeLog index 7f0bdb1fed..273ca2efe5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2004-10-02 Han-Wen Nienhuys + * lily/timing-engraver.cc (process_music): move setting + measure-length. This fixes spacing-whole-rest.ly + * VERSION (PACKAGE_NAME): release 2.3.20 * input/regression/quote-transposition.ly: update example diff --git a/lily/break-align-engraver.cc b/lily/break-align-engraver.cc index 2dc61c63c5..e16fed2464 100644 --- a/lily/break-align-engraver.cc +++ b/lily/break-align-engraver.cc @@ -18,7 +18,7 @@ class Break_align_engraver : public Engraver { Item *align_; -SCM column_alist_; + SCM column_alist_; Item *left_edge_; void add_to_group (SCM,Item*); diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index a1b1a75576..e93de9941d 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -79,7 +79,7 @@ Score_engraver::prepare (Moment m) SCM w = m.smobbed_copy (); command_column_->set_property ("when", w); musical_column_->set_property ("when", w); - + recurse_over_translators (context (), &Translator::start_translation_timestep, DOWN); } diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 9e051ec454..e97605c82b 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -145,7 +145,7 @@ loose_column (Grob *l, Grob *c, Grob *r) /* ugh. -- fix staff-bar name? - */ + */ if (h && h->get_property ("break-align-symbol") == ly_symbol2scm ("staff-bar")) return false; } @@ -185,10 +185,10 @@ Spacing_spanner::prune_loose_columns (Grob*me,Link_array *cols, Rational s /* Either object can be non existent, if the score ends prematurely. - */ + */ rns = ly_car (unsmob_grob (rns)->get_property ("right-items")); c->set_property ("between-cols", scm_cons (lns, - rns)); + rns)); /* Set distance constraints for loose columns @@ -290,7 +290,7 @@ Spacing_spanner::set_explicit_neighbor_columns (Link_array cols) /* update the left column. - */ + */ if (right_rank <= min_rank) { if (right_rank < min_rank) @@ -302,7 +302,7 @@ Spacing_spanner::set_explicit_neighbor_columns (Link_array cols) /* update the right column of the wish. - */ + */ int maxrank = 0; SCM left_neighs = rc->get_property ("left-neighbors"); if (scm_is_pair (left_neighs) @@ -346,7 +346,7 @@ Spacing_spanner::set_implicit_neighbor_columns (Link_array cols) /* sloppy with typnig left/right-neighbors should take list, but paper-column found instead. - */ + */ SCM ln = cols[i] ->get_property ("left-neighbors"); if (!scm_is_pair (ln) && i ) { @@ -370,7 +370,7 @@ Spacing_spanner::set_springs (SCM smob) /* can't use get_system() ? --hwn. - */ + */ Link_array all (me->pscore_->system_->columns ()); set_explicit_neighbor_columns (all); @@ -422,7 +422,7 @@ Spacing_spanner::find_shortest (Grob *me, Link_array const &cols) { /* ascending in duration - */ + */ Array durations; Array counts; @@ -506,7 +506,8 @@ Spacing_spanner::find_shortest (Grob *me, Link_array const &cols) (different time sigs) than others, and should be spaced differently. */ void -Spacing_spanner::do_measure (Rational global_shortest, Grob*me, Link_array *cols) +Spacing_spanner::do_measure (Rational global_shortest, Grob*me, + Link_array *cols) { Real headwid = robust_scm2double (me->get_property ("spacing-increment"), 1); @@ -539,18 +540,16 @@ Spacing_spanner::do_measure (Rational global_shortest, Grob*me, Link_array breakable_column_spacing (me, l, rb, global_shortest); if (lb && rb) breakable_column_spacing (me, lb, rb, global_shortest); - - continue ; } - - - musical_column_spacing (me, lc, rc, headwid, global_shortest); - if (Item *rb = r->find_prebroken_piece (LEFT)) - musical_column_spacing (me, lc, rb, headwid, global_shortest); - } + else + { + musical_column_spacing (me, lc, rc, headwid, global_shortest); + if (Item *rb = r->find_prebroken_piece (LEFT)) + musical_column_spacing (me, lc, rb, headwid, global_shortest); + } + } } - /* Generate the space between two musical columns LC and RC, given spacing parameters INCR and SHORTEST. diff --git a/lily/timing-engraver.cc b/lily/timing-engraver.cc index ab5bba26c4..468656ffe2 100644 --- a/lily/timing-engraver.cc +++ b/lily/timing-engraver.cc @@ -23,6 +23,7 @@ protected: virtual void start_translation_timestep (); virtual void initialize (); + virtual void process_music(); virtual void stop_translation_timestep (); public: @@ -52,6 +53,26 @@ Timing_engraver::initialize () context ()->set_property ("whichBar", which); } +void +Timing_engraver::process_music() +{ + Timing_translator::process_music (); + + bool start_of_measure = (last_moment_.main_part_ != now_mom().main_part_ + && !measure_position ().main_part_); + + /* + We can't do this in start_translation_timestep(), since time sig + changes won't have happened by then. + */ + if (start_of_measure) + { + Moment mlen = Moment (measure_length ()); + unsmob_grob (get_property ("currentCommandColumn")) + ->set_property ("measure-length", mlen.smobbed_copy ()); + } +} + void Timing_engraver::start_translation_timestep () @@ -70,13 +91,6 @@ Timing_engraver::start_translation_timestep () bool start_of_measure = (last_moment_.main_part_ != now.main_part_ && !mp.main_part_); - if (start_of_measure) - { - Moment mlen = Moment (measure_length ()); - unsmob_grob (get_property ("currentCommandColumn")) - ->set_property ("measure-length", mlen.smobbed_copy ()); - } - if (!scm_is_string (which) && to_boolean (automatic_bars)) { SCM always = get_property ("barAlways");