]> git.donarmstrong.com Git - lilypond.git/blob - input/lsr/three-sided-box.ly
Merge branch 'lilypond/translation'
[lilypond.git] / input / lsr / three-sided-box.ly
1 %% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
2 %% This file is in the public domain.
3 \version "2.11.38"
4
5 \header {
6   lsrtags = "rhythms, text"
7  texidoc = "
8 This example shows how to add a markup command to get a three sided box
9 around some text (or other markup).
10 " }
11 % begin verbatim
12 % New command to add a three sided box, with sides north, west and south
13 % Based on the box-stencil command defined in scm/stencil.scm
14 % Note that you use ";" to comment a line in Scheme
15 #(define-public (NWS-box-stencil stencil thickness padding)
16   "Add a box around STENCIL, producing a new stencil."
17   (let* ((x-ext (interval-widen (ly:stencil-extent stencil 0) padding))
18          (y-ext (interval-widen (ly:stencil-extent stencil 1) padding))
19          (y-rule (make-filled-box-stencil (cons 0 thickness) y-ext))
20          (x-rule (make-filled-box-stencil
21                   (interval-widen x-ext thickness) (cons 0 thickness))))
22 ;    (set! stencil (ly:stencil-combine-at-edge stencil X 1 y-rule padding))
23     (set! stencil (ly:stencil-combine-at-edge stencil X -1 y-rule padding))
24     (set! stencil (ly:stencil-combine-at-edge stencil Y 1 x-rule 0.0))  
25     (set! stencil (ly:stencil-combine-at-edge stencil Y -1 x-rule 0.0))
26     stencil))
27
28 % The corresponding markup command, based on the \box command defined 
29 % in scm/define-markup-commands.scm
30 #(define-markup-command (NWS-box layout props arg) (markup?)
31   "Draw a box round @var{arg}.  Looks at @code{thickness},
32 @code{box-padding} and @code{font-size} properties to determine line
33 thickness and padding around the markup."
34   
35   (let* ((th (chain-assoc-get 'thickness props  0.1))
36          (size (chain-assoc-get 'font-size props 0))
37          (pad (* (magstep size)
38                  (chain-assoc-get 'box-padding props 0.2)))
39          (m (interpret-markup layout props arg)))
40     (NWS-box-stencil m th pad)))
41
42
43 % Test it:
44
45 \relative c'{ 
46   c2^\markup{ \NWS-box ABCD }
47   c^\markup{\NWS-box \note #"4" #1.0 } 
48 }