From: Jan Nieuwenhuizen Date: Mon, 6 Jun 2005 07:57:06 +0000 (+0000) Subject: (editor-command-template-alist): Add syn X-Git-Tag: release/2.5.28~11 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c21383ab66c2abe8e42eda7694eb05e876e6be2c;p=lilypond.git (editor-command-template-alist): Add syn editor (Jaap [de Vos]). --- diff --git a/ChangeLog b/ChangeLog index f7a452c114..138faf9c01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2005-06-06 Jan Nieuwenhuizen + + * scm/editor.scm (editor-command-template-alist): Add syn + editor (Jaap [de Vos]). + +2005-06-05 Jan Nieuwenhuizen + + * scripts/lilypond-ps2png.scm: + * scm/ps-to-png.scm: New file. + + * scm/backend-library.scm (postscript->png): Use it. + + * scripts/lilypond-ps-to-png.py: Remove file. + + * python/lilylib.py (get_bbox, make_ps_images): Remove. + 2005-06-03 Han-Wen Nienhuys * lily/auto-beam-engraver.cc (acknowledge_grob): remove dead code. diff --git a/THANKS b/THANKS index 733d932854..9f83f7a163 100644 --- a/THANKS +++ b/THANKS @@ -83,6 +83,7 @@ Paul Scott Richard Schoeller Rob Platt Roman Stöckl-Schmidt +Russ Jorgensen Stephen McCarthy Sven Axelsson Tapio Tuovila diff --git a/scm/backend-library.scm b/scm/backend-library.scm index c32c5b82e6..c9d72d8f5d 100644 --- a/scm/backend-library.scm +++ b/scm/backend-library.scm @@ -33,7 +33,7 @@ "\"")) (define-public (postscript->pdf papersizename name) - (let* ((pdf-name (string-append (basename name ".ps") ".pdf" )) + (let* ((pdf-name (string-append (basename name ".ps") ".pdf")) (cmd (format #f "gs\ -dSAFER\ @@ -66,28 +66,17 @@ (ly:system cmd) (if (running-from-gui?) (delete-file name)))) -(define-public (postscript->png resolution papersizename name) - (let* ((prefix (ly:effective-prefix)) - - ;; run the source, if we are in the build-directory - (ps2png-source (if prefix - (format "~a/scripts/lilypond-ps2png.py" prefix) - "lilypond-ps2png")) - (cmd (format #f - "~a --resolution=~S --papersize=~a~a ~S" - (if (file-exists? ps2png-source) - (format "python ~a" ps2png-source) - "lilypond-ps2png") - resolution - (sanitize-command-option papersizename) - (if (ly:get-option 'verbose) " --verbose " "") - name))) +(use-modules (scm ps-to-png)) +(define-public (postscript->png resolution paper-size-name 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 ((paper-size (sanitize-command-option paper-size-name)) + (verbose? (ly:get-option 'verbose)) + (rename-page-1? #f)) (ly:message (_ "Converting to ~a...") "PNG") - (ly:system cmd) + (make-ps-images name resolution paper-size rename-page-1? verbose?) (ly:progress "\n"))) (define-public (postprocess-output paper-book module filename formats) diff --git a/scm/editor.scm b/scm/editor.scm index 1d17b61d4b..5fdd7f4eb6 100644 --- a/scm/editor.scm +++ b/scm/editor.scm @@ -36,6 +36,7 @@ ("nedit" . "nc -noask +%(line)s %(file)s") ("gedit" . "gedit +%(line)s %(file)s") ("jedit" . "jedit -reuseview %(file)s +line:%(line)s") + ("syn" . "syn -line %(line)s -col %(column)s %(file)s") ("lilypad" . "lilypad +%(line)s:%(column)s %(file)s"))) (define (get-command-template alist editor) diff --git a/scm/ps-to-png.scm b/scm/ps-to-png.scm new file mode 100644 index 0000000000..20c69b1148 --- /dev/null +++ b/scm/ps-to-png.scm @@ -0,0 +1,117 @@ +;;;; ps-to-png.scm -- +;;;; +;;;; source file of the GNU LilyPond music typesetter +;;;; +;;;; (c) 2005 Jan Nieuwenhuizen + +(define-module (scm ps-to-png)) + +(use-modules + (ice-9 optargs) + (ice-9 regex) + (ice-9 rdelim) + (srfi srfi-1)) + +;; gettext wrapper for guile < 1.7.2 +(if (defined? 'gettext) + (define-public _ gettext) + (define-public (_ x) x)) + +(define (re-sub re sub string) + (regexp-substitute/global #f re string 'pre sub 'post)) + +(define (read port) + (let ((s (read-delimited "" port))) + (if (eof-object? s) "" s))) + +(define (dir-listing dir-name) + (define (dir-helper dir lst) + (let ((e (readdir dir))) + (if (eof-object? e) lst (dir-helper dir (cons e lst))))) + (reverse (dir-helper (opendir dir-name) '()))) + +(define (dir-re dir re) + (filter (lambda (x) (string-match re x)) (dir-listing dir))) + +(define BOUNDING-BOX-RE + "^%%BoundingBox: (-?[0-9]+) (-?[0-9]+) (-?[0-9]+) (-?[0-9]+)") + +(define (get-bbox file-name) + (let* ((bbox (string-append file-name ".bbox")) + ;; -sOutputFile does not work with bbox? + (cmd (format #t "gs\ + -sDEVICE=bbox\ + -q\ + -dNOPAUSE\ + ~S\ + -c showpage\ + -c quit 2>~S" + file-name bbox)) + (status (system cmd)) + (s (read (open-file bbox "r"))) + (m (string-match BOUNDING_BOX_RE s))) + (display m) + (newline) + (if m + (list->vector + (map (lambda (x) (string->number (car x))) (vector->list m))) + #f))) + +(define-public (make-ps-images ps-name . rest) + (let-optional + rest ((resolution 90) + (paper-size "a4") + (rename-page-1? #f) + (verbose? #f)) + (let* ((base (basename (re-sub "\.e?ps" "" ps-name))) + (header (read (open-file ps-name "r"))) + (png1 (string-append base ".png")) + (pngn (string-append base "-page%d.png")) + (pngn-re (re-sub "%d" "[0-9]*" pngn)) + (multi-page? (string-match "\n%%Pages: " header)) + (output-file (if multi-page? pngn png1)) + ;;png16m is because Lily produces color nowadays. + (cmd (format #f (if multi-page? + "gs\ + -dEPSCrop\ + -dGraphicsAlphaBits=4\ + -dNOPAUSE\ + -dTextAlphaBits=4\ + -sDEVICE=png16m\ + -sOutputFile='~a'\ + -sPAPERSIZE=~a\ + -q\ + -r~S\ + '~a'\ + -c showpage\ + -c quit" + "gs\ + -s\ + -dGraphicsAlphaBits=4\ + -dNOPAUSE\ + -dTextAlphaBits=4\ + -sDEVICE=png16m\ + -sOutputFile='~a'\ + -sPAPERSIZE=~a\ + -q\ + -r~S\ + '~a'\ + -c quit") + output-file paper-size resolution ps-name)) + (foo (for-each delete-file (append (dir-re "." png1) + (dir-re "." pngn-re)))) + (bar (if verbose? + (begin + (format (current-error-port) (_ "Invoking `~a'...") cmd) + (newline (current-error-port))))) + (status (system cmd))) + (if (not (= status 0)) + (begin + (map delete-file + (append (dir-re "." png1) (dir-re "." pngn-re))) + (format (current-error-port) + (format #f (_ "~a exited with status: ~S") "GS" status)) + (exit 1))) + (if (and rename-page-1? multi-page?) + (rename (re-sub "%d" "1" pngn) png1)) + (append (dir-re "." png1) (dir-re "." pngn-re))))) diff --git a/scripts/lilypond-invoke-editor.scm b/scripts/lilypond-invoke-editor.scm index a9cf32c249..18dff212e6 100755 --- a/scripts/lilypond-invoke-editor.scm +++ b/scripts/lilypond-invoke-editor.scm @@ -44,11 +44,11 @@ (define (show-help port) (format port (_ "Usage: lilypond-invoke-editor [textedit://]FILE:LINE:COLUMN -Visit a file and position the cursor +Visit a file and position the cursor. Options: - -h,--help show this help - -v,--version show version + -h, --help show this help + -v, --version show version "))) (define (parse-options args) @@ -66,9 +66,6 @@ Options: (show-version (current-error-port)) files)) -;;(define (re-sub re sub string) -;; (let ((sub-string (if (string? sub) sub (sub re)))) -;; (regexp-substitute/global #f re string 'pre sub-string 'post))) (define (re-sub re sub string) (regexp-substitute/global #f re string 'pre sub 'post)) @@ -120,7 +117,7 @@ Options: (if (not (= (length files) 1)) (begin (show-help (current-error-port)) - (exit 1))) + (exit 2))) (set! %load-path (cons LILYPONDPREFIX %load-path)) (primitive-eval '(use-modules (scm editor))) (let* ((uri (car files)) diff --git a/scripts/lilypond-ps2png.py b/scripts/lilypond-ps2png.py deleted file mode 100644 index 194af0b31d..0000000000 --- a/scripts/lilypond-ps2png.py +++ /dev/null @@ -1,77 +0,0 @@ -#!@PYTHON@ - -import getopt -import glob -import os -import string -import sys - -datadir = '@local_lilypond_datadir@' -if not os.path.isdir (datadir): - datadir = '@lilypond_datadir@' -if os.environ.has_key ('LILYPONDPREFIX') : - datadir = os.environ['LILYPONDPREFIX'] - while datadir[-1] == os.sep: - datadir= datadir[:-1] - -sys.path.insert (0, os.path.join (datadir, 'python')) - -# Customize these -#if __name__ == '__main__': - -import lilylib as ly -global _;_=ly._ -global re;re = ly.re - -preview_resolution = 90 -# Use /etc/papersize? -preview_papersize = "a4" - -# lilylib globals -program_name = os.path.basename (sys.argv[0]) -verbose_p = 0 -program_version = '@TOPLEVEL_VERSION@' -pseudo_filter_p = 0 # ugr. - -help_summary = _ ("Convert PostScript to PNG image.") -copyright = ('Han-Wen Nienhuys + +(use-modules + (ice-9 getopt-long) + (ice-9 regex) + (srfi srfi-13)) + +(define PROGRAM-NAME "lilypond-ps2png") +(define TOPLEVEL-VERSION "@TOPLEVEL_VERSION@") +(define DATADIR "@datadir@") +(define COMPILE-TIME-PREFIX + (format #f "~a/lilypond/~a" DATADIR TOPLEVEL-VERSION)) + +(define paper-size "a4") +(define resolution 90) +(define verbose? #f) +(define rename-page-1 #f) + +;; argv0 relocation -- do in wrapper? +(define LILYPONDPREFIX + (or (getenv "LILYPONDPREFIX") + (let* ((bindir (dirname (car (command-line)))) + (prefix (dirname bindir)) + (lilypond-prefix + (if (eq? prefix (dirname DATADIR)) COMPILE-TIME-PREFIX + (format #f "~a/share/lilypond/~a" + prefix TOPLEVEL-VERSION)))) + lilypond-prefix))) + +;; gettext wrapper for guile < 1.7.2 +(if (defined? 'gettext) + (define-public _ gettext) + (define-public (_ x) x)) + +(define (show-version port) + (format port "~a (GNU LilyPond) ~a \n" PROGRAM-NAME TOPLEVEL-VERSION)) + +(define (show-help port) + (format port (_ "Usage: lilypond-ps2png FILE + +Convert PostScript file to PNG images. + +Options: + -h, --help show this help + -P, --paper-size=PAPER use paper size PAPER + -R, --resolution=RES use resolution RES + -V, --verbose be verbose + -v, --version show version +"))) + +(define (parse-options args) + (let* ((options (getopt-long args + '((help (single-char #\h)) + (verbose (single-char #\V)) + (version (single-char #\v)) + (paper-size (single-char #\P) (value #t)) + ;; compatibility + (papersize (value #t)) + (resolution (single-char #\R) (value #t))))) + (files (cdr (assq '() options)))) + (if (assq 'help options) + (begin + (show-version (current-output-port)) + (show-help (current-output-port)) + (exit 0))) + (if (assq 'version options) + (begin (show-version (current-output-port)) (exit 0))) + (if (assq 'verbose options) + (begin + (set! verbose? #t) + (debug-enable 'debug) + (debug-enable 'backtrace))) + + (let ((o (or (assq-ref 'paper-size options) + (assq-ref 'papersize options)))) + (if o (set! paper-size o))) + (let ((o (assq-ref 'resolution options))) + (if o (set! resolution o))) + (show-version (current-error-port)) + files)) + +(define (main args) + (let ((files (parse-options args))) + (if (= (length files) 0) + (begin + (show-help (current-error-port)) + (exit 2))) + (set! %load-path (cons LILYPONDPREFIX %load-path)) + (primitive-eval '(use-modules (scm ps-to-png))) + (for-each + (lambda + (x) + (let ((png-files + (make-ps-images x paper-size resolution rename-page-1 verbose?))) + (format (current-error-port) (_ "Wrote `~a'") (string-join png-files)) + (newline (current-error-port)))) + files)))