From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Wed, 19 Jul 2006 12:50:08 +0000 (+0000)
Subject: new file.
X-Git-Tag: release/2.10.0-2~452
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=10ac84f21313e8cc86540d1c8137cb96020b98b3;p=lilypond.git

new file.
---

diff --git a/ChangeLog b/ChangeLog
index 3d52bf5d4d..e4bc54887b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2006-07-19  Han-Wen Nienhuys  <hanwen@lilypond.org>
 
+	* 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))))))