From: Nicolas Sceaux <nicolas.sceaux@free.fr>
Date: Sun, 22 Jun 2008 08:54:31 +0000 (+0200)
Subject: markuplines: fix vertical spacing of lines when using eg. \justify-lines
X-Git-Tag: release/2.11.50-1~22
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=8a73d3d42fff00ac8e45ba17bf0db344d15c0a1c;p=lilypond.git

markuplines: fix vertical spacing of lines when using eg. \justify-lines
---

diff --git a/scm/define-markup-commands.scm b/scm/define-markup-commands.scm
index d09df9e0a5..b6c539dc40 100644
--- a/scm/define-markup-commands.scm
+++ b/scm/define-markup-commands.scm
@@ -2196,13 +2196,26 @@ when @var{label} is not found."
 ;; Markup list commands
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(define-public (space-lines baseline-skip lines)
-  (map (lambda (line)
-	 (stack-lines DOWN 0.0 (/ baseline-skip 2.0)
-		      (list point-stencil
-			    line
-			    point-stencil)))
-       lines))
+(define-public (space-lines baseline stils)
+  (let space-stil ((prev-stil #f)
+		   (stil (car stils))
+		   (rest (cdr stils))
+		   (result (list)))
+    (cond ((null? rest)
+	   (reverse! result))
+	  ((not prev-stil)
+	   (space-stil stil (car rest) (cdr rest) (list stil)))
+	  (else
+	   (let* ((dy (max (- baseline
+			      (+ (- (interval-bound (ly:stencil-extent prev-stil Y) DOWN))
+				 (interval-bound (ly:stencil-extent stil Y) UP)))
+			   0.0))
+		  (new-stil (ly:make-stencil
+			     (ly:stencil-expr stil)
+			     (ly:stencil-extent stil X)
+			     (cons (interval-bound (ly:stencil-extent stil Y) DOWN)
+				   (+ (interval-bound (ly:stencil-extent stil Y) UP) dy)))))
+	     (space-stil stil (car rest) (cdr rest) (cons new-stil result)))))))
 
 (define-builtin-markup-list-command (justified-lines layout props args)
   (markup-list?)