]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/clip-region.scm
Add '-dcrop' option to ps and svg backends
[lilypond.git] / scm / clip-region.scm
index 14f593adc6b9315449a3319001b4f6a6cfc40533..277bbe1c7940ed1d9d0d38a9786d7460ddc32ba6 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2006--2010 Han-Wen Nienhuys <hanwen@lilypond.org>
+;;;; Copyright (C) 2006--2015 Han-Wen Nienhuys <hanwen@lilypond.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
 ;;;; it under the terms of the GNU General Public License as published by
 
 (use-modules (lily))
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; The procedures shown in this list have been moved to
+;; scm/output-lib.scm
+;;
+;;
+;;      (define-public (make-rhythmic-location bar-num num den)
+;;      (define-public (rhythmic-location? a)
+;;      (define-public (make-graceless-rhythmic-location loc)
+;;      (define-public rhythmic-location-measure-position cdr)
+;;      (define-public rhythmic-location-bar-number car)
+;;      (define-public (rhythmic-location<? a b)
+;;      (define-public (rhythmic-location<=? a b)
+;;      (define-public (rhythmic-location>=? a b)
+;;      (define-public (rhythmic-location>? a b)
+;;      (define-public (rhythmic-location=? a b)
+;;      (define-public (rhythmic-location->file-string a)
+;;      (define-public (rhythmic-location->string a)
 
-(define-public (make-rhythmic-location bar-num num den)
-  (cons
-   bar-num (ly:make-moment num den)))
-
-(define-public (rhythmic-location? a)
-  (and (pair? a)
-       (integer? (car a))
-       (ly:moment? (cdr a))))
-
-(define-public (make-graceless-rhythmic-location loc)
-  (make-rhythmic-location
-   (car loc)
-   (ly:moment-main-numerator (rhythmic-location-measure-position loc))
-   (ly:moment-main-denominator (rhythmic-location-measure-position loc))))
-                  
-                                            
-(define-public rhythmic-location-measure-position cdr)
-(define-public rhythmic-location-bar-number car)
-
-(define-public (rhythmic-location<? a b)
-  (cond
-   ((< (car a) (car b)) #t)
-   ((> (car a) (car b)) #f)
-   (else
-    (ly:moment<? (cdr a) (cdr b)))))
-
-(define-public (rhythmic-location<=? a b)
-  (not (rhythmic-location<? b a)))
-(define-public (rhythmic-location>=? a b)
-  (rhythmic-location<? a b))
-(define-public (rhythmic-location>? a b)
-  (rhythmic-location<? b a))
-
-(define-public (rhythmic-location=? a b)
-  (and (rhythmic-location<=? a b)
-       (rhythmic-location<=? b a)))
-
-
-(define-public (rhythmic-location->file-string a)
-  (ly:format "~a.~a.~a"
-         (car a)
-         (ly:moment-main-numerator (cdr a))
-         (ly:moment-main-denominator (cdr a))))
-
-(define-public (rhythmic-location->string a)
-  (ly:format "bar ~a ~a"
-         (car a)
-         (ly:moment->string  (cdr a))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;  Actual clipping logic.
 ;;
 ;; the total of this will be
 ;; O(#systems * #regions)
-;; 
+;;
 ;; we can actually do better by sorting the regions as well,
 ;; but let's leave that for future extensions.
 ;;
 (define-public (system-clipped-x-extent system-grob clip-region)
-  "Return the X-extent of the SYSTEM-GROB when clipped with
-CLIP-REGION. Return #f if not appropriate."
-  
+  "Return the X-extent of @var{system-grob} when clipped with
+@var{clip-region}.  Return @code{#f} if not appropriate."
+
   (let*
       ((region-start (car clip-region))
        (columns (ly:grob-object system-grob 'columns))
        (region-end (cdr clip-region))
        (found-grace-end  #f)
-       (candidate-columns 
-       (filter
-        (lambda (j)
-          (let*
-              ((column (ly:grob-array-ref columns j))
-               (loc (ly:grob-property column 'rhythmic-location))
-               (grace-less (make-graceless-rhythmic-location loc))
-               )
-               
-            (and (rhythmic-location? loc)
-                 (rhythmic-location<=? region-start loc)
-                 (or (rhythmic-location<? grace-less region-end)
-                     (and (rhythmic-location=? grace-less region-end)
-                          (eq? #t (ly:grob-property column 'non-musical))
-
-                          )))
-
-            ))
-        
-        (iota (ly:grob-array-length columns))))
-       
+       (candidate-columns
+        (filter
+         (lambda (j)
+           (let*
+               ((column (ly:grob-array-ref columns j))
+                (loc (ly:grob-property column 'rhythmic-location))
+                (grace-less (make-graceless-rhythmic-location loc))
+                )
+
+             (and (rhythmic-location? loc)
+                  (rhythmic-location<=? region-start loc)
+                  (or (rhythmic-location<? grace-less region-end)
+                      (and (rhythmic-location=? grace-less region-end)
+                           (eq? #t (ly:grob-property column 'non-musical))
+
+                           )))
+
+             ))
+
+         (iota (ly:grob-array-length columns))))
+
        (column-range
-       (if (>= 1 (length candidate-columns))
-           #f
-           (cons (car candidate-columns)
-                 (car (last-pair candidate-columns)))))
+        (if (>= 1 (length candidate-columns))
+            #f
+            (cons (car candidate-columns)
+                  (car (last-pair candidate-columns)))))
 
        (clipped-x-interval
-       (if column-range
-           (cons
-
-            (interval-start
-             (ly:grob-robust-relative-extent
-              (if (= 0 (car column-range))
-                  system-grob
-                  (ly:grob-array-ref columns (car column-range)))
-              system-grob X))
-            
-            (interval-end
-             (ly:grob-robust-relative-extent
-             (if (= (1- (ly:grob-array-length columns)) (cdr column-range))
-                 system-grob
-                 (ly:grob-array-ref columns (cdr column-range)))
-             system-grob X)))
-           
-           
-           #f
-           )))
-    
+        (if column-range
+            (cons
+
+             (interval-start
+              (ly:grob-robust-relative-extent
+               (if (= 0 (car column-range))
+                   system-grob
+                   (ly:grob-array-ref columns (car column-range)))
+               system-grob X))
+
+             (interval-end
+              (ly:grob-robust-relative-extent
+               (if (= (1- (ly:grob-array-length columns)) (cdr column-range))
+                   system-grob
+                   (ly:grob-array-ref columns (cdr column-range)))
+               system-grob X)))
+
+
+            #f
+            )))
+
     clipped-x-interval))