[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Allow independent adjustment of minimum length for spanner siblings (iss
From: |
david . nalesnik |
Subject: |
Allow independent adjustment of minimum length for spanner siblings (issue 201140043 by address@hidden) |
Date: |
Thu, 05 Feb 2015 21:55:45 +0000 |
Reviewers: ,
Message:
Please review.
Description:
Allow independent adjustment of minimum length for spanner siblings
The property minimum-length affects both unbroken and broken spanners,
making
independent adjustment impossible. This patch adds a property,
minimum-length-after-break, which, if set, behaves similarly to
minimum-length,
but only affects siblings starting a line. If
minimum-length-after-break is
unset, minimum-length still controls all lengths.
A regtest demonstrates usage of the new property with a number of
spanners.
Please review this at https://codereview.appspot.com/201140043/
Affected files (+56, -1 lines):
A input/regression/minimum-length-after-break.ly
M lily/spanner.cc
M scm/define-grob-properties.scm
Index: input/regression/minimum-length-after-break.ly
diff --git a/input/regression/minimum-length-after-break.ly
b/input/regression/minimum-length-after-break.ly
new file mode 100644
index
0000000000000000000000000000000000000000..80c3f019afbca5523a5dae2a412b05529c15a69a
--- /dev/null
+++ b/input/regression/minimum-length-after-break.ly
@@ -0,0 +1,45 @@
+\version "2.19.16"
+
+\header {
+ texidoc = "The property @code{minimum-length-after-break} can be
+used to stretch broken spanners starting after a line break. The
+following example shows usage for a variety of spanners.
+"
+}
+
+\layout {
+ ragged-right = ##t
+}
+
+{
+ \override Tie.minimum-length-after-break = 20
+ a1~
+ \break
+ a1
+
+ \override Slur.minimum-length-after-break = 20
+ a1(
+ \break
+ d'1)
+
+ \override TextSpanner.springs-and-rods = #ly:spanner::set-spacing-rods
+ \override TextSpanner.minimum-length-after-break = 20
+ a1\startTextSpan
+ \break
+ a1\stopTextSpan
+
+ \override Hairpin.after-line-breaking = ##t
+ \override Hairpin.to-barline = ##f
+ \override Hairpin.minimum-length-after-break = 20
+ a1\<
+ \break
+ a1\!
+
+ \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods
+ \override Glissando.breakable = ##t
+ \override Glissando.after-line-breaking = ##t
+ \override Glissando.minimum-length-after-break = 20
+ a1\glissando
+ \break
+ d'1
+}
Index: lily/spanner.cc
diff --git a/lily/spanner.cc b/lily/spanner.cc
index
66b35dcd1b8b53df0438bcccddc62b96be71b134..bb0e78b02236c0aee834311eca82f54cd12a4722
100644
--- a/lily/spanner.cc
+++ b/lily/spanner.cc
@@ -366,7 +366,9 @@ Spanner::set_spacing_rods (SCM smob)
{
Grob *me = Grob::unsmob (smob);
SCM num_length = me->get_property ("minimum-length");
- if (scm_is_number (num_length))
+ SCM broken_length = me->get_property ("minimum-length-after-break");
+ if (scm_is_number (num_length)
+ || scm_is_number (broken_length))
{
Rod r;
Spanner *sp = dynamic_cast<Spanner *> (me);
@@ -389,6 +391,8 @@ Spanner::set_spacing_rods (SCM smob)
r.item_drul_[LEFT] = cols.back ()->find_prebroken_piece (RIGHT);
r.item_drul_[RIGHT] = sp->get_bound (RIGHT);
+ if (scm_is_number (broken_length))
+ r.distance_ = robust_scm2double (broken_length, 0);
r.add_to_cols ();
}
@@ -546,6 +550,7 @@ ADD_INTERFACE (Spanner,
/* properties */
"normalized-endpoints "
"minimum-length "
+ "minimum-length-after-break "
"spanner-broken "
"spanner-id "
"to-barline "
Index: scm/define-grob-properties.scm
diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm
index
0d5eaa124a001d875af1f3f7019e34df1dd8e60d..92742f98d05d51c64ca2469c9b165a66e98d4b9a
100644
--- a/scm/define-grob-properties.scm
+++ b/scm/define-grob-properties.scm
@@ -637,6 +637,11 @@ this long, normally in the horizontal direction. This
requires an
appropriate callback for the @code{springs-and-rods} property. If
added to a @code{Tie}, this sets the minimum distance between
noteheads.")
+ (minimum-length-after-break ,ly:dimension? "If set, try to make
+a broken spanner starting a line this long. This requires an
+appropriate callback for the @code{springs-and-rods} property. If
+added to a @code{Tie}, this sets the minimum distance to the
+notehead.")
(minimum-length-fraction ,number? "Minimum length of ledger line
as fraction of note head size.")
(minimum-space ,ly:dimension? "Minimum distance that the victim
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Allow independent adjustment of minimum length for spanner siblings (issue 201140043 by address@hidden),
david . nalesnik <=