]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 5168 Let arpeggio-bracket/slur depend on grob-property thickness
authorThomas Morley <thomasmorley65@gmail.com>
Fri, 28 Jul 2017 21:09:14 +0000 (23:09 +0200)
committerThomas Morley <thomasmorley65@gmail.com>
Wed, 9 Aug 2017 16:27:34 +0000 (18:27 +0200)
Before, used thickness based only on line-thickness from layout.
For brackets it's now the multiplication of line-thickness and grob's
thickness.
Slur-style-arpeggios now rely on grob-properties thickness and
line-thickness, both multiplies with layout line-thickness.
Similiar to real Slurs.

lily/arpeggio.cc
scm/define-grobs.scm

index 95da047a067bd5ced57ba29f53a0a2ee93405bbe..3f0d32fe81149baf362cf25e2ebc6126a9f4d1a5 100644 (file)
@@ -189,12 +189,14 @@ Arpeggio::brew_chord_bracket (SCM smob)
                                         Interval ())
                    * Staff_symbol_referencer::staff_space (me);
 
-  Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"));
+  Real th
+    = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"))
+      * robust_scm2double (me->get_property ("thickness"), 1);
   Real sp = 1.5 * Staff_symbol_referencer::staff_space (me);
   Real dy = heads.length () + sp;
   Real x = robust_scm2double (me->get_property ("protrusion"), 0.4);
 
-  Stencil mol (Lookup::bracket (Y_AXIS, Interval (0, dy), lt, x, lt));
+  Stencil mol (Lookup::bracket (Y_AXIS, Interval (0, dy), th, x, th));
   mol.translate_axis (heads[LEFT] - sp / 2.0, Y_AXIS);
   return mol.smobbed_copy ();
 }
@@ -209,7 +211,12 @@ Arpeggio::brew_chord_slur (SCM smob)
                                         Interval ())
                    * Staff_symbol_referencer::staff_space (me);
 
-  Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"));
+  Real lt
+    = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"))
+      * robust_scm2double (me->get_property ("line-thickness"), 1.0);
+  Real th
+    = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"))
+      * robust_scm2double (me->get_property ("thickness"), 1.0);
   Real dy = heads.length ();
 
   Real height_limit = 1.5;
@@ -217,7 +224,7 @@ Arpeggio::brew_chord_slur (SCM smob)
   Bezier curve = slur_shape (dy, height_limit, ratio);
   curve.rotate (90.0);
 
-  Stencil mol (Lookup::slur (curve, lt, lt, dash_definition));
+  Stencil mol (Lookup::slur (curve, th, lt, dash_definition));
   mol.translate_axis (heads[LEFT], Y_AXIS);
   return mol.smobbed_copy ();
 }
@@ -251,9 +258,11 @@ ADD_INTERFACE (Arpeggio,
                /* properties */
                "arpeggio-direction "
                "dash-definition " // TODO: make apply to non-slur arpeggios
+               "line-thickness "
                "positions "
                "protrusion "
                "script-priority " // TODO: make around-note-interface
                "stems "
+               "thickness "
               );
 
index e162b408b9d4fd1814b163b6f3aee23bb2e876bb..8062363b241959c4362c79af326ef1790f5ca7eb 100644 (file)
      . (
         (cross-staff . ,ly:arpeggio::calc-cross-staff)
         (direction . ,LEFT)
+        (line-thickness . 1)
         (padding . 0.5)
         (positions . ,ly:arpeggio::calc-positions)
         (protrusion . 0.4)
         (side-axis . ,X)
         (staff-position . 0.0)
         (stencil . ,ly:arpeggio::print)
+        (thickness . 1)
         (X-extent . ,ly:arpeggio::width)
         (Y-extent . ,(grob::unpure-Y-extent-from-stencil ly:arpeggio::pure-height))
         (X-offset . ,ly:side-position-interface::x-aligned-side)