X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fhairpin.cc;h=3933bd8a3b458c23ed4282f2f9cd4f8cf0334c76;hb=8247813bc580a90f7838846dc38aad5d49ac9d9d;hp=9f8c706893d6a5cf4fc2725d0b8e9e723594fff5;hpb=8c197373e3dfce4382469a541b38be1f13a48e13;p=lilypond.git diff --git a/lily/hairpin.cc b/lily/hairpin.cc index 9f8c706893..3933bd8a3b 100644 --- a/lily/hairpin.cc +++ b/lily/hairpin.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -58,7 +58,7 @@ Hairpin::broken_bound_padding (SCM smob) Item *r_bound = me->get_bound (RIGHT); if (r_bound->break_status_dir () != -1) { - me->warning ("Asking for broken bound padding at a non-broken bound."); + me->warning (_ ("Asking for broken bound padding at a non-broken bound.")); return scm_from_double (0.0); } @@ -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,10 @@ 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 = Axis_group_interface::generic_bound_extent (b, common, X_AXIS); x_points[d] = b->relative_coordinate (common, X_AXIS); if (broken [d]) @@ -176,7 +168,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 +246,6 @@ Hairpin::print (SCM smob) } } } - while (flip (&d) != LEFT); Real width = x_points[RIGHT] - x_points[LEFT]; @@ -265,18 +257,19 @@ Hairpin::print (SCM smob) } bool continued = broken[Direction (-grow_dir)]; + bool continuing = broken[Direction (grow_dir)]; Real starth = 0; Real endh = 0; if (grow_dir < 0) { - starth = height; - endh = continued ? height / 2 : 0.0; + starth = continuing ? 2 * height / 3 : height; + endh = continued ? height / 3 : 0.0; } else { - starth = continued ? height / 2 : 0.0; - endh = height; + starth = continued ? height / 3 : 0.0; + endh = continuing ? 2 * height / 3 : height; } /*