X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fslur-configuration.cc;h=c446ca1a12cbf59d9c9a1ef0d621253dfdf59dab;hb=387a298cdf6e9a987e7bc4f8fc0db6a89d0f6d5a;hp=d6d231de305e2b90c6aabdb80ea581c6dfb35064;hpb=2ec0cd55d55c49dee4e5604903dfab8ff4a089c4;p=lilypond.git diff --git a/lily/slur-configuration.cc b/lily/slur-configuration.cc index d6d231de30..c446ca1a12 100644 --- a/lily/slur-configuration.cc +++ b/lily/slur-configuration.cc @@ -49,19 +49,15 @@ avoid_staff_line (Slur_score_state const &state, Real p = 2 * (y - staff->relative_coordinate (state.common_[Y_AXIS], Y_AXIS)) / state.staff_space_; - Real distance = fabs (my_round (p) - p); // in halfspaces - if (distance < 4 * state.thickness_ - && (int) fabs (my_round (p)) - <= 2 * Staff_symbol_referencer::staff_radius (staff) + 0.1 - && (int (fabs (my_round (p))) % 2 - != Staff_symbol_referencer::line_count (staff) % 2)) + Real const round = my_round (p); + Real const frac = p - round; + if (fabs (frac) < 4 * state.thickness_ + && Staff_symbol_referencer::on_staff_line (staff, int (round))) { - Direction resolution_dir - = (distance ? state.dir_ : Direction (sign (p - my_round (p)))); + Direction resolution_dir = frac ? state.dir_ : CENTER; // TODO: parameter - Real newp = my_round (p) + resolution_dir - * 5 * state.thickness_; + Real newp = round + resolution_dir * 5 * state.thickness_; Real dy = (newp - p) * state.staff_space_ / 2.0; @@ -278,11 +274,12 @@ Slur_configuration::score_encompass (Slur_score_state const &state) } add_score (demerit, "encompass"); - if (convex_head_distances.size ()) + if (vsize n = convex_head_distances.size ()) { Real avg_distance = 0.0; Real min_dist = infinity_f; - for (vsize j = 0; j < convex_head_distances.size (); j++) + + for (vsize j = 0; j < n; j++) { min_dist = min (min_dist, convex_head_distances[j]); avg_distance += convex_head_distances[j]; @@ -292,12 +289,11 @@ Slur_configuration::score_encompass (Slur_score_state const &state) For slurs over 3 or 4 heads, the average distance is not a good normalizer. */ - Real n = convex_head_distances.size (); if (n <= 2) { Real fact = 1.0; avg_distance += height_ * fact; - n += fact; + ++n; } /*