Reviewers: ,

Message:
Please review.  Thanks!

Description:
Bad positioning of tuplet numbers on kneed beams with Beam.positions
override.

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

Please review this at https://codereview.appspot.com/81330046/

Affected files (+41, -5 lines):
  A input/regression/tuplet-number-kneed-beam-positions.ly
  M lily/tuplet-number.cc


Index: input/regression/tuplet-number-kneed-beam-positions.ly
diff --git a/input/regression/tuplet-number-kneed-beam-positions.ly b/input/regression/tuplet-number-kneed-beam-positions.ly
new file mode 100644
index 0000000000000000000000000000000000000000..3618ed21e94e570c7028a969f513f11dd0c38f42
--- /dev/null
+++ b/input/regression/tuplet-number-kneed-beam-positions.ly
@@ -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: lily/tuplet-number.cc
diff --git a/lily/tuplet-number.cc b/lily/tuplet-number.cc
index ad27ac958c910b91e4e307616fc0ce6c52b681b6..9d4ce784b1803460ada4749d9bd232cb38aec69f 100644
--- a/lily/tuplet-number.cc
+++ b/lily/tuplet-number.cc
@@ -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



_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to