Am Mi., 11. Dez. 2024 um 12:49 Uhr schrieb Werner LEMBERG <w...@gnu.org>:
>
>
> >> What are these properties good for?  What can they do what the
> >> `text` property of `HorizontalBracket` or `PianoPedalBracket`
> >> cannot?
> >
> > 'text is a grob-property to set the text for HorizontalBracketText.
> > 'bracket-text (as an internal property) is a pointer from
> > HorizontalBracket to its HorizontalBracketText-grob.
>
> OK, thanks.  The description misses this information; I will update it
> accordingly.

Actually, the descriprion is wrong, imho.
(bracket-text ,ly:grob? "The text for an analysis bracket.")
should become something at he lines of:
(bracket-text ,ly:grob? "The text-grob for an analysis bracket.")

>
> > Completely different. And I would not want to miss 'bracket-text.
>
> Can you please give an example how to use it (or a link to something
> similar)?

I took horizontal-bracket-texted.ly from our regtests and added
functionality in \layout to emphasize some brackets with thickness and
color relying on the 'text.
This would have not been possible without the 'bracket-text pointer,
at least not as an override of HorizontalBracket:

emphasizeCertainBrackets =
  \override HorizontalBracket.after-line-breaking =
    #(lambda (grob)
      (let* ((bracket-text-grob (ly:grob-object grob 'bracket-text))
             (text (ly:grob-property bracket-text-grob 'text)))
          (cond ((equal? text "a")
                  (ly:grob-set-property! grob 'thickness 6)
                  (ly:grob-set-property! bracket-text-grob 'color '(0 1 0))
                  (ly:grob-set-property! grob 'color '(0 1 0)))
                ((equal? text "b")
                  (ly:grob-set-property! grob 'thickness 6)
                  (ly:grob-set-property! bracket-text-grob 'color '(0 0.8 0))
                  (ly:grob-set-property! grob 'color '(0 0.8 0)))
                (else '()))))

\layout {
  \context {
    \Voice
    \consists "Horizontal_bracket_engraver"
    \override HorizontalBracket.direction = #UP
    \emphasizeCertainBrackets
  }
}

\relative c'' {
  \time 3/4
  \key f \major
  c4\tweak HorizontalBracketText.text "contrasting period"
    \tweak outside-staff-priority #801
      \startGroup
    \tweak HorizontalBracketText.text "a"
      \startGroup
  a8( bes c f)
  f4( e d)
  c d8( c bes c)
  \appoggiatura bes4 a2 g4\stopGroup
  \once\override HorizontalBracketText.text = "b"
  f'8 \startGroup
  r a, r d r
  c4( e, f)
  g8( bes) a4 g8( f)
  f2 \stopGroup \stopGroup r4
}

> As mentioned earlier, neither `bracket-text` nor
> `pedal-text` are used anywhere in the code.

Well, yes. Though if you go through those internal properties then you
will notice that a plethora of them are not used in the .scm-files.
Some examples:
accidental-grobs
all-elements
concurrent-hairpins
...

If all of those seemingly unused pointers were deleted than LilyPond
stops its life as programmable software.

For pedal-text the description is misleading, though - I'd go for
text-grob as well.
For an usage-example see the code-attachment of:
https://lists.gnu.org/archive/html/lilypond-user/2018-04/msg00427.html

I may find other usage-examples to most of those seemingly unused
properties, but to be honest, I'd prefer to spend my time at other
tasks :)

Cheers,
  Harm

Reply via email to