X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Foutput-socket.scm;h=c86047815ade2ecc0a9ea9aec2074a91a58f77ef;hb=93b7a6ff072d73dcdd41da59cd18da8aa8d8e8cb;hp=083d5a081be223493612e8be276aa4f366de2664;hpb=c5a3f0c024f4cb629811cff9eb04abff36e94138;p=lilypond.git diff --git a/scm/output-socket.scm b/scm/output-socket.scm index 083d5a081b..c86047815a 100644 --- a/scm/output-socket.scm +++ b/scm/output-socket.scm @@ -1,124 +1,106 @@ +;;;; output-socket.scm +;;;; +;;;; implement network-based output (socket) in Scheme (define-module (scm output-socket) - #:re-export (quote) - ) + #:re-export (quote)) (use-modules (guile) (srfi srfi-1) (srfi srfi-13) (lily)) -(define (dummy . rest) - "") -(display (ly:all-stencil-expressions)) -(for-each - (lambda (x) - (module-define! (current-module) - x - dummy)) - - (ly:all-stencil-expressions)) - - -(define-public (draw-line thick x1 y1 x2 y2) - (format "drawline ~a ~a ~a ~a ~a" - thick x1 y2 x2 y2)) - -(define-public (polygon xy-coords blot do-fill) - (format "polygon ~a ~a ~a" - blot - (if do-fill "True" "False") - (string-join - (map number->string xy-coords)) - )) - -(define-public (named-glyph font glyph) - (format "glyphshow ~a \"~a\" ~a \"~a\"" - (ly:font-glyph-name-to-charcode font glyph) - (ly:font-name font) - (modified-font-metric-font-scaling font) - glyph - )) - -(define-public (placebox x y s) - (format "at ~a ~a ~a\n" x y s)) - -(define-public (round-filled-box breapth width depth height blot-diameter) - (format "draw_round_box ~a ~a ~a ~a ~a" - breapth width depth height blot-diameter - )) +(define format ergonomic-simple-format) (define (event-cause grob) (let* - ((cause (ly:grob-property grob 'cause))) + ((cause (ly:grob-property grob 'cause))) - (cond - ((ly:stream-event? cause) cause) - (else - #f)))) + (if (ly:stream-event? cause) + cause + #f))) (define (grob-bbox grob offset) (let* - ((x-ext (ly:grob-extent grob grob X)) - (y-ext (ly:grob-extent grob grob Y)) - (x (car offset)) - (y (cdr offset))) + ((x-ext (ly:grob-extent grob grob X)) + (y-ext (ly:grob-extent grob grob Y)) + (x (car offset)) + (y (cdr offset))) (if (interval-empty? x-ext) (set! x-ext '(0 . 0))) (if (interval-empty? y-ext) (set! y-ext '(0 . 0))) - + (list (+ x (car x-ext)) (+ y (car y-ext)) (+ x (cdr x-ext)) - (+ y (cdr y-ext)) - ))) + (+ y (cdr y-ext))))) -(define-public (no-origin) - "nocause\n") +(define (escape-string str) + (string-regexp-substitute + " " "\\040" + (string-regexp-substitute "\"" "\\\"" str))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; stencil commands +;;; -(define-public (grob-cause offset grob) +(define (bezier-sandwich lst thick) + (format "bezier_sandwich ~a [~a]" + thick + (string-append + (string-join (map + (lambda (x) + (format "(~a,~a)" (car x) (cdr x))) + lst) + ",")))) + +(define (draw-line thick x1 y1 x2 y2) + (format "drawline ~a ~a ~a ~a ~a" + thick x1 y2 x2 y2)) + +(define (grob-cause offset grob) (let* - ((cause (event-cause grob)) - (tag (if (and cause (integer? (ly:event-property cause 'input-tag))) - (ly:event-property cause 'input-tag) - -1)) - (name (cdr (assoc 'name (ly:grob-property grob 'meta)))) - ) - + ((cause (event-cause grob)) + (tag (if (and cause (integer? (ly:event-property cause 'input-tag))) + (ly:event-property cause 'input-tag) + -1)) + (name (assoc-get 'name (ly:grob-property grob 'meta)))) + (apply format - (append (list "cause ~a \"~a\" ~a ~a ~a ~a\n" - tag name) - - (grob-bbox grob offset)) - ))) + (append (list "cause ~a \"~a\" ~a ~a ~a ~a\n" tag name) + (grob-bbox grob offset))))) +(define (named-glyph font glyph) + (format "glyphshow ~a \"~a\" ~a \"~a\"" + (ly:font-glyph-name-to-charcode font glyph) + (ly:font-name font) + (modified-font-metric-font-scaling font) + glyph)) -(define (escape-string str) - (string-regexp-substitute - " " "\\040" - (string-regexp-substitute "\"" "\\\"" str))) - -(define-public (utf-8-string - descr - string) - - (format "utf-8 \"~a\" \"~a\"" - (escape-string descr) +(define (no-origin) + "nocause\n") - ;; don't want unescaped spaces. - (escape-string string) - )) +(define (placebox x y s) + (if (not (string-null? s)) + (format "at ~a ~a ~a\n" x y s) + "")) +(define (polygon xy-coords blot do-fill) + (format "polygon ~a ~a ~a" + blot + (if do-fill "True" "False") + (string-join (map number->string xy-coords)))) -(define (bezier-sandwich lst thick) - (format - #f - "bezier_sandwich ~a [~a]" - thick - (string-append - (string-join (map (lambda (x) (format "(~a,~a)" (car x) (cdr x))) - lst) ",")))) +(define (round-filled-box breapth width depth height blot-diameter) + (format "draw_round_box ~a ~a ~a ~a ~a" + breapth width depth height blot-diameter)) + +(define (utf-8-string descr string) + (format "utf-8 \"~a\" \"~a\"" + (escape-string descr) + ;; don't want unescaped spaces. + (escape-string string)))