From a0f921dc791dd79c1ab9a1291ba115e055950649 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 12 Dec 2006 14:40:02 +0100 Subject: [PATCH] Support tablature slides. Do this by adding 'extra-dy property for line-spanner. --- lily/glissando-engraver.cc | 1 + lily/line-spanner.cc | 18 ++++++++++++------ ly/engraver-init.ly | 4 +++- scm/define-grob-properties.scm | 3 ++- scm/lily.scm | 1 + 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/lily/glissando-engraver.cc b/lily/glissando-engraver.cc index 91dd733cb8..4c506df38d 100644 --- a/lily/glissando-engraver.cc +++ b/lily/glissando-engraver.cc @@ -73,6 +73,7 @@ Glissando_engraver::stop_translation_timestep () { if (last_line_ && last_line_->get_bound (RIGHT)) last_line_ = 0; + if (line_) { if (last_line_) diff --git a/lily/line-spanner.cc b/lily/line-spanner.cc index 48d4b3aa9b..2f99a0dce2 100644 --- a/lily/line-spanner.cc +++ b/lily/line-spanner.cc @@ -205,6 +205,9 @@ Line_spanner::print (SCM smob) Offset my_off; Offset his_off; + Real extra_dy = robust_scm2double (me->get_property ("extra-dy"), + 0.0); + if (bound[RIGHT]->break_status_dir ()) { if (bound[LEFT]->break_status_dir ()) @@ -247,11 +250,11 @@ Line_spanner::print (SCM smob) Real yoff = this_common_y->relative_coordinate (all_common_y, Y_AXIS); Offset p1 (bound[LEFT]->extent (commonx, X_AXIS)[RIGHT], - this_ext.center () + yoff); + this_ext.center () + yoff - extra_dy / 2); Offset p2 (bound[RIGHT]->extent (commonx, X_AXIS)[LEFT], - next_ext.center () + yoff); + next_ext.center () + yoff + extra_dy / 2); - Offset dz (p2 -p1); + Offset dz (p2 - p1); Real len = dz.length (); Offset dir = dz * (1 / len); @@ -288,13 +291,15 @@ Line_spanner::print (SCM smob) his_off[ax] = bound[LEFT]->relative_coordinate (common[a], ax); } - ofxy = dxy * (off / dxy.length ()); + ofxy = dxy * (off / dxy.length ()) ; dxy -= 2*ofxy; + dxy[Y_AXIS] += extra_dy; + Stencil line = line_stencil (me, Offset (0, 0), dxy); line.translate_axis (bound[LEFT]->extent (bound[LEFT], X_AXIS).length () / 2, X_AXIS); - line.translate (ofxy - my_off + his_off); + line.translate (ofxy - my_off + his_off + Offset (0, -extra_dy/2)); return line.smobbed_copy (); } } @@ -305,7 +310,8 @@ ADD_INTERFACE (Line_spanner, "@code{dashed-line}, @code{trill}, \n" "@code{dotted-line} or @code{zigzag}.\n" "\n", - + + "extra-dy " "arrow " "gap " "thickness " diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 938a0c856e..afb0be2dc4 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -654,7 +654,7 @@ AncientRemoveEmptyStaffContext = \context { \alias "Voice" \consists "Tab_note_heads_engraver" \consists "Tab_harmonic_engraver" - + \remove "Note_heads_engraver" \remove "Fingering_engraver" \remove "New_fingering_engraver" @@ -669,6 +669,8 @@ AncientRemoveEmptyStaffContext = \context { %% No accidental in tablature ! \remove Accidental_engraver + + \override Glissando #'extra-dy = #0.75 } \context { diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index 9d0d665b88..24f1fe0a2b 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -136,7 +136,8 @@ edges '(@var{left-text} . @var{right-text}).") "How much of the bound a spanner should enclose: +1 = completely, 0 = center, -1 not at all.") (expand-limit ,integer? "maximum number of measures expanded in church rests.") - ;; remove me? + ;; remove me? + (extra-dy ,number? "Slope glissandi this much extra.") (extra-X-extent ,number-pair? "A grob is enlarged in X dimension by this much.") (extra-Y-extent ,number-pair? "See @code{extra-X-extent}.") diff --git a/scm/lily.scm b/scm/lily.scm index 32ab98e88e..d64fd57f4e 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -106,6 +106,7 @@ on errors, and print a stack trace.") (if (ly:get-option 'verbose) (begin + (ly:set-option 'protected-scheme-parsing #f) (debug-enable 'debug) (debug-enable 'backtrace) (read-enable 'positions))) -- 2.39.5