(define (dummy . rest)
"")
+(display (ly:all-stencil-expressions))
(for-each
(lambda (x)
(module-define! (current-module)
(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 "~a ~a glyphshow" glyph
- (ly:font-name font)))
+ (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 "place at ~a ~a: ~a\n" x y s))
+ (format "at ~a ~a ~a\n" x y s))
-(define-public (round-filled-box x y width height blotdiam)
- (format "~a ~a ~a ~a ~a draw_round_box"
- x y width height blotdiam
+(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-public (glyph-string
- postscript-font-name
- size cid?
- x-y-named-glyphs)
+(define (music-cause grob)
+ (let*
+ ((cause (ly:grob-property grob 'cause)))
+
+ (cond
+ ((ly:music? cause) cause)
+; ((ly:grob? cause) (music-cause cause))
+ (else
+ #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)))
+
+ (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))
+ )))
+
+(define-public (no-origin)
+ "nocause\n")
+
+(define-public (grob-cause offset grob)
+ (let*
+ ((cause (music-cause grob))
+ (tag (if (and cause (integer? (ly:music-property cause 'input-tag)))
+ (ly:music-property cause 'input-tag)
+ -1))
+ (name (cdr (assoc 'name (ly:grob-property grob 'meta))))
+ )
+
+ (apply format
+ (append (list "cause ~a \"~a\" ~a ~a ~a ~a\n"
+ tag name)
+
+ (grob-bbox grob offset))
+ )))
+
+
+(define (escape-string str)
+ (string-regexp-substitute
+ " " "\\040"
+ (string-regexp-substitute "\"" "\\\"" str)))
+
+(define-public (utf-8-string
+ descr
+ string)
- (format "~a ~a text: ~a " postscript-font-name size
- (string-join (map (lambda (xyn) (caddr xyn))
- x-y-named-glyphs))))
+ (format "utf-8 \"~a\" \"~a\""
+ (escape-string descr)
+
+ ;; don't want unescaped spaces.
+ (escape-string string)
+ ))
+
+
+(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) ","))))