]> git.donarmstrong.com Git - lilypond.git/commitdiff
Cleanup and document scale-layout; mark cloned layout by setting
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 13 Mar 2010 05:42:41 +0000 (02:42 -0300)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 22 Mar 2010 12:56:27 +0000 (09:56 -0300)
'clone = #t.

scm/paper.scm

index 6223e5392ecdb0cfd05b0f1179925650b5dfee05..93566d5e453548c455924a3ead9be7d70c02ba08 100644 (file)
@@ -326,25 +326,23 @@ size. SZ is in points"
       ;;; that in parse-scm.cc
       (ly:warning (_ "Must use #(set-paper-size .. ) within \\paper { ... }"))))
 
-(define-public (scale-layout pap scale)
-  (let* ((new-pap (ly:output-def-clone pap))
-        (dim-vars (ly:output-def-lookup pap 'dimension-variables))
-        (old-scope (ly:output-def-scope pap))
-        (scope (ly:output-def-scope new-pap)))
+(define-public (scale-layout paper scale)
+  "Return a clone of the paper, scaled by the given scale factor."
+  (let* ((new-paper (ly:output-def-clone paper))
+        (dim-vars (ly:output-def-lookup paper 'dimension-variables))
+        (old-scope (ly:output-def-scope paper))
+        (scope (ly:output-def-scope new-paper)))
 
     (for-each
      (lambda (v)
        (let* ((var (module-variable old-scope v))
              (val (if (variable? var) (variable-ref var) #f)))
-
+        
         (if (number? val)
-            (module-define! scope v
-                            (/ val scale))
-
-            ;; spurious warnings, eg. for paper-width, paper-height.
-            ;; (ly:warning (_ "not a number, ~S = ~S " v  val))
+            (module-define! scope v (/ val scale))
+            ;; Cannot warn for non-numbers, eg. for paper-width, paper-height.
             )))
-
      dim-vars)
-
-    new-pap))
+    ;; Mark the clone.
+    (ly:output-def-set-variable! new-paper 'cloned #t)
+    new-paper))