X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fbackend-library.scm;h=9fa094f51892e3eb0e0cad2186c1922ba97bf0b3;hb=7d1ae99102f8563457c5410d941d7edca0192d87;hp=c09e7572d5d3d0a77f687ca37c71e2c6e6c0bd3a;hpb=a4992991028b90b7080ad53a942bdb6c268e9a3c;p=lilypond.git diff --git a/scm/backend-library.scm b/scm/backend-library.scm index c09e7572d5..9fa094f518 100644 --- a/scm/backend-library.scm +++ b/scm/backend-library.scm @@ -2,12 +2,15 @@ ;;;; ;;;; source file of the GNU LilyPond music typesetter ;;;; -;;;; (c) 2005--2006 Jan Nieuwenhuizen +;;;; (c) 2005--2009 Jan Nieuwenhuizen ;;;; Han-Wen Nienhuys ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; backend helpers. +(use-modules (scm ps-to-png) + (ice-9 optargs)) + (define-public (ly:system command . rest) (let* ((status 0) (dev-null "/dev/null") @@ -16,7 +19,9 @@ command (format #f "~a > ~a 2>&1 " command dev-null)))) (if (ly:get-option 'verbose) - (ly:message (_ "Invoking `~a'...") command)) + (begin + (ly:message (_ "Invoking `~a'...") command)) + (ly:progress "\n")) (set! status (if (pair? rest) @@ -71,24 +76,24 @@ (define-public (postscript->pdf paper-width paper-height name) (let* ((pdf-name (string-append - (basename (basename name ".ps") ".eps") + (dir-basename name ".ps" ".eps") ".pdf")) (is-eps (string-match "\\.eps$" name)) (paper-size-string (if is-eps - " -dEPSCrop " - (format "-dDEVICEWIDTHPOINTS=~,2f \ --dDEVICEHEIGHTPOINTS=~,2f " - paper-width paper-height ))) + "-dEPSCrop" + (ly:format "-dDEVICEWIDTHPOINTS=~$\ + -dDEVICEHEIGHTPOINTS=~$" + paper-width paper-height))) - (cmd (format #f + (cmd (simple-format #f "~a\ ~a\ ~a\ ~a\ - -dCompatibilityLevel=1.4 \ + -dCompatibilityLevel=1.4\ -dNOPAUSE\ -dBATCH\ - -r1200 \ + -r1200\ -sDEVICE=pdfwrite\ -sOutputFile=~S\ -c .setpdfwrite\ @@ -96,9 +101,10 @@ " (search-gs) (if (ly:get-option 'verbose) "" "-q") - (if (ly:get-option 'gs-load-fonts) - " -dNOSAFER " - " -dSAFER ") + (if (or (ly:get-option 'gs-load-fonts) + (ly:get-option 'gs-load-lily-fonts)) + "-dNOSAFER" + "-dSAFER") paper-size-string pdf-name name))) @@ -107,24 +113,20 @@ (if (eq? PLATFORM 'windows) (begin (set! cmd (string-regexp-substitute "=" "#" cmd)) - (set! cmd (string-regexp-substitute "-dSAFER " "" cmd)))) - - (if (access? pdf-name W_OK) - (delete-file pdf-name)) + (set! cmd (string-regexp-substitute "-dSAFER " "" cmd)) + (if (access? pdf-name W_OK) + (delete-file pdf-name)))) (ly:message (_ "Converting to `~a'...") pdf-name) (ly:progress "\n") (ly:system cmd))) -(use-modules (scm ps-to-png)) - (define-public (postscript->png resolution paper-width paper-height name) - ;; Do not try to guess the name of the png file, - ;; GS produces PNG files like BASE-page%d.png. - ;;(ly:message (_ "Converting to `~a'...") - ;; (string-append (basename name ".ps") "-page1.png" ))) (let* ((verbose (ly:get-option 'verbose)) (rename-page-1 #f)) + + ;; Do not try to guess the name of the png file, + ;; GS produces PNG files like BASE-page%d.png. (ly:message (_ "Converting to ~a...") "PNG") (make-ps-images name #:resolution resolution @@ -156,7 +158,7 @@ (set! formats (cons "ps" formats))) (for-each (lambda (x) (if (member x formats) (set! new-fmts (cons x new-fmts)))) - '("tex" "dvi" "ps" "pdf" "png")) + '("ps" "pdf" "png")) (uniq-list (reverse new-fmts))) (define (header-to-file file-name key value) @@ -188,3 +190,26 @@ scope))) (apply string-append (map output-scope scopes))) +(define missing-stencil-list '()) + +(define-public (backend-testing output-module) + (define (missing-stencil-expression name) + (begin + (ly:warning (_ "missing stencil expression `~S'") name) + "")) + + (map (lambda (x) + (if (not (module-defined? output-module x)) + (begin + (module-define! output-module x + (lambda* (#:optional y . z) + (missing-stencil-expression x))) + (set! missing-stencil-list (append (list x) + missing-stencil-list))))) + (ly:all-stencil-commands))) + +(define-public (remove-stencil-warnings output-module) + (for-each + (lambda (x) + (module-remove! output-module x)) + missing-stencil-list))