From c7bf94a21970d348922702425f2f289339e0250b Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 19 Jul 2006 12:50:09 +0000 Subject: [PATCH] new file. --- ChangeLog | 2 ++ input/regression/bend-after.ly | 25 +++++++++++++++++++++++++ lily/trill-spanner-engraver.cc | 5 ++--- scm/define-grob-interfaces.scm | 5 +++++ scm/define-grobs.scm | 2 +- scm/define-music-types.scm | 2 +- scm/output-lib.scm | 8 +++++--- scm/output-ps.scm | 25 +++++++++++++++++++++++-- scm/output-svg.scm | 17 ++++++++++++++++- 9 files changed, 80 insertions(+), 11 deletions(-) create mode 100644 input/regression/bend-after.ly diff --git a/ChangeLog b/ChangeLog index 3d52bf5d4d..e4bc54887b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2006-07-19 Han-Wen Nienhuys + * input/regression/bend-after.ly: new file. + * Documentation/user/GNUmakefile ($(outdir)/%.pdf): foolproof recipe for eps -> pdf conversion. diff --git a/input/regression/bend-after.ly b/input/regression/bend-after.ly new file mode 100644 index 0000000000..3572bf58ec --- /dev/null +++ b/input/regression/bend-after.ly @@ -0,0 +1,25 @@ +\version "2.9.12" + +\header { + + texidoc = "Falls and doits can be created with bendAfter. They run + to the next note, or to the next barline." + +} + +\paper { + ragged-right = ##T +} + +\relative c'' { + \override Score.SpacingSpanner #'shortest-duration-space = #3.0 + c4-\bendAfter #+5 + c4-\bendAfter #+4 + c4-\bendAfter #+3 + c4-\bendAfter #+2 + c4-\bendAfter #+1 + c4-\bendAfter #-1 + c4-\bendAfter #-2 + c4-\bendAfter #-3 + c4-\bendAfter #-4 +} diff --git a/lily/trill-spanner-engraver.cc b/lily/trill-spanner-engraver.cc index 4806758b00..5a4d099bda 100644 --- a/lily/trill-spanner-engraver.cc +++ b/lily/trill-spanner-engraver.cc @@ -139,9 +139,8 @@ Trill_spanner_engraver::finalize () typeset_all (); if (span_) { - current_event_->origin ()->warning (_ ("unterminated trill spanner")); - span_->suicide (); - span_ = 0; + finished_ = span_; + typeset_all (); } } diff --git a/scm/define-grob-interfaces.scm b/scm/define-grob-interfaces.scm index 4234fd5e1e..569342a330 100644 --- a/scm/define-grob-interfaces.scm +++ b/scm/define-grob-interfaces.scm @@ -20,6 +20,11 @@ "A bass figure text" '(implicit)) +(ly:add-interface + 'bend-after-interface + "A doit or drop." + '(delta-position)) + (ly:add-interface 'bass-figure-alignment-interface "" diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 6c91ae3159..f9f73c4606 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -320,7 +320,7 @@ (thickness . 2.0) (meta . ((class . Spanner) (interfaces . (spanner-interface - fall-interface)))))) + bend-after-interface)))))) (BreakAlignment . ( diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index 3043c8aa52..757e9e3a1e 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -107,7 +107,7 @@ c8-[ c c-] c8") (BendAfterEvent . ((description . "A drop/fall/doit jazz articulation") - (types . (general-music fall-event event)))) + (types . (general-music bend-after-event event)))) (BreakEvent . ( diff --git a/scm/output-lib.scm b/scm/output-lib.scm index 572fcaff43..e38d967e95 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -361,13 +361,15 @@ centered, X==1 is at the right, X == -1 is at the left." (dx (- right-x left-x)) (exp (list 'path thickness `(quote - (,(- left-x self-x) 0 - rmoveto + (rmoveto + ,(- left-x self-x) 0 + + rcurveto ,(/ dx 3) 0 ,dx ,(* 0.66 delta) ,dx ,delta - rcurveto)))) + )))) ) (ly:make-stencil diff --git a/scm/output-ps.scm b/scm/output-ps.scm index f71bc3dfce..6fe28dc446 100644 --- a/scm/output-ps.scm +++ b/scm/output-ps.scm @@ -321,10 +321,31 @@ (str4 dx) (str4 dy))) + (define (path thickness exps) + (define (path-exps->ps-path-exps exps) + (if (pair? exps) + (let* + ((head (car exps)) + (rest (cdr exps)) + (arity + (cond + ((memq head '(rmoveto rlineto lineto moveto)) 2) + ((memq head '(rcurveto curveto)) 6) + (else 1))) + (args (take rest arity)) + ) + + ;; WARNING: this is a vulnerability: a user can output arbitrary PS code here. + (cons (format "~a ~a " + (string-join (map (lambda (x) (format "~a " x)) args) " ") + head) + (path-exps->ps-path-exps (drop rest arity)))) + '())) + + (format "1 setlinecap ~a setlinewidth\n~a stroke" thickness - (string-join (map (lambda (x) (format "~a" x)) exps) - " "))) + (string-join (path-exps->ps-path-exps exps) " "))) diff --git a/scm/output-svg.scm b/scm/output-svg.scm index 786a37ca17..cabf8f7da0 100644 --- a/scm/output-svg.scm +++ b/scm/output-svg.scm @@ -193,13 +193,28 @@ (entity 'path "" '(stroke-linejoin . "round") '(stroke-linecap . "round") - `(stroke-width . ,thick) '(stroke . "currentColor") '(fill . "currentColor") + `(stroke-width . ,thick) `(d . ,(string-append (svg-bezier first #f) (svg-bezier second first-c0))) ))) +(define (path thick commands) + (define (ps-path-entries->svg-path entries) + + + (entity 'path "" + `(stroke-width . ,thick) + '(stroke-linejoin . "round") + '(stroke-linecap . "round") + '(stroke . "currentColor") + '(fill . "currentColor") + + + )) + + (define (char font i) (dispatch `(fontify ,font ,(entity 'tspan (char->entity (integer->char i)))))) -- 2.39.5