]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/markup.scm
Merge branch 'master' into translation
[lilypond.git] / scm / markup.scm
index 31bbaeeb420bb2d76373fb7d3a0551e40e9739eb..45652c0a5c8c1a63b67ea4b0ca6b944c2dd747e9 100644 (file)
@@ -48,34 +48,26 @@ Example:
 (define-public interpret-markup ly:text-interface::interpret-markup)
 
 (define-public (interpret-markup-list layout props markup-list)
-  (let ((stencils (list)))
-    (for-each (lambda (m)
-                (set! stencils
-                      (if (markup-command-list? m)
-                          (append! (reverse! (apply (car m) layout props (cdr m)))
-                                   stencils)
-                          (cons (interpret-markup layout props m) stencils))))
-              markup-list)
-    (reverse! stencils)))
+  ;; This relies on the markup list returned by a markup list command
+  ;; to be modifiable
+  (reverse!
+   (fold
+    (lambda (m prev)
+      (if (markup-command-list? m)
+          (reverse! (apply (car m) layout props (cdr m)) prev)
+          (cons (interpret-markup layout props m) prev)))
+    '()
+    markup-list)))
 
 (define-public (prepend-alist-chain key val chain)
   (cons (acons key val (car chain)) (cdr chain)))
 
 (define-public (stack-stencil-line space stencils)
-  "DOCME"
-  (if (and (pair? stencils)
-           (ly:stencil? (car stencils)))
-
-      (if (and (pair? (cdr stencils))
-               (ly:stencil? (cadr stencils)))
-          (let* ((tail (stack-stencil-line space (cdr stencils)))
-                 (head (car stencils))
-                 (xoff (+ space (interval-length (ly:stencil-extent head X)))))
-            (ly:stencil-add head
-                            (ly:stencil-translate-axis tail xoff X)))
-          (car stencils))
-      (ly:make-stencil '() '(0 . 0) '(0 . 0))))
-
+  "Adjoin a list of @var{stencils} along the X axis, leaving
+@var{space} between the end of each stencil and the beginning of the
+following stencil.  Stencils with empty Y extent are not given
+@var{space} before them and don't avoid overlapping other stencils."
+  (stack-stencils X RIGHT space (filter ly:stencil? stencils)))
 
 ;;; convert a full markup object to an approximate pure string representation