X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fstencil.scm;h=536425b9c680ce5a44b0c7bcbe9f8924d94142fd;hb=9d443bdf00804696a1c48bb3c08fe75543044ad9;hp=e4c15978b4fb6288b589a96f5648a8fa9a42637d;hpb=5842c0a15dc9683fc74996c6703ea33d4dd43ad0;p=lilypond.git diff --git a/scm/stencil.scm b/scm/stencil.scm index e4c15978b4..536425b9c6 100644 --- a/scm/stencil.scm +++ b/scm/stencil.scm @@ -129,6 +129,24 @@ encloses the contents. (interval-center x-ext) (interval-center y-ext)))))) +(define-public (rounded-box-stencil stencil thickness padding blot) + "Add a rounded box around STENCIL, producing a new stencil." + + (let* ((xext (interval-widen (ly:stencil-extent stencil 0) padding)) + (yext (interval-widen (ly:stencil-extent stencil 1) padding)) + (min-ext (min (-(cdr xext) (car xext)) (-(cdr yext) (car yext)))) + (ideal-blot (min blot (/ min-ext 2))) + (ideal-thickness (min thickness (/ min-ext 2))) + (outer (ly:round-filled-box + (interval-widen xext ideal-thickness) + (interval-widen yext ideal-thickness) + ideal-blot)) + (inner (ly:make-stencil (list 'color (x11-color 'white) + (ly:stencil-expr (ly:round-filled-box + xext yext (- ideal-blot ideal-thickness))))))) + (set! stencil (ly:stencil-add outer inner)) + stencil)) + (define-public (fontify-text font-metric text) "Set TEXT with font FONT-METRIC, returning a stencil."