]> git.donarmstrong.com Git - lilypond.git/commitdiff
new file.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 19 Jul 2006 12:50:08 +0000 (12:50 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 19 Jul 2006 12:50:08 +0000 (12:50 +0000)
ChangeLog
input/regression/bend-after.ly [new file with mode: 0644]
lily/trill-spanner-engraver.cc
scm/define-grob-interfaces.scm
scm/define-grobs.scm
scm/define-music-types.scm
scm/output-lib.scm
scm/output-ps.scm
scm/output-svg.scm

index 3d52bf5d4da77c6bd29132ad4e9d968841b2e24d..e4bc54887b93e94266921cea1007d71129f8a46e 100644 (file)
--- 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 (file)
index 0000000..3572bf5
--- /dev/null
@@ -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
+}
index 4806758b002cfd7c854aa2cd6835d6c753312da9..5a4d099bda2e08557fa41be7abe6197d8fd8e80d 100644 (file)
@@ -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 ();
     }
 }
 
index 4234fd5e1ede18b1e96dcaa465a659ce1ad342f8..569342a3301f54bf9c922eed4e2655122f890ef5 100644 (file)
  "A bass figure text"
  '(implicit))
 
+(ly:add-interface
+ 'bend-after-interface
+ "A doit or drop."
+ '(delta-position))
+
 (ly:add-interface
  'bass-figure-alignment-interface
  ""
index 6c91ae31592530df22df76d2f6933600645acf35..f9f73c46061199cc4529066417bc08558d12c101 100644 (file)
        (thickness . 2.0)
        (meta . ((class . Spanner)
                 (interfaces . (spanner-interface
-                               fall-interface))))))
+                               bend-after-interface))))))
 
     (BreakAlignment
      . (
index 3043c8aa52c4eb4be6dfc7ff2d865e5e26c68318..757e9e3a1eee9ce876d1e9efccd6c3d984c3290d 100644 (file)
@@ -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
      . (
index 572fcaff4399bd710087719b44dfb862381b9fc2..e38d967e9573dc835417475cee90e7262b61b015 100644 (file)
@@ -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
index f71bc3dfcefbfdc9a652f0c9331a4d339885550d..6fe28dc446c7bbfa8db3f004c5394ab21288007b 100644 (file)
    (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) " ")))
   
index 786a37ca177deb434518e3b5e2d650053dba97bd..cabf8f7da09d5ce7606fa6d763fe1a49036fe926 100644 (file)
     (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))))))