1 ;;;; framework-svg.scm --
3 ;;;; source file of the GNU LilyPond music typesetter
5 ;;;; (c) 2004 Jan Nieuwenhuizen <janneke@gnu.org>
7 (define-module (scm framework-svg))
9 (use-modules (guile) (lily))
10 (use-modules (srfi srfi-2) (ice-9 regex))
12 ;; FIXME: 0.62 to get paper size right
13 (define output-scale (* 0.62 scale-to-unit))
15 (define-public (output-framework outputter book scopes fields basename)
16 (let* ((paper (ly:paper-book-paper book))
17 (pages (ly:paper-book-pages book))
18 (landscape? (eq? (ly:output-def-lookup paper 'landscape) #t))
19 (page-number (1- (ly:output-def-lookup paper 'firstpagenumber)))
20 (page-count (length pages))
21 (hsize (ly:output-def-lookup paper 'hsize))
22 (vsize (ly:output-def-lookup paper 'vsize))
23 (page-width (inexact->exact (ceiling (* output-scale hsize))))
24 (page-height (inexact->exact (ceiling (* output-scale vsize)))))
26 (ly:outputter-dump-string outputter xml-header)
27 (ly:outputter-dump-string
29 (comment "Created with GNU LilyPond (http://lilypond.org)"))
30 (ly:outputter-dump-string
31 outputter (format #f "<svg id='svg1' width='~smm' height='~smm'>\n"
32 page-width page-height))
33 (ly:outputter-dump-string
34 outputter "<g transform='translate (10, 10) scale (1)'>\n")
38 ; (ly:outputter-dump-string outputter x))
40 ; (page-header paper page-count)
45 (set! page-number (1+ page-number))
46 (dump-page outputter page page-number page-count landscape?))
48 (ly:outputter-dump-string outputter "\n</g>\n</svg>\n")))
51 (string-append "<!-- " s " !-->\n"))
53 ;; FIXME: gulp from file
55 "<?xml version='1.0' encoding='UTF-8' standalone='no'?>
56 <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN'
57 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
60 (define (dump-page outputter page page-number page-count landscape?)
61 (ly:outputter-dump-string
64 (comment (format #f "Page: ~S/~S" page-number page-count))
65 ;;(format #f "<g transform='translate (0, ~f)'>\n" (* output-scale y))))
69 (ly:outputter-dump-stencil outputter page)
71 (ly:outputter-dump-string
74 (comment (format #f "End Page ~S/~S" page-number page-count))