lilypond-user
[Top][All Lists]
Advanced

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

Getting grob Y position (spacing error)


From: Gregory Evans
Subject: Getting grob Y position (spacing error)
Date: Thu, 17 Nov 2022 17:29:13 -0600

Hi lilypond users,
I have a question about getting the Y position of a grob. I saw this question has been asked previously but I could not find if it had been answered. In the following example, an after-line-breaking function is defined such that no change on the output should occur. The grob is only queried with (ly:grob-extent grob ... Y) but this value is not used. There is a difference in the vertical spacing between the staves of the staff group based on whether this query is present or not. The intention is to be able to query a grob for its Y position relative to another grob in order to draw cross-staff spanners, where it is necessary to calculate the distance between grobs not only on the X axis but also on the Y axis. Here, the system is being used to accurately get the X position, but using the system to get the Y position triggers this spacing error but appears to return the correct position before the spacing shift.

%%%%%%% START EXAMPLE %%%%%%%
\language "english"
\version "2.23.14"

#(set-global-staff-size 12)

\score {
    <<
        \new Staff {
            \once \override NoteHead.after-line-breaking = #(lambda (grob)
                    (let*
                        (
                           (sys (ly:grob-system grob))
                           (x-extent (ly:grob-extent grob sys X))
                           ;;uncomment y-extent to cause spacing error
                           ;(y-extent (ly:grob-extent grob sys Y))
                        )
                        (display (list x-extent ))
                    )
                )
            c'1
            c'1
            c'1
            c'1
        }
        \new Staff {
            c'1
            c'1
            c'1
            c'1
        }
    >>
}

%%%%%%% END EXAMPLE %%%%%%%

best,
--

reply via email to

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