From: Jan Nieuwenhuizen Date: Thu, 7 Oct 2010 10:15:15 +0000 (+0200) Subject: Socket framework: output all systems. X-Git-Tag: release/2.13.37-1~46 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=06f70e684b3f8828d83199c57f3fb37c1e818c36;p=lilypond.git Socket framework: output all systems. --- diff --git a/scm/framework-socket.scm b/scm/framework-socket.scm index ab612e59aa..abaaa08ec9 100644 --- a/scm/framework-socket.scm +++ b/scm/framework-socket.scm @@ -14,23 +14,63 @@ (srfi srfi-13) (lily)) -(define-public (output-framework channel book scopes fields ) - (let* - ((ctor-arg (if (string? channel) - (open-output-file (format "~a.socket" channel)) - channel)) - (outputter (ly:make-paper-outputter - ctor-arg - 'socket)) - (systems (ly:paper-book-systems book))) +(define (get-page-dimensions paper) + (let* ((landscape (ly:output-def-lookup paper 'landscape)) + (output-scale (ly:output-def-lookup paper 'output-scale)) + (paper-width (ly:output-def-lookup paper 'paper-width)) + (paper-height (ly:output-def-lookup paper 'paper-height)) + (indent (ly:output-def-lookup paper 'indent)) + (line-width (ly:output-def-lookup paper 'line-width)) + (plain-left-margin (ly:output-def-lookup paper 'left-margin)) + (top-margin (ly:output-def-lookup paper 'top-margin)) + (w (if landscape paper-height paper-width)) + (h (if landscape paper-width paper-height)) + (left-margin (if (null? plain-left-margin) + (/ (- w line-width) 2) + plain-left-margin)) +;; (list w h left-margin top-margin indent line-width))) +;; (convert (lambda (x) (* x output-scale (/ (ly:bp 1)))))) + (unit-length (ly:output-def-lookup paper 'output-scale)) + (convert (lambda (x) (* x lily-unit->mm-factor unit-length)))) + (map convert (list w h left-margin top-margin indent line-width)))) - (if (pair? systems) - (ly:outputter-dump-stencil outputter - (paper-system-stencil (car systems)))) - )) - -(define-public output-classic-framework output-framework) +(define-public (output-framework channel book scopes fields) + (let* ((ctor-arg (if (string? channel) + (open-output-file (format "~a.socket" channel)) + channel)) + (outputter (ly:make-paper-outputter + ctor-arg + 'socket)) + (systems (ly:paper-book-systems book)) + (paper (ly:paper-book-paper book)) + (pages (ly:paper-book-pages book))) + (for-each (lambda (x) + (let* ((system-stencil (paper-system-stencil x)) + (x-extent (ly:stencil-extent system-stencil X)) + (y-extent (ly:stencil-extent system-stencil Y))) + (format ctor-arg (ly:format "system ~4l ~4l ~4l ~4l\n" + (car x-extent) (car y-extent) (cdr x-extent) (cdr y-extent))) + (ly:outputter-dump-stencil outputter system-stencil))) + systems))) +(define-public (output-classic-framework channel book scopes fields) + (let* ((ctor-arg (if (string? channel) + (open-output-file (format "~a.socket" channel)) + channel)) + (outputter (ly:make-paper-outputter + ctor-arg + 'socket)) + (systems (ly:paper-book-systems book)) + (paper (ly:paper-book-paper book))) + (format ctor-arg (ly:format "paper ~4l\n" (get-page-dimensions paper))) + (for-each (lambda (x) + (let* ((system-stencil (paper-system-stencil x)) + (x-extent (ly:stencil-extent system-stencil X)) + (y-extent (ly:stencil-extent system-stencil Y))) + (format ctor-arg (ly:format "system ~4l ~4l ~4l ~4l\n" + (car x-extent) (car y-extent) (cdr x-extent) (cdr y-extent))) + (ly:outputter-dump-stencil outputter system-stencil))) + systems))) (define-public (convert-to-ps . args) #t) (define-public (convert-to-pdf . args) #t)