X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fframework-ps.scm;h=d6bf44eff2bde58008ce6ad70a2a64501e3f576e;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=1f5860433c23e5bcb33843df8f3990d574fae38b;hpb=bf7a2e96ce259693a62a24fa08655bfa423f22f7;p=lilypond.git diff --git a/scm/framework-ps.scm b/scm/framework-ps.scm index 1f5860433c..d6bf44eff2 100644 --- a/scm/framework-ps.scm +++ b/scm/framework-ps.scm @@ -2,7 +2,7 @@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; -;;;; (c) 2004--2006 Han-Wen Nienhuys +;;;; (c) 2004--2008 Han-Wen Nienhuys (define-module (scm framework-ps)) @@ -118,7 +118,7 @@ "set-ps-scale-to-lily-scale " "\n")) (ly:outputter-dump-stencil outputter page) - (ly:outputter-dump-string outputter "stroke grestore \nshowpage\n")) + (ly:outputter-dump-string outputter "stroke grestore\nshowpage\n")) (define (supplies-or-needs paper load-fonts?) (define (extract-names font) @@ -331,7 +331,7 @@ (if (not embed) (begin - (set! embed "% failed \n") + (set! embed "% failed\n") (ly:warning (_ "cannot extract file matching ~a from ~a") name filename))) embed)) @@ -535,19 +535,22 @@ (define-public (dump-stencil-as-EPS-with-bbox paper dump-me filename load-fonts bbox) - (define (to-bp-box mmbox) + "Create an EPS file from stencil DUMP-ME to FILENAME. BBOX has format + (left-x, lower-y, right x, up-y). If LOAD-FONTS set, include fonts inline." + + (define (to-rounded-bp-box box) + "Convert box to 1/72 inch with rounding to enlarge the box." (let* ((scale (ly:output-def-lookup paper 'output-scale)) - (box (map - (lambda (x) - (if (or (nan? x) (inf? x)) - 0 - (inexact->exact - (round (/ (* x scale) (ly:bp 1)))))) mmbox))) - - (list (car box) - (cadr box) - (max (1+ (car box)) (caddr box)) - (max (1+ (cadr box)) (cadddr box)) + (strip-non-number (lambda (x) + (if (or (nan? x) (inf? x)) 0.0 x))) + (directed-round (lambda (x rounder) + (inexact->exact + (rounder (/ (* (strip-non-number x) scale) + (ly:bp 1))))))) + (list (directed-round (car box) floor) + (directed-round (cadr box) floor) + (directed-round (max (1+ (car box)) (caddr box)) ceiling) + (directed-round (max (1+ (cadr box)) (cadddr box)) ceiling) ))) (let* ((outputter (ly:make-paper-outputter @@ -558,13 +561,13 @@ 'ps)) (port (ly:outputter-port outputter)) - (rounded-bbox (to-bp-box bbox)) + (rounded-bbox (to-rounded-bp-box bbox)) (port (ly:outputter-port outputter)) (header (eps-header paper rounded-bbox load-fonts))) (display header port) (write-preamble paper load-fonts port) - (display "gsave set-ps-scale-to-lily-scale \n" port) + (display "gsave set-ps-scale-to-lily-scale\n" port) (ly:outputter-dump-stencil outputter dump-me) (display "stroke grestore\n%%Trailer\n%%EOF\n" port) (ly:outputter-close outputter))) @@ -597,7 +600,7 @@ ((xext (car ext-system-pair)) (paper-system (cdr ext-system-pair)) (yext (paper-system-extent paper-system Y)) - (bbox (list (car xext) (car yext) + (bbox (list (car xext) (car yext) (cdr xext) (cdr yext))) (filename (if (< 0 count) (format "~a-~a" basename count)