]> git.donarmstrong.com Git - lilypond.git/commitdiff
Bad positioning of tuplet numbers on kneed beams with Beam.positions override.
authorDavid Nalesnik <david.nalesnik@gmail.com>
Sat, 29 Mar 2014 12:25:40 +0000 (07:25 -0500)
committerDavid Nalesnik <david.nalesnik@gmail.com>
Sat, 5 Apr 2014 12:48:05 +0000 (07:48 -0500)
Previously, when Beam.positions was overridden, tuplet numbers on kneed beams
would automatically be placed according to the bracket instead of against
the beam.  This happened because the check for whether the beam was kneed
or not returned false in such cases.  This patch replaces that check.

It also:

--adds a regtest demonstrating behavior with Beam.position overrides
--removes some redundant code

input/regression/tuplet-number-kneed-beam-positions.ly [new file with mode: 0644]
lily/tuplet-number.cc

diff --git a/input/regression/tuplet-number-kneed-beam-positions.ly b/input/regression/tuplet-number-kneed-beam-positions.ly
new file mode 100644 (file)
index 0000000..3618ed2
--- /dev/null
@@ -0,0 +1,39 @@
+\version "2.19.4"
+
+\header {
+  texidoc = "Tuplet numbers are placed next to kneed beams when
+@code{Beam.positions} is overridden."
+}
+
+\layout {
+  indent = 0
+  ragged-right = ##t
+}
+
+top = \change Staff = "1"
+bottom = \change Staff = "2"
+
+music = \relative c {
+  \override Beam.auto-knee-gap = 1
+  \tuplet 3/2 4 {
+    c8 \top e'' \bottom g,,
+    \once \override Beam.positions = #'(4.5 . 4.5)
+    c,8 \top e'' \bottom g,,
+    \once \override Beam.positions = #'(-7.0 . -7.0)
+    \top e''8 \bottom c,, c,
+    \once \override Beam.positions = #'(-4.5 . -4.5)
+    \top e'''8 \bottom c,, c,
+  }
+}
+
+\score {
+  \new PianoStaff <<
+    \new Staff = "1" {
+      s1
+    }
+    \new Staff = "2" {
+      \clef bass
+      \music
+    }
+  >>
+}
index ad27ac958c910b91e4e307616fc0ce6c52b681b6..9d4ce784b1803460ada4749d9bd232cb38aec69f 100644 (file)
@@ -166,7 +166,7 @@ Tuplet_number::knee_position_against_beam (Grob *me_grob, Grob *ref_stem)
 
   Grob *beam = Stem::get_beam (ref_stem);
 
-  if (!beam || !to_boolean (beam->get_property ("knee")))
+  if (!beam || !Beam::is_knee (beam))
     return false;
 
   Grob *commonx = Tuplet_bracket::get_common_x (tuplet);
@@ -362,10 +362,6 @@ Tuplet_number::calc_y_offset (SCM smob)
   if (!ref_stem || !knee_position_against_beam (me, ref_stem))
     return to_bracket;
 
-  Grob *beam = Stem::get_beam (ref_stem);
-  if (!beam || !to_boolean (beam->get_property ("knee")))
-    return to_bracket;
-
   /*
     First, we calculate the Y-offset of the tuplet number as if it
     is positioned at the reference stem.
@@ -388,6 +384,7 @@ Tuplet_number::calc_y_offset (SCM smob)
   */
   if (to_boolean (ref_stem->get_property ("french-beaming")))
     {
+      Grob *beam = Stem::get_beam (ref_stem);
       Real beam_translation = Beam::get_beam_translation (beam);
       SCM beaming = ref_stem->get_property ("beaming");
       y_offset += ref_stem_dir