lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cresc. whitespace padding


From: Thomas Morley
Subject: Re: cresc. whitespace padding
Date: Sat, 12 Oct 2013 00:15:35 +0200

2013/10/11 Thomas Morley <address@hidden>:
[...]
> It would lead to:
>
> moreVerticalDynamicTextSpannerWhiteout =
> #(define-music-function (parser location adds)(pair?)
> #{
>  \once \override DynamicTextSpanner #'stencil =
>   #(lambda (grob)
>      (let* ((stil (ly:line-spanner::print grob))
>             (x-ext (ly:stencil-extent stil X))
>             (y-ext (ly:stencil-extent stil Y)))
>      (ly:grob-set-property! grob 'whiteout #t)
>      (ly:make-stencil
>         (ly:stencil-expr stil)
>         (interval-widen x-ext (car adds))
>         (interval-widen y-ext (cdr adds)))))
> #})
[...]

Also possible:

\version "2.16.2"

moreVerticalDynamicTextSpannerWhiteoutII =
  #(define-music-function (parser location adds)(pair?)

    (define (flexible-stencil-whiteout add stencil)
      (let*
          ((x-ext (ly:stencil-extent stencil X))
           (y-ext (ly:stencil-extent stencil Y)))
        (ly:stencil-add
         (stencil-with-color
            (ly:round-filled-box
               (interval-widen x-ext (car add))
               (interval-widen y-ext (cdr add))
               0.0)
            white)
         stencil)))

    (define more-stencil-whiteout
      (lambda (grob)
           (let* ((stil (ly:line-spanner::print grob))
                  (x-ext (ly:stencil-extent stil X))
                  (y-ext (ly:stencil-extent stil Y))
                  (whiteout-stil (flexible-stencil-whiteout adds stil)))
             (ly:make-stencil
                (ly:stencil-expr whiteout-stil)
                x-ext
                y-ext))))
    #{
      %% Needed for 2.17.x:
      \override DynamicTextSpanner #'vertical-skylines = #'()
      \once \override DynamicTextSpanner #'stencil =
         #more-stencil-whiteout
    #})

\score {
  \new GrandStaff <<
    \new Staff
      \relative c' {
         c d e
         \moreVerticalDynamicTextSpannerWhiteoutII #'(0 . 1.5)
         f \cresc c  d e f \!
      }
    \new Staff
      \relative c' {
         c d e f \cresc c  d e f \!
      }
  >>
}

'moreVerticalDynamicTextSpannerWhiteoutII' doesn't affect the vertical
spacing of other grobs.
To see the the difference, try higher values for y in
  \moreVerticalDynamicTextSpannerWhiteoutII #'(x . y)

Cheers,
  Harm



reply via email to

[Prev in Thread] Current Thread [Next in Thread]