X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fframework-socket.scm;h=dd542935555cfb61e62d91cf27b8843998817cda;hb=eb800248588b0ebabc8a90f34e17559be170f0b2;hp=799e95d77b59411e3cee54ac8621d2f940d3bde6;hpb=e249f3c55170776943a2e2fbd943e516bcacfec6;p=lilypond.git diff --git a/scm/framework-socket.scm b/scm/framework-socket.scm index 799e95d77b..dd54293555 100644 --- a/scm/framework-socket.scm +++ b/scm/framework-socket.scm @@ -1,9 +1,12 @@ +;;;; framework-socket.scm + (define-module (scm framework-socket) #:export (output-framework) ) (use-modules (ice-9 regex) (ice-9 string-fun) + (scm paper-system) (ice-9 format) (guile) (srfi srfi-1) @@ -11,26 +14,64 @@ (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))) - - (if (pair? systems) - (ly:outputter-dump-stencil outputter - (ly:paper-system-stencil (car systems)))) - )) +(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)))) -(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 #f "~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))) + (display (ly:format "system ~4l ~4l ~4l ~4l\n" + (car x-extent) (car y-extent) (cdr x-extent) (cdr y-extent)) ctor-arg) + (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 #f "~a.socket" channel)) + channel)) + (outputter (ly:make-paper-outputter + ctor-arg + 'socket)) + (systems (ly:paper-book-systems book)) + (paper (ly:paper-book-paper book))) + (display (ly:format "paper ~4l\n" (get-page-dimensions paper)) ctor-arg) + (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))) + (display (ly:format "system ~4l ~4l ~4l ~4l\n" + (car x-extent) (car y-extent) (cdr x-extent) (cdr y-extent)) ctor-arg) + (ly:outputter-dump-stencil outputter system-stencil))) + systems))) (define-public (convert-to-ps . args) #t) (define-public (convert-to-pdf . args) #t) (define-public (convert-to-png . args) #t) -(define-public (convert-to-dvi . args) #t) -(define-public (convert-to-tex . args) #t)