From 09dc4a148bc43eefe56559d71680ac8a05a50354 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 6 Mar 2006 13:42:18 +0000 Subject: [PATCH] (paper-alist): no decimals for Ax paper sizes. --- ChangeLog | 2 ++ input/regression/page-spacing.ly | 2 +- lily/dimensions-scheme.cc | 61 ++++++++++++++++++++++++++++++++ lily/dimensions.cc | 61 -------------------------------- scm/framework-ps.scm | 48 +++++++++++++++++-------- scm/paper.scm | 14 +++++--- 6 files changed, 106 insertions(+), 82 deletions(-) create mode 100644 lily/dimensions-scheme.cc diff --git a/ChangeLog b/ChangeLog index ffcd519a38..b9c7609bb0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2006-03-06 Han-Wen Nienhuys + * scm/paper.scm (paper-alist): no decimals for Ax paper sizes. + * ly/engraver-init.ly: init vocalName to nil. 2006-03-05 Erik Sandberg diff --git a/input/regression/page-spacing.ly b/input/regression/page-spacing.ly index 3d37679ddd..a08ca5902c 100644 --- a/input/regression/page-spacing.ly +++ b/input/regression/page-spacing.ly @@ -67,7 +67,7 @@ By setting @code{annotatespacing}, we can see the effect of each property. } \paper { ragged-last-bottom = ##f - annotatespacing = ##t + annotate-spacing = ##t between-system-space = 1.0 #(set! text-font-defaults (acons diff --git a/lily/dimensions-scheme.cc b/lily/dimensions-scheme.cc new file mode 100644 index 0000000000..106eb05c23 --- /dev/null +++ b/lily/dimensions-scheme.cc @@ -0,0 +1,61 @@ +/* + dimensions-scheme.cc -- implement Dimension handling + + source file of the GNU LilyPond music typesetter + + (c) 1997--2006 Han-Wen Nienhuys +*/ + +#include "lily-guile.hh" +#include "dimensions.hh" +#include "warn.hh" + +LY_DEFINE (ly_pt, "ly:pt", + 1, 0, 0, (SCM num), + "@var{num} printer points") +{ + SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, + "number"); + return scm_from_double (point_constant + * scm_to_double (num)); +} + +LY_DEFINE (ly_cm, "ly:cm", + 1, 0, 0, (SCM num), + "@var{num} cm") +{ + SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, + "number"); + return scm_from_double (cm_constant + * scm_to_double (num)); +} + +LY_DEFINE (ly_inch, "ly:inch", + 1, 0, 0, (SCM num), + "@var{num} inches") +{ + SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, + "number"); + return scm_from_double (inch_constant + * scm_to_double (num)); +} + +LY_DEFINE (ly_mm, "ly:mm", + 1, 0, 0, (SCM num), + "@var{num} mm") +{ + SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, + "number"); + return scm_from_double (mm_constant + * scm_to_double (num)); +} + +LY_DEFINE (ly_bp, "ly:bp", + 1, 0, 0, (SCM num), + "@var{num} bigpoints (1/72th inch)") +{ + SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, + "number"); + return scm_from_double (bigpoint_constant + * scm_to_double (num)); +} diff --git a/lily/dimensions.cc b/lily/dimensions.cc index 73075d442f..e69de29bb2 100644 --- a/lily/dimensions.cc +++ b/lily/dimensions.cc @@ -1,61 +0,0 @@ -/* - dimensions.cc -- implement Dimension handling - - source file of the GNU LilyPond music typesetter - - (c) 1997--2006 Han-Wen Nienhuys -*/ - -#include "lily-guile.hh" -#include "dimensions.hh" -#include "warn.hh" - -LY_DEFINE (ly_pt, "ly:pt", - 1, 0, 0, (SCM num), - "@var{num} printer points") -{ - SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, - "number"); - return scm_from_double (point_constant - * scm_to_double (num)); -} - -LY_DEFINE (ly_cm, "ly:cm", - 1, 0, 0, (SCM num), - "@var{num} cm") -{ - SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, - "number"); - return scm_from_double (cm_constant - * scm_to_double (num)); -} - -LY_DEFINE (ly_inch, "ly:inch", - 1, 0, 0, (SCM num), - "@var{num} inches") -{ - SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, - "number"); - return scm_from_double (inch_constant - * scm_to_double (num)); -} - -LY_DEFINE (ly_mm, "ly:mm", - 1, 0, 0, (SCM num), - "@var{num} mm") -{ - SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, - "number"); - return scm_from_double (mm_constant - * scm_to_double (num)); -} - -LY_DEFINE (ly_bp, "ly:bp", - 1, 0, 0, (SCM num), - "@var{num} bigpoints (1/72th inch)") -{ - SCM_ASSERT_TYPE (scm_is_number (num), num, SCM_ARG1, __FUNCTION__, - "number"); - return scm_from_double (bigpoint_constant - * scm_to_double (num)); -} diff --git a/scm/framework-ps.scm b/scm/framework-ps.scm index 607a05a437..a8e94b628b 100644 --- a/scm/framework-ps.scm +++ b/scm/framework-ps.scm @@ -24,9 +24,6 @@ ;;(define pdebug stderr) (define (pdebug . rest) #f) -(define mm-to-bigpoint - (/ 72 25.4)) - (define-public (ps-font-command font) (let* ((name (ly:font-file-name font)) (magnify (ly:font-magnification font))) @@ -97,7 +94,7 @@ (string-append "/lily-output-units " - (number->string mm-to-bigpoint) + (number->string (/ (ly:bp 1))) " def %% millimeter\n" (output-entry "staff-line-thickness" 'line-thickness) (output-entry "line-width" 'line-width) @@ -113,9 +110,7 @@ (ly:outputter-dump-string outputter (string-append - "%%Page: " - (number->string page-number) " " (number->string page-count) "\n" - + (format "%%Page: ~a ~a\n" page-number page-number) "%%BeginPageSetup\n" (if landscape? "page-width output-scale lily-output-units mul mul 0 translate 90 rotate\n" @@ -160,7 +155,23 @@ (supplies-or-needs paper load-fonts?) "%%EndComments\n")) -(define (page-header paper page-count load-fonts?) +(define (ps-document-media paper) + (format "%%DocumentMedia: ~a ~$ ~$ ~a ~a ~a\n" + (ly:output-def-lookup paper 'papersizename) + (/ (* + (ly:output-def-lookup paper 'output-scale) + (ly:output-def-lookup paper 'paper-width)) (ly:bp 1)) + (/ (* + (ly:output-def-lookup paper 'paper-height) + (ly:output-def-lookup paper 'output-scale)) + (ly:bp 1)) + 80 ;; weight + "()" ;; color + "()" ;; type + )) + + +(define (file-header paper page-count load-fonts?) (string-append "%!PS-Adobe-3.0\n" "%%Creator: LilyPond " (lilypond-version) @@ -172,8 +183,7 @@ (if (eq? (ly:output-def-lookup paper 'landscape) #t) "Landscape\n" "Portrait\n") - "%%DocumentPaperSizes: " - (ly:output-def-lookup paper 'papersizename) "\n" + (ps-document-media paper) (supplies-or-needs paper load-fonts?) "%%EndComments\n")) @@ -393,6 +403,7 @@ (pfas (map font-loader font-names))) pfas)) + (display "%%BeginProlog\n" port) (if load-fonts? (for-each (lambda (f) @@ -406,7 +417,10 @@ ;; adobe note 5002: should initialize variables before loading routines. (display (procset "music-drawing-routines.ps") port) (display (procset "lilyponddefs.ps") port) - (display "init-lilypond-parameters\n" port)) + + (display "%%EndProlog\n" port) + + (display "%%BeginSetup\ninit-lilypond-parameters\n%%EndSetup\n\n" port)) (define-public (output-framework basename book scopes fields) (let* ((filename (format "~a.ps" basename)) @@ -425,7 +439,11 @@ (port (ly:outputter-port outputter))) (output-scopes scopes fields basename) - (display (page-header paper page-count #t) port) + (display (file-header paper page-count #t) port) + (display "\n%%BeginDefaults +%%PageMedia: a4 +%%EndDefaults\n" port) + (write-preamble paper #t port) (for-each @@ -440,12 +458,12 @@ (ly:output-formats)))) (define-public (dump-stencil-as-EPS paper dump-me filename load-fonts?) - (define (mm-to-bp-box mmbox) + (define (to-bp-box mmbox) (let* ((scale (ly:output-def-lookup paper 'output-scale)) (box (map (lambda (x) (inexact->exact - (round (* x scale mm-to-bigpoint)))) mmbox))) + (round (/ (* x scale) (ly:bp 1))))) mmbox))) (list (car box) (cadr box) @@ -478,7 +496,7 @@ ;; (list (min left-overshoot (car xext)) (car yext) (cdr xext) (cdr yext)))) - (rounded-bbox (mm-to-bp-box bbox)) + (rounded-bbox (to-bp-box bbox)) (port (ly:outputter-port outputter)) (header (eps-header paper rounded-bbox load-fonts?))) diff --git a/scm/paper.scm b/scm/paper.scm index 19e92824cb..65c5ef33d8 100644 --- a/scm/paper.scm +++ b/scm/paper.scm @@ -73,11 +73,15 @@ (module-define! old-mod '$defaultpaper new-paper))) (define-public paper-alist - '(("a7" . (cons (* 74.48 mm) (* 105 mm))) - ("a6" . (cons (* 105 mm) (* 148.95 mm))) - ("a5" . (cons (* 148.95 mm) (* 210 mm))) - ("a4" . (cons (* 210 mm) (* 297.9 mm))) - ("a3" . (cons (* 297.9 mm) (* 420 mm))) + + ;; don't use decimals. + ;; ISO 216 has a tolerance of +- 2mm + + '(("a7" . (cons (* 74 mm) (* 105 mm))) + ("a6" . (cons (* 105 mm) (* 148 mm))) + ("a5" . (cons (* 148 mm) (* 210 mm))) + ("a4" . (cons (* 210 mm) (* 297 mm))) + ("a3" . (cons (* 297 mm) (* 420 mm))) ("legal" . (cons (* 8.5 in) (* 14.0 in))) ("letter" . (cons (* 8.5 in) (* 11.0 in))) ("11x17" . (cons (* 11.0 in) (* 17.0 in))) -- 2.39.5