]> git.donarmstrong.com Git - lilypond.git/commitdiff
reimplement stack-stencils without minimum-translation argument.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 17 Jan 2007 14:37:34 +0000 (15:37 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 17 Jan 2007 14:37:34 +0000 (15:37 +0100)
scm/lily-library.scm
scm/stencil.scm

index 70faac6a82b97e462f79a531f33e281f38cbd2b6..0746876ca3d6625d9c678c857618fe38f8ebf00a 100644 (file)
@@ -380,6 +380,9 @@ found."
 
 (define-public interval-end cdr)
 
+(define-public (interval-bound interval dir)
+  ((if (= dir RIGHT) cdr car) interval))
+
 (define-public (interval-index interval dir)
   "Interpolate INTERVAL between between left (DIR=-1) and right (DIR=+1)"
   
index 410e0eebe1ffb386a99e8d4dee089030c5e61b83..463a082fd337e63e25230fc4fe89f70c3091206f 100644 (file)
 
 (define-public (stack-lines dir padding baseline stils)
   "Stack vertically with a baseline-skip."
-  (if (null? stils)
-      empty-stencil
-      (if (null? (cdr stils))
-         (car stils)
-         (ly:stencil-combine-at-edge
-          (car stils) Y dir 
-          (stack-lines dir padding baseline (cdr stils))
-          padding baseline))))
+  (define result empty-stencil)
+  (define last-y #f)
+  (do
+      ((last-stencil #f (car p))
+       (p stils (cdr p)))
+      
+      ((null? p))
+
+    (if (number? last-y)
+       (begin
+         (let* ((dy (max (+ (* dir (interval-bound (ly:stencil-extent last-stencil Y) dir))
+                            padding
+                            (* (- dir) (interval-bound (ly:stencil-extent (car p) Y) (- dir))))
+                         baseline))
+                (y (+ last-y  (* dir dy))))
+           
+                         
+           
+           (set! result
+                 (ly:stencil-add result (ly:stencil-translate-axis (car p) y Y)))
+           (set! last-y y)))
+       (begin
+         (set! last-y 0)
+         (set! result (car p)))))
+
+  result)
+    
 
 (define-public (bracketify-stencil stil axis thick protusion padding)
   "Add brackets around STIL, producing a new stencil."