-;;;; framework-svg.scm --
+;;
+;; framework-svg.scm -- structure for SVG output
;;;;
;;;; source file of the GNU LilyPond music typesetter
;;;;
-;;;; (c) 2004--2005 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; (c) 2004--2006 Jan Nieuwenhuizen <janneke@gnu.org>
(define-module (scm framework-svg))
(srfi srfi-13)
(ice-9 regex))
-(if #t
- (begin
- (debug-enable 'debug)
- (debug-enable 'backtrace)
- (read-enable 'positions)))
-
(define-public (output-framework basename book scopes fields)
(let* ((filename (format "~a.svg" basename))
- (outputter (ly:make-paper-outputter filename
+ (outputter (ly:make-paper-outputter (open-file filename "wb")
(ly:output-backend)))
(dump (lambda (str) (display str (ly:outputter-port outputter))))
(paper (ly:paper-book-paper book))
`(begin (set! lily-unit-length ,unit-length) ""))
(dump (eo 'svg
'(xmlns . "http://www.w3.org/2000/svg")
+ '(xmlns:xlink . "http://www.w3.org/1999/xlink")
'(version . "1.2")
;; Argggghhhh: SVG takes the px <-> mm mapping from the windowing system
;; FIXME: only use pages if there are more than one, pageSet is
;; not supported by all SVG applications yet.
(if page-set? (eo 'pageSet) "")
- (eo 'g `(transform . ,(format "scale(~a,~a)" output-scale output-scale)))))
+ (eo 'g `(transform . ,(format "scale(~a, ~a) "
+ output-scale output-scale)))))
(for-each
(lambda (page)
(eo 'page '(page-orientation . "270"))
(eo 'page))))
- (dump (string-append (eo 'g)))
+ (dump (string-append (eo 'g )))
(ly:outputter-dump-stencil outputter page)
(dump (string-append (ec 'g)))
(if (or landscape? page-set?)
(lambda (x)
(let ((file-name (ly:find-file (string-append x ".svg"))))
(if file-name (embed-font (cached-file-contents file-name))
- (begin (ly:warn "cannot find SVG font ~S" x) ""))))
+ (begin (ly:warning "cannot find SVG font ~S" x) ""))))
(filter string? font-names))))
(entity 'defs (string-join svgs "\n"))))