From: Thomas Morley Date: Fri, 28 Jul 2017 21:09:14 +0000 (+0200) Subject: Issue 5168 Let arpeggio-bracket/slur depend on grob-property thickness X-Git-Url: https://git.donarmstrong.com/?p=lilypond.git;a=commitdiff_plain;h=50ba2171c6a88789ef5ed3673a4c6a4549400113 Issue 5168 Let arpeggio-bracket/slur depend on grob-property thickness 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. --- diff --git a/lily/arpeggio.cc b/lily/arpeggio.cc index 95da047a06..3f0d32fe81 100644 --- a/lily/arpeggio.cc +++ b/lily/arpeggio.cc @@ -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 " ); diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index e162b408b9..8062363b24 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -172,6 +172,7 @@ . ( (cross-staff . ,ly:arpeggio::calc-cross-staff) (direction . ,LEFT) + (line-thickness . 1) (padding . 0.5) (positions . ,ly:arpeggio::calc-positions) (protrusion . 0.4) @@ -179,6 +180,7 @@ (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)