]> git.donarmstrong.com Git - lilypond.git/commitdiff
simplify stack-stencils and rewrite stack-stencils-padding-list
authorDavid Kastrup <dak@gnu.org>
Sun, 28 Apr 2013 12:47:42 +0000 (14:47 +0200)
committerDavid Kastrup <dak@gnu.org>
Sun, 26 May 2013 00:33:02 +0000 (02:33 +0200)
scm/stencil.scm

index fe3a84e4a4504b40550256e13da1c284da4bf145..c93dbd16ad1e90eaa891c5dcc51a663cd7ff1780 100644 (file)
 (define-public (stack-stencils axis dir padding stils)
   "Stack stencils @var{stils} in direction @var{axis}, @var{dir}, using
 @var{padding}."
-  (cond
-   ((null? stils) empty-stencil)
-   ((null? (cdr stils)) (car stils))
-   (else (ly:stencil-combine-at-edge
-         (car stils) axis dir (stack-stencils axis dir padding (cdr stils))
-         padding))))
-
-(define-public (stack-stencils-padding-list axis dir padding stils)
+  (reduce
+   (lambda (next front)
+     (ly:stencil-stack front axis dir next padding))
+   empty-stencil
+   stils))
+
+(define-public (stack-stencils-padding-list axis dir paddings stils)
   "Stack stencils @var{stils} in direction @var{axis}, @var{dir}, using
-a list of @var{padding}."
-  (cond
-   ((null? stils) empty-stencil)
-   ((null? (cdr stils)) (car stils))
-   (else (ly:stencil-combine-at-edge
-         (car stils)
-         axis dir
-         (stack-stencils-padding-list axis dir (cdr padding) (cdr stils))
-         (car padding)))))
+a list of @var{paddings}."
+  (if (null? stils)
+      empty-stencil
+      (fold
+       (lambda (next padding front)
+         (ly:stencil-stack front axis dir next padding))
+       (car stils)
+       (cdr stils)
+       paddings)))
 
 (define-public (centered-stencil stencil)
   "Center stencil @var{stencil} in both the X and Y directions."