dottedExtender mit minimal 3 Punkten

This commit is contained in:
tux committed 2026-10-27 18:47:28 +01:00
1 parent 0d9db52750
commit e5b3e721ce
1 file changed
+20 -10
@@ -290,21 +290,31 @@ updown =
#})) #}))
dottedExtender = { dottedExtender = {
\override LyricExtender.style = #'dotted-line
\override LyricExtender.thickness = 2 \override LyricExtender.thickness = 2
\override LyricExtender.Y-offset = 0.1 \override LyricExtender.Y-offset = 0.1
% Punkte selbst zeichnen, damit immer mindestens 3 zu sehen sind
\override LyricExtender.stencil = \override LyricExtender.stencil =
#(lambda (grob) #(lambda (grob)
(let* ((stil (ly:lyric-extender::print grob)) (let ((stil (ly:lyric-extender::print grob)))
(nostil (null? stil)) (if (null? stil)
(x-ext (if nostil 0 (ly:stencil-extent stil X))))
(if nostil
stil stil
(make-connected-line (let* ((x-ext (ly:stencil-extent stil X))
(list (thick (* (ly:staff-symbol-line-thickness grob)
(cons (car x-ext) 0) (ly:grob-property grob 'thickness 1)))
(cons (cdr x-ext) 0)) (period (* (ly:staff-symbol-staff-space grob)
grob)))) (ly:grob-property grob 'dash-period 1.0)))
(min-gap (* 1.5 thick))
(start (car x-ext))
(len (max (interval-length x-ext) (* 2 min-gap)))
(count (max 3 (1+ (inexact->exact (round (/ len period))))))
(gap (/ len (1- count))))
(apply ly:stencil-add
(map (lambda (i)
(ly:stencil-translate-axis
(make-circle-stencil (/ thick 2) 0 #t)
(+ start (* i gap))
X))
(iota count)))))))
} }
melisOff = \set ignoreMelismata = ##t melisOff = \set ignoreMelismata = ##t