From: Han-Wen Nienhuys Date: Mon, 6 Sep 2004 23:01:58 +0000 (+0000) Subject: * scm/framework-ps.scm (output-framework): handle landscape settings. X-Git-Tag: release/2.3.15~17 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=b5019963bc908deaf965ba3dd56948ced811a385;p=lilypond.git * scm/framework-ps.scm (output-framework): handle landscape settings. * ps/lilyponddefs.ps: cleanup. --- diff --git a/ChangeLog b/ChangeLog index d56829a1cc..5ba86bf98c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-09-07 Han-Wen Nienhuys + + * scm/framework-ps.scm (output-framework): handle landscape settings. + + * ps/lilyponddefs.ps: cleanup. + 2004-09-06 Han-Wen Nienhuys * scm/define-grobs.scm (all-grob-descriptions): unset diff --git a/input/regression/page-breaks.ly b/input/regression/page-breaks.ly index c6a06c68da..12d64e59f8 100644 --- a/input/regression/page-breaks.ly +++ b/input/regression/page-breaks.ly @@ -22,7 +22,7 @@ texidoc = "Stress optimal page breaking. This should look piece = "Piece" } -#(set-default-paper-size "a6") +#(set-default-paper-size "a6" 'portrait) pattern = { a b c d \break } diff --git a/ps/lilyponddefs.ps b/ps/lilyponddefs.ps index edd8448155..f4897127c9 100644 --- a/ps/lilyponddefs.ps +++ b/ps/lilyponddefs.ps @@ -12,19 +12,19 @@ /set-ps-scale-to-lily-scale { output-scale output-scale scale } bind def - /init-paper { - gsave - .1 setlinewidth - clippath pathbbox newpath - /vsize exch def - /hsize exch def pop pop pop pop - % FIXME - /top-margin 2 def + gsave + .1 setlinewidth + clippath pathbbox newpath + /vsize exch def + /hsize exch def pop pop pop + % FIXME + /top-margin 2 def hsize line-width sub 2 div /left-margin exch def - grestore + grestore } bind def + /place-box { /object exch def @@ -65,8 +65,8 @@ /start-system % x y { gsave - exch output-scale mul exch - output-scale mul vsize exch sub translate + 0 + vsize translate } bind def /stop-system @@ -82,10 +82,9 @@ staff-line-thickness setlinewidth -% set postscript paper size -paper-size -% initialise paper dimensions staff-height init-paper + + % end lilyponddefs.ps diff --git a/scm/framework-ps.scm b/scm/framework-ps.scm index 67c35ebfc0..e091ad09b5 100644 --- a/scm/framework-ps.scm +++ b/scm/framework-ps.scm @@ -164,14 +164,24 @@ (output-entry "staff-height" 'staffheight) ;junkme. "/output-scale " (number->string (ly:output-def-lookup paper 'outputscale)) - " lily-output-units mul def \n")) + " lily-output-units mul def \n" + (output-entry "page-height" 'vsize) + (output-entry "page-width" 'hsize) + )) -(define (dump-page outputter page page-number page-count) +(define (dump-page outputter page page-number page-count landscape?) (ly:outputter-dump-string outputter (string-append "%%Page: " (number->string page-number) " " (number->string page-count) "\n" - "0 0 start-system { " + + "%%BeginPageSetup\n" + (if landscape? + "page-width output-scale mul 0 translate 90 rotate\n" + "") + "%%EndPageSetup\n" + + "start-system { " "set-ps-scale-to-lily-scale " "\n")) (ly:outputter-dump-stencil outputter page) @@ -182,6 +192,10 @@ "%%Creator: creator time-stamp\n" "%%BoundingBox: " (string-join (map number->string bbox) " ") "\n" + "%% Orientation: " + (if (eq? (ly:output-def-lookup bookpaper 'landscape) #t) + "Landscape\n" + "Portrait\n") "%%EndComments\n")) (define (page-header bookpaper page-count) @@ -198,13 +212,18 @@ (ly:gulp-file "music-drawing-routines.ps") (ly:gulp-file "lilyponddefs.ps") (load-fonts bookpaper) - (define-fonts bookpaper))) + (define-fonts bookpaper) + + + )) (define-public (output-framework outputter book scopes fields basename) (let* ((bookpaper (ly:paper-book-book-paper book)) (pages (ly:paper-book-pages book)) + (landscape? (eq? (ly:output-def-lookup bookpaper 'landscape?) #t)) (page-number (1- (ly:output-def-lookup bookpaper 'firstpagenumber))) (page-count (length pages))) + (for-each (lambda (x) (ly:outputter-dump-string outputter x)) @@ -215,8 +234,9 @@ (for-each (lambda (page) (set! page-number (1+ page-number)) - (dump-page outputter page page-number page-count)) + (dump-page outputter page page-number page-count landscape?)) pages) + (ly:outputter-dump-string outputter "%%Trailer\n%%EOF\n"))) (define-public (output-preview-framework outputter book scopes fields basename) @@ -248,7 +268,7 @@ (ly:outputter-dump-string outputter - (string-append "0 0 start-system { " + (string-append "start-system { " "set-ps-scale-to-lily-scale " "\n")) diff --git a/scm/paper.scm b/scm/paper.scm index 599eb51a95..13fadc5bdd 100644 --- a/scm/paper.scm +++ b/scm/paper.scm @@ -94,7 +94,10 @@ (module-define! m 'firstpagenumber 1) (module-define! m 'rightmargin (* 10 mm)))) -(define (internal-set-paper-size module name) +(define (internal-set-paper-size module name landscape?) + (define (swap x) + (cons (cdr x) (car x))) + (let* ((entry (assoc name paper-alist)) (is-bookpaper? (module-defined? module 'is-bookpaper)) (mm (eval 'mm module))) @@ -104,23 +107,34 @@ (ly:warning "This is not a \\paper {} object, ~S" module)) ((pair? entry) - (set! entry (eval (cdr entry) module)) - (set-paper-dimensions module (car entry) (cdr entry)) - (module-define! module 'papersize name) - (module-define! module 'papersizename name) - (set-paper-dimensions module (car entry) (cdr entry))) + + + + (set! entry (eval (cdr entry) module)) + (if landscape? + (set! entry (swap entry))) + (set-paper-dimensions module (car entry) (cdr entry)) + (module-define! module 'papersize name) + (module-define! module 'papersizename name) + (if landscape? + (module-define! module 'landscape #t)) + ) (else (ly:warn (string-append "Unknown papersize: " name)))) )) -(define-public (set-default-paper-size name) - (internal-set-paper-size (ly:output-def-scope (eval '$defaultbookpaper (current-module))) - name)) +(define-public (set-default-paper-size name . rest) + (internal-set-paper-size + (ly:output-def-scope (eval '$defaultbookpaper (current-module))) + name + (memq 'landscape rest) + )) -(define-public (set-paper-size name) +(define-public (set-paper-size name . rest) (if (module-defined? (current-module) 'is-paper) - (internal-set-paper-size (current-module) name) + (internal-set-paper-size (current-module) name + (memq 'landscape rest)) ;;; TODO: should raise (generic) exception with throw, and catch ;;; that in parse-scm.cc diff --git a/scripts/lilypond-latex.py b/scripts/lilypond-latex.py index faec0d33f9..67adc7f4c5 100644 --- a/scripts/lilypond-latex.py +++ b/scripts/lilypond-latex.py @@ -82,7 +82,7 @@ global _;_=ly._ global re;re = ly.re # lilylib globals -program_name = 'lilypond' +program_name = 'lilypond-latex' program_version = '@TOPLEVEL_VERSION@' # input without \book, use classic latex definitions classic_p = 0 @@ -157,6 +157,7 @@ lilypond_binary = os.path.join ('@bindir@', 'lilypond') if '@bindir@' == ('@' + 'bindir@') or not os.path.exists (lilypond_binary): lilypond_binary = 'lilypond' +lilypond_binary += ' --format=tex ' ## Init to empty; values here take precedence over values in the file extra_init = {