From: Han-Wen Nienhuys Date: Mon, 11 Dec 2006 22:52:00 +0000 (+0100) Subject: use optargs for ps-to-png , and support different pixmap types. X-Git-Tag: release/2.11.2-1~14 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=7136f455000dbefc3fb776991a01c9784dd7840e;p=lilypond.git use optargs for ps-to-png , and support different pixmap types. Eg. use -dpixmap-type=jpeg. --- diff --git a/scm/backend-library.scm b/scm/backend-library.scm index 07ab29ecd7..5258bcf516 100644 --- a/scm/backend-library.scm +++ b/scm/backend-library.scm @@ -108,8 +108,17 @@ (rename-page-1 #f)) (ly:message (_ "Converting to ~a...") "PNG") - (make-ps-images name resolution paper-width paper-height rename-page-1 verbose - (ly:get-option 'anti-alias-factor)) + + (make-ps-images name + #:resolution resolution + #:page-width paper-width + #:page-height paper-height + #:rename-page-1 rename-page-1 + #:be-verbose verbose + #:anti-alias-factor (ly:get-option 'anti-alias-factor) + #:pixmap-format (ly:get-option 'pixmap-format) + ) + (ly:progress "\n"))) (define-public (postprocess-output paper-book module filename formats) diff --git a/scm/lily.scm b/scm/lily.scm index d64fd57f4e..d886ddb99e 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -48,6 +48,7 @@ similar to chord syntax") "experimental mechanism for remembering tweaks") (point-and-click #t "use point & click") (paper-size "a4" "the default paper size") + (pixmap-format "png16m" "GS format to use for pixel images") (protected-scheme-parsing #t "continue when finding errors in inline scheme are caught in the parser. If off, halt on errors, and print a stack trace.") diff --git a/scm/ps-to-png.scm b/scm/ps-to-png.scm index d76f926a90..2e124ae5ac 100644 --- a/scm/ps-to-png.scm +++ b/scm/ps-to-png.scm @@ -127,26 +127,31 @@ 0))) (define-public (make-ps-images ps-name . rest) - (let-optional - rest ((resolution 90) - page-width - page-height - (rename-page-1? #f) - (verbose? #f) - (aa-factor 1) - ) - - (let* ((base (basename (re-sub "[.]e?ps" "" ps-name))) - (png1 (string-append base ".png")) - (pngn (string-append base "-page%d.png")) + (let-keywords* + rest #f + ((resolution 90) + (page-width 100) + (page-height 100) + (rename-page-1 #f) + (be-verbose #f) + (pixmap-format 'png16m) + (anti-alias-factor 1)) + + (let* ( + (format-str (format "~a" pixmap-format)) + (extension (cond + ((string-contains format-str "png") "png") + ((string-contains format-str "jpg") "jpeg") + ((string-contains format-str "jpeg") "jpeg") + (else + (ly:error "Unknown pixmap format ~a" pixmap-format)))) + (base (basename (re-sub "[.]e?ps" "" ps-name))) + (png1 (format "~a.~a" base pixmap-format)) + (pngn (format "~a-page%d.~a" base pixmap-format)) (page-count (ps-page-count ps-name)) - (multi-page? (> page-count 1)) (output-file (if multi-page? pngn png1)) - ;; png16m is because Lily produces color nowadays. - ;; can't use pngalpha device, since IE is broken. - ;; (gs-variable-options (if multi-page? (format #f "-dDEVICEWIDTHPOINTS=~,2f -dDEVICEHEIGHTPOINTS=~,2f" page-width page-height) @@ -158,16 +163,17 @@ -dGraphicsAlphaBits=4\ -dTextAlphaBits=4\ -dNOPAUSE\ - -sDEVICE=png16m\ + -sDEVICE=~a\ -sOutputFile=~S\ -r~S\ ~S\ -c quit" (search-gs) - (if verbose? "" "-q") + (if be-verbose "" "-q") gs-variable-options + pixmap-format output-file - (* aa-factor resolution) ps-name)) + (* anti-alias-factor resolution) ps-name)) (status 0) (files '())) @@ -178,7 +184,7 @@ (set! cmd (re-sub "=" "#" cmd)) (set! cmd (re-sub "-dSAFER " "" cmd)))) - (set! status (my-system verbose? #f cmd)) + (set! status (my-system be-verbose #f cmd)) (set! files (if multi-page? @@ -193,7 +199,7 @@ (map delete-file files) (exit 1))) - (if (and rename-page-1? multi-page?) + (if (and rename-page-1 multi-page?) (begin (rename-file (re-sub "%d" "1" pngn) png1) (set! files @@ -201,8 +207,8 @@ (cdr files))) )) - (if (not (= 1 aa-factor)) - (for-each (lambda (f) (scale-down-image verbose? aa-factor f)) + (if (not (= 1 anti-alias-factor)) + (for-each (lambda (f) (scale-down-image be-verbose anti-alias-factor f)) files)) files)))