Urs, On Thu, Mar 16, 2017 at 8:47 AM, Urs Liska <[email protected]> wrote: > Hi David, > > > Am 16.03.2017 um 14:40 schrieb David Nalesnik: >> Hi Urs, >> >> On Thu, Mar 16, 2017 at 8:23 AM, Urs Liska <[email protected]> wrote: >>> Hi, >>> >>> I'm trying to write a function to push a note column like this: >>> >>> pushLeftBroken = >>> #(define-music-function ()() >>> #{ >>> \once \override NoteColumn.X-offset = 3 >>> #}) >>> >>> But I need to make that "3" depend on some characteristics of the actual >>> note column. Basically I need the width of the note column, including >>> attached accidentals. >>> >>> I know how to get to the accidental(s) within a note column, but if I'm >>> not mistaken there's no actual grob inside that. >>> >>> Probably music-function isn't the right approach? >>> >>> What I need is a way to say something like >>> >>> \once \override NoteColumn.X-offset = #(+ 3 >>> extent-of-all-accidentals-in-the-note-column) >>> >> In the majority of cases you can follow a trail of pointers. From the >> NoteColumn, you can get noteheads or AccidentalPlacement, from >> noteheads you can get to accidentals. >> \version "2.19.56" >> >> { >> \override NoteColumn.X-offset = >> #(lambda (nc) >> (let ((notes (ly:grob-array->list (ly:grob-object nc 'note-heads)))) >> (pretty-print (grob::all-objects nc)) >> (pretty-print (grob::all-objects (car notes))))) >> <cis'' dis'' fis'' gis''>1 >> } >> >> I presume that travelling up the chain of parentage -- to a >> PaperColumn -- would get you more grobs ('elements object property). >> >> -David > > Thank you, this will give me all I need. > But could you please clarify (in more general terms): > > Usually (as in my example) I'd override X-offset with a literal number. > You override it with a function. > Does that mean that whenever I override a property of a grob with a > callback function it will be the grob that is passed to that function?
Yes, exactly. > > Well, now that I think of it this is what I'm doing with the stencil > override all along. Where can I read more about this? > There isn't much. This is all I can think of: http://lilypond.org/doc/v2.19/Documentation/extending/callback-functions -David _______________________________________________ lilypond-user mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-user
