X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fspacing-basic.cc;h=63d97f265246b3eff0b5f8f74ad419838463f12b;hb=7208189546b5932480e268e805e81e468fcd30e5;hp=2e81fdf416237d2569dcedd1f94960cb91e02bba;hpb=cc56fc1e235e8a4f65aaa33029da4b43f184f72e;p=lilypond.git diff --git a/lily/spacing-basic.cc b/lily/spacing-basic.cc index 2e81fdf416..63d97f2652 100644 --- a/lily/spacing-basic.cc +++ b/lily/spacing-basic.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2005--2006 Han-Wen Nienhuys + (c) 2005--2007 Han-Wen Nienhuys */ #include "spacing-spanner.hh" @@ -86,14 +86,7 @@ get_measure_length (Grob *column) extract_grob_set (sys, "columns", cols); - vsize col_idx = binary_search (cols, column, - Paper_column::less_than); - - if (col_idx == VPOS) - { - programming_error ( __FUNCTION__ + string (": Unknown column")); - return 0; - } + vsize col_idx = Paper_column::get_rank (column); do { @@ -122,7 +115,7 @@ Spacing_spanner::note_spacing (Grob *me, Grob *lc, Grob *rc, if (! shortest_playing_len.to_bool ()) { - programming_error ("can't find a ruling note at " + Paper_column::when_mom (lc).to_string ()); + programming_error ("cannot find a ruling note at: " + Paper_column::when_mom (lc).to_string ()); shortest_playing_len = 1; } @@ -130,25 +123,25 @@ Spacing_spanner::note_spacing (Grob *me, Grob *lc, Grob *rc, Moment rwhen = Paper_column::when_mom (rc); Moment delta_t = rwhen - lwhen; - if (!Paper_column::is_musical (rc)) + + /* + when toying with mmrests, it is possible to have musical + column on the left and non-musical on the right, spanning + several measures. + + TODO: efficiency: measure length can be cached, or stored as + property in paper-column. + */ + + if (Moment *measure_len = get_measure_length (lc)) { + delta_t = min (delta_t, *measure_len); + /* - when toying with mmrests, it is possible to have musical - column on the left and non-musical on the right, spanning - several measures. + The following is an extra safety measure, such that + the length of a mmrest event doesn't cause havoc. */ - - Moment *dt = get_measure_length (lc); - if (dt) - { - delta_t = min (delta_t, *dt); - - /* - The following is an extra safety measure, such that - the length of a mmrest event doesn't cause havoc. - */ - shortest_playing_len = min (shortest_playing_len, *dt); - } + shortest_playing_len = min (shortest_playing_len, *measure_len); } Real dist = 0.0; @@ -171,7 +164,6 @@ Spacing_spanner::note_spacing (Grob *me, Grob *lc, Grob *rc, { Spacing_options grace_opts; grace_opts.init_from_grob (grace_spacing); - bool bla; dist = grace_opts.get_duration_space (delta_t.grace_part_, &bla); }