> I am not top-posting

Hello list,

I grabbed LSR 233 (hairpin with centered text below/above) and modified it to have text *inside* the hairpin, at the right for \< and at the left for \>. This worked fine for me until approx. \version 2.19.27 or so. Now I am at 2.19.39, and this code throws me an assertion failure:

/home/gub/NewGub/gub/target/linux-64/src/lilypond-git.sv.gnu.org--lilypond.git-release-unstable/flower/include/drul-array.hh:35: T& Drul_array<T>::at(Direction) [with T = double]: Assertion `d == 1 || d == -1' failed.

If I replace line 10
   Y CENTER
with line 11
   Y DOWN
the assertion goes away, but obviously the text is not printed inside the slur but below it.

Before, everything worked fine for me without this assertion. Can the assertion please be removed again in newer releases?

Thanks,

Rutger Hofman
Amsterdam
hairpinWithInsideText = 
#(define-music-function (text) (markup?)
#{
  \once \override Voice.Hairpin #'after-line-breaking = 
    #(lambda (grob)
      (let* ((stencil (ly:hairpin::print grob))
             (new-stencil (ly:stencil-aligned-to
               (ly:stencil-combine-at-edge
                 (ly:stencil-aligned-to stencil X RIGHT)
                 Y CENTER
                 ; Y DOWN
                 (ly:stencil-aligned-to (grob-interpret-markup grob text) X RIGHT))
               X LEFT))
             (staff-space (ly:output-def-lookup (ly:grob-layout grob) 'staff-space))
             (staff-line-thickness
               (ly:output-def-lookup (ly:grob-layout grob) 'line-thickness))
             (grob-name (lambda (x) (assq-ref (ly:grob-property x 'meta) 'name)))
             (par-x (ly:grob-parent grob X))
             (dyn-text (eq? (grob-name par-x) 'DynamicText ))
             (dyn-text-stencil-x-length
               (if dyn-text
                 (interval-length 
                   (ly:stencil-extent (ly:grob-property par-x 'stencil) X))
                 0))
             (x-shift 
               (if dyn-text 
                 (- 
                   (+ staff-space dyn-text-stencil-x-length)
                   (* 0.5 staff-line-thickness)) 0)))

      (ly:grob-set-property! grob 'Y-offset 0)
      (ly:grob-set-property! grob 'stencil 
         (ly:stencil-translate-axis
          new-stencil
          x-shift X))))
#})

\score {
    \new Staff \relative c'' {
        \hairpinWithInsideText "poco" c1\< |
        c1 |
        c1\!
    }
}
_______________________________________________
bug-lilypond mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-lilypond

Reply via email to