Or even:
#(define (new-centered-mmr-stencil grob)
(let* ((sys (ly:grob-system grob))
(X-extent (lambda (q) (ly:grob-extent q sys X)))
(left-bound (ly:spanner-bound grob LEFT))
(left-bound-X-length (interval-length (X-extent left-bound)))
(left-bound-coord (ly:grob-relative-coordinate left-bound
sys X))
(right-bound (ly:spanner-bound grob RIGHT))
(right-bound-X-length (interval-length (X-extent right-bound)))
(right-bound-coord (ly:grob-relative-coordinate right-bound
sys X))
(new-stil
(grob-interpret-markup grob
#{
\markup
\concat {
\override #'(line-cap-style . square)
\path #0.2
#'((moveto 0 -0.9)
(lineto 0 0.9))
\hspace #-.2
\pattern #7 #X #-.2
\path #0.2
#'((moveto 0 0)
(lineto 0.5 -0.9)
(lineto 1.5 0.9)
(lineto 2 0))
\hspace #-.2
\override #'(line-cap-style . square)
\path #0.2
#'((moveto 0 -0.9)
(lineto 0 0.9))
}
#}
))
(new-stil-X-length (interval-length (ly:stencil-extent
new-stil X)))
(translate-value (- (+ (/ (- right-bound-coord
left-bound-coord) 2)
(/ left-bound-X-length 2))
(/ new-stil-X-length 2)
(/ right-bound-X-length 2)))
)
(ly:grob-set-property! grob 'stencil
(ly:stencil-translate-axis
new-stil
translate-value
X))))
{
\compressFullBarRests
R1*32
\override MultiMeasureRest.after-line-breaking = #new-centered-mmr-stencil
R1*71
}
Pierre
2016-09-06 16:03 GMT+02:00 Pierre Perol-Schneider
<address@hidden
<mailto:address@hidden>>:
Hi Marc,
See:
http://lilypond.1069038.n5.nabble.com/How-to-align-a-new-MultiMeasureRest-stencil-td142767.html
<http://lilypond.1069038.n5.nabble.com/How-to-align-a-new-MultiMeasureRest-stencil-td142767.html>
How about:
\version "2.19.47"
#(define (new-centered-mmr-stencil grob)
(let* ((sys (ly:grob-system grob))
(X-extent (lambda (q) (ly:grob-extent q sys X)))
(left-bound (ly:spanner-bound grob LEFT))
(left-bound-X-length (interval-length (X-extent
left-bound)))
(left-bound-coord (ly:grob-relative-coordinate
left-bound sys X))
(right-bound (ly:spanner-bound grob RIGHT))
(right-bound-X-length (interval-length (X-extent
right-bound)))
(right-bound-coord (ly:grob-relative-coordinate
right-bound sys X))
(new-stil
(grob-interpret-markup grob
#{
\markup
\concat {
\general-align #Y #0
\override #'(thickness . 2)
\draw-line #'(0 . 2)
\hspace #-.2
\pattern #7 #X #-.2
\path #0.2
#'((moveto 0 0)
(lineto 0.5 -1)
(lineto 1.5 1)
(lineto 2 0))
\hspace #-.2
\general-align #Y #0
\override #'(thickness . 2)
\draw-line #'(0 . 2)
}
#}
))
(new-stil-X-length (interval-length (ly:stencil-extent
new-stil X)))
(translate-value (- (+ (/ (- right-bound-coord
left-bound-coord) 2)
(/ left-bound-X-length 2))
(/ new-stil-X-length 2)
(/ right-bound-X-length 2)))
)
(ly:grob-set-property! grob 'stencil
(ly:stencil-translate-axis
new-stil
translate-value
X))))
{
\compressFullBarRests
R1*32
\override MultiMeasureRest.after-line-breaking =
#new-centered-mmr-stencil
R1*71
}
HTH,
Cheers,
Pierre
2016-09-06 14:28 GMT+02:00 Marc Hohl <address@hidden
<mailto:address@hidden>>:
Hi list,
I want to change the MultiMeasureRest.stencil to a squiggle as
shown in the appendices (quite roughly pasted together in GIMP).
Searching the LSR and the web does not give any informations
about this topic (the only thing I found was using the percent
stencil, which is also hardcoded in the C++ sources).
I tried to override the stencil by
\override MultiMeasureRest.stencil = #ly:line-spanner::print
but this causes errors like
"MultiMeasureRest has empty extent and non-empty stencil."
Any ideas?
Thanks,
Marc
_______________________________________________
lilypond-user mailing list
address@hidden <mailto:address@hidden>
https://lists.gnu.org/mailman/listinfo/lilypond-user
<https://lists.gnu.org/mailman/listinfo/lilypond-user>