From 70afcbe4d572b26fcf740cc8ec838dd57566dfe4 Mon Sep 17 00:00:00 2001 From: Neil Puttock Date: Tue, 27 Jul 2010 22:21:01 +0100 Subject: [PATCH] Remove hard-coded padding from accidentals modifying same pitch. * lily/accidental-placement.cc (calc_positioning_done): read 'padding from AccidentalPlacement and use as arg to set_ape_skylines () --- input/regression/accidental-placement-padding.ly | 12 ++++++++++++ lily/accidental-placement.cc | 10 +++++----- 2 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 input/regression/accidental-placement-padding.ly diff --git a/input/regression/accidental-placement-padding.ly b/input/regression/accidental-placement-padding.ly new file mode 100644 index 0000000000..82cf648c77 --- /dev/null +++ b/input/regression/accidental-placement-padding.ly @@ -0,0 +1,12 @@ +\version "2.13.29" + +\header { + texidoc = "Accidental padding works for all accidentals, including +those modifying the same pitch." +} + +\relative c' { + \override Staff.AccidentalPlacement #'padding = #2 + 1 + 1 +} diff --git a/lily/accidental-placement.cc b/lily/accidental-placement.cc index 8ece98e510..2de33f07d6 100644 --- a/lily/accidental-placement.cc +++ b/lily/accidental-placement.cc @@ -223,7 +223,7 @@ build_apes (SCM accs) static void set_ape_skylines (Accidental_placement_entry *ape, - Grob **common) + Grob **common, Real padding) { vector accs (ape->grobs_); vector_sort (accs, &acc_less); @@ -248,7 +248,7 @@ set_ape_skylines (Accidental_placement_entry *ape, if (i == accs.size () - 1 || p->get_octave () != last_octave) { last_offset = 0; - offset = a->extent (a, X_AXIS)[LEFT] - 0.2; + offset = a->extent (a, X_AXIS)[LEFT] - padding; } else if (p->get_alteration () == last_alteration) a->translate_axis (last_offset, X_AXIS); @@ -257,9 +257,8 @@ set_ape_skylines (Accidental_placement_entry *ape, Real this_offset = offset - a->extent (a, X_AXIS)[RIGHT]; a->translate_axis (this_offset, X_AXIS); - /* FIXME: read the padding from the AccidentalPlacement grob */ last_offset = this_offset; - offset -= a->extent (a, X_AXIS).length () + 0.2; + offset -= a->extent (a, X_AXIS).length () + padding; } vector boxes = Accidental_interface::accurate_boxes (a, common); @@ -463,9 +462,10 @@ Accidental_placement::calc_positioning_done (SCM smob) common[Y_AXIS] = common_refpoint_of_accidentals (apes, Y_AXIS); common[Y_AXIS] = common_refpoint_of_array (heads_and_stems, common[Y_AXIS], Y_AXIS); common[X_AXIS] = common_refpoint_of_array (heads_and_stems, me, X_AXIS); + Real padding = robust_scm2double (me->get_property ("padding"), 0.2); for (vsize i = apes.size (); i--;) - set_ape_skylines (apes[i], common); + set_ape_skylines (apes[i], common, padding); Skyline heads_skyline = build_heads_skyline (heads_and_stems, common); stagger_apes (&apes); -- 2.39.5