]> git.donarmstrong.com Git - lilypond.git/commitdiff
Shift the BoundingBox to the origin in \epsfile
authorReinhold Kainhofer <reinhold@kainhofer.com>
Tue, 25 Aug 2009 22:13:53 +0000 (00:13 +0200)
committerReinhold Kainhofer <reinhold@kainhofer.com>
Thu, 27 Aug 2009 10:24:52 +0000 (12:24 +0200)
Some files (e.g. the CC licenses have weird bounding boxes, starting
e.g. at 300). So far, lilypond inserted them with a huge offset (exactly
shifted by the coordinates of the bounding box), which is unlike any other
eps-handling application I know.

scm/stencil.scm

index 0f02a55505e1d871c4c4fea03db85aab560409d9..94332b31b4895d22257022c3b79f000568b8b443 100644 (file)
@@ -418,6 +418,9 @@ encloses the contents.
                   0))
        (scaled-bbox
        (map (lambda (x) (* factor x)) bbox))
+       ; We need to shift the whole eps to (0,0), otherwise it will appear 
+       ; displaced in lilypond (displacement will depend on the scaling!)
+       (translate-string (ly:format "~a ~a translate" (- (list-ref bbox 0)) (- (list-ref bbox 1))))
        (clip-rect-string (ly:format
                          "~a ~a ~a ~a rectclip"
                          (list-ref bbox 0) 
@@ -438,8 +441,9 @@ currentpoint translate
 BeginEPSF
 ~a dup scale
 ~a 
+~a
 %%BeginDocument: ~a
-"         factor clip-rect-string
+"         factor translate-string  clip-rect-string
 
           file-name
           )
@@ -448,9 +452,10 @@ BeginEPSF
 EndEPSF
 grestore
 "))
-       
-        (cons (list-ref scaled-bbox 0) (list-ref scaled-bbox 2))
-        (cons (list-ref scaled-bbox 1) (list-ref scaled-bbox 3)))
+        ; Stencil starts at (0,0), since we have shifted the eps, and its 
+         ; size is exactly the size of the scaled bounding box
+        (cons 0 (- (list-ref scaled-bbox 2) (list-ref scaled-bbox 0)))
+        (cons 0 (- (list-ref scaled-bbox 3) (list-ref scaled-bbox 1))))
        
        (ly:make-stencil "" '(0 . 0) '(0 . 0)))
     ))