]> git.donarmstrong.com Git - lilypond.git/commitdiff
Remove hard-coded padding from accidentals modifying same pitch.
authorNeil Puttock <n.puttock@gmail.com>
Tue, 27 Jul 2010 21:21:01 +0000 (22:21 +0100)
committerNeil Puttock <n.puttock@gmail.com>
Tue, 27 Jul 2010 21:21:35 +0000 (22:21 +0100)
* 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 [new file with mode: 0644]
lily/accidental-placement.cc

diff --git a/input/regression/accidental-placement-padding.ly b/input/regression/accidental-placement-padding.ly
new file mode 100644 (file)
index 0000000..82cf648
--- /dev/null
@@ -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
+  <ces cis>1
+  <ces des>1
+}
index 8ece98e510c5dd34b02cf9408ecaf7e505ff8a8e..2de33f07d686bec950171ee2dccdfbf2a28e8736 100644 (file)
@@ -223,7 +223,7 @@ build_apes (SCM accs)
 
 static void
 set_ape_skylines (Accidental_placement_entry *ape,
-                 Grob **common)
+                 Grob **common, Real padding)
 {
   vector<Grob *> 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<Box> 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);