X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fhairpin.cc;h=7639ddd78e774210ebcea9de2da6b772a493564a;hb=c597a126f11943be74a98efee056ab54ae729315;hp=4ccce328b856f15f8f2c18ce352f3ef778f4afe7;hpb=ee12a32549ed3802251669b9ad511141fda7b9a0;p=lilypond.git diff --git a/lily/hairpin.cc b/lily/hairpin.cc index 4ccce328b8..7639ddd78e 100644 --- a/lily/hairpin.cc +++ b/lily/hairpin.cc @@ -69,19 +69,16 @@ Hairpin::broken_bound_padding (SCM smob) Grob *my_vertical_axis_group = Grob::get_vertical_axis_group (me); Drul_array vertical_axis_groups; - Direction d = DOWN; - do + for (DOWN_and_UP (d)) vertical_axis_groups[d] = d == dir ? sys->get_neighboring_staff (d, my_vertical_axis_group, Interval_t (me->spanned_rank_interval ())) : my_vertical_axis_group; - while (flip (&d) != DOWN); if (!vertical_axis_groups[dir]) return scm_from_double (0.0); Drul_array span_bars (0, 0); - d = DOWN; - do + for (DOWN_and_UP (d)) { extract_grob_set (vertical_axis_groups[d], "elements", elts); for (vsize i = elts.size (); i--;) @@ -98,7 +95,6 @@ Hairpin::broken_bound_padding (SCM smob) if (!span_bars[d]) return scm_from_double (0.0); } - while (flip (&d) != DOWN); if (span_bars[DOWN] != span_bars[UP]) return scm_from_double (0.0); @@ -125,13 +121,11 @@ Hairpin::print (SCM smob) Drul_array broken; Drul_array bounds; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { bounds[d] = me->get_bound (d); broken[d] = bounds[d]->break_status_dir () != CENTER; } - while (flip (&d) != LEFT); broken[RIGHT] = broken[RIGHT] && me->broken_neighbor (RIGHT); broken[RIGHT] = broken[RIGHT] && me->broken_neighbor (RIGHT)->is_live (); @@ -162,12 +156,12 @@ Hairpin::print (SCM smob) thick = robust_scm2double (me->get_property ("thickness"), 1.0) * Staff_symbol_referencer::line_thickness (me); - do + for (LEFT_and_RIGHT (d)) { Item *b = bounds[d]; - Interval e = (Axis_group_interface::has_interface (b) - ? Axis_group_interface::generic_bound_extent (b, common, X_AXIS) - : robust_relative_extent (b, common, X_AXIS)); + Interval e = (Paper_column::has_interface (b) && b->break_status_dir ()) + ? Axis_group_interface::generic_bound_extent (b, common, X_AXIS) + : robust_relative_extent (b, common, X_AXIS); x_points[d] = b->relative_coordinate (common, X_AXIS); if (broken [d]) @@ -176,7 +170,8 @@ Hairpin::print (SCM smob) x_points[d] = e[-d]; else { - Real broken_bound_padding = 0.0; + Real broken_bound_padding + = robust_scm2double (me->get_property ("broken-bound-padding"), 0.0); extract_grob_set (me, "concurrent-hairpins", chp); for (vsize i = 0; i < chp.size (); i++) { @@ -253,7 +248,6 @@ Hairpin::print (SCM smob) } } } - while (flip (&d) != LEFT); Real width = x_points[RIGHT] - x_points[LEFT];