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?

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?

Best
Urs


-- 
[email protected]
https://openlilylib.org
http://lilypondblog.org


_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to