From fc4b48b3255faf4328fee5da3f7356f30d6149e4 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Thu, 19 Feb 2004 21:33:59 +0000 Subject: [PATCH] (conv): add rule for | ~ --- ChangeLog | 3 +++ THANKS | 2 ++ input/regression/beam-break.ly | 6 ++--- lily/beam.cc | 40 ++++++++++++++++++++++++---------- scm/output-tex.scm | 4 ++-- scripts/convert-ly.py | 1 + 6 files changed, 39 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4791a61dad..6d0e5451c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2004-02-19 Han-Wen Nienhuys + * lily/beam.cc (print): broken beams last until end of staff. + (print): broken beams start from prefatory matter. + * scm/output-tex.scm (output-scopes): don't dump fraction exactly. * lily/paper-score.cc (process): dump header only once. diff --git a/THANKS b/THANKS index d52980667e..a479562401 100644 --- a/THANKS +++ b/THANKS @@ -4,6 +4,7 @@ Release 2.1 BUG HUNTERS/SUGGESTIONS Matthias Kilian +Delma Avers Eric Wurbel John Williams José Luis Cruz @@ -14,6 +15,7 @@ Nicolas Sceaux Nick Busigin Matthias Kilian Erik Sandberg +Kieren Richard MacMillan Release 2.0 *********** diff --git a/input/regression/beam-break.ly b/input/regression/beam-break.ly index af501340ea..c1e688d83b 100644 --- a/input/regression/beam-break.ly +++ b/input/regression/beam-break.ly @@ -5,9 +5,9 @@ } \version "2.1.22" - \paper { raggedright= ##t } +\paper { raggedright= ##t } \score { \notes \relative c'' { - \set Score.forbidBeamBreak = ##f - \time 3/16 c16-[ d e \break f-] + \set Score.allowBeamBreak = ##t + \time 3/16 c16-[ d e \break f-] }} diff --git a/lily/beam.cc b/lily/beam.cc index 4d8564075d..4f6f2e84eb 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -306,13 +306,16 @@ MAKE_SCHEME_CALLBACK (Beam, print, 1); SCM Beam::print (SCM grob) { - Grob *me = unsmob_grob (grob); + Spanner *me = unsmob_spanner (grob); position_beam (me); Link_array stems= Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems"); Grob* xcommon = common_refpoint_of_array (stems, me, X_AXIS); + xcommon = me->get_bound (LEFT)->common_refpoint (xcommon, X_AXIS); + xcommon = me->get_bound (RIGHT)->common_refpoint (xcommon, X_AXIS); + Real x0, dx; if (visible_stem_count (me)) { @@ -400,7 +403,7 @@ Beam::print (SCM grob) how much to stick out for beams across linebreaks */ Real break_overshoot = 3.0; - Real w = (i > 0 && st) ? xposn - last_xposn : break_overshoot; + Real w = (i > 0 && st) ? (xposn - last_xposn) : break_overshoot; Real stem_offset =0.0; if (i > 0) @@ -443,8 +446,6 @@ Beam::print (SCM grob) the_beam.add_stencil (b); } - - if (lfliebertjes.size() || rfliebertjes.size()) { @@ -459,26 +460,41 @@ Beam::print (SCM grob) nw_f = gh_scm2double (result); } else - nw_f = break_overshoot; + nw_f = break_overshoot / 2; /* Half beam should be one note-width, but let's make sure two half-beams never touch */ - Real w = (i>0 && st) ? (xposn - last_xposn) : break_overshoot; - w = w/2 0) + rw = nw_f get_bound (LEFT)->extent (xcommon, X_AXIS)[RIGHT] + - 0.5; + + if (st) + lw = nw_f get_bound(RIGHT)->relative_coordinate (xcommon, X_AXIS) + - last_xposn; - Stencil half = Lookup::beam (dydx, w, thick, blot); + Stencil rhalf = Lookup::beam (dydx, rw, thick, blot); + Stencil lhalf = Lookup::beam (dydx, lw, thick, blot); for (int j = lfliebertjes.size(); j--;) { - Stencil b (half); + Stencil b (lhalf); b.translate_axis (last_xposn - x0, X_AXIS); b.translate_axis (dydx * (last_xposn-x0) + bdy * lfliebertjes[j], Y_AXIS); the_beam.add_stencil (b); } for (int j = rfliebertjes.size(); j--;) { - Stencil b (half); - b.translate_axis (xposn - x0 - w , X_AXIS); - b.translate_axis (dydx * (xposn-x0 -w) + bdy * rfliebertjes[j], Y_AXIS); + Stencil b (rhalf); + b.translate_axis (xposn - x0 - rw , X_AXIS); + b.translate_axis (dydx * (xposn-x0 -rw) + bdy * rfliebertjes[j], Y_AXIS); the_beam.add_stencil (b); } } diff --git a/scm/output-tex.scm b/scm/output-tex.scm index b1b289fdc9..4c0b11a08b 100644 --- a/scm/output-tex.scm +++ b/scm/output-tex.scm @@ -104,10 +104,10 @@ ((val (variable-ref var)) (tex-key (symbol->string sym)) ) + (if (memq sym fields) + (header-to-file basename sym val)) (cond - ((memq sym fields) - (header-to-file basename sym val)) ((string? val) (tex-string-def "lilypond" sym val) ) ((number? val) diff --git a/scripts/convert-ly.py b/scripts/convert-ly.py index b7f68d85c9..f84f84298c 100644 --- a/scripts/convert-ly.py +++ b/scripts/convert-ly.py @@ -1894,6 +1894,7 @@ def conv (str): conversions.append (((2,1,23), conv, """Property setting syntax in \\translator{ }""")) def conv (str): str = re.sub (r'music-list\?', 'ly:music-list?', str) + str = re.sub (r'\|\s*~', '~ |', str) return str conversions.append (((2,1,24), conv, """music-list? -> ly:music-list?""")) -- 2.39.5