[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to catch the current height of a StaffGroup?
From: |
address@hidden |
Subject: |
Re: How to catch the current height of a StaffGroup? |
Date: |
Wed, 23 May 2012 19:38:32 +0200 |
On 23 mai 2012, at 19:19, Thomas Morley wrote:
> 2012/5/23 Urs Liska <address@hidden>:
>> but shouldn't a standard barline have the desired length by default?
>
> Of course, but the new BreathingSign-stencil is only to visualize that
> I've got the correct value.
> And a BarLine lives in Staff-context but I want the "StaffGroup-size".
>
> Trying:
>
> \override Score.BarLine #'stencil =
> #(lambda (grob)
> (let* ((stil (ly:bar-line::print grob))
> (stil-ext-y (interval-length
> (ly:stencil-extent stil Y))))
> (newline)(display stil-ext-y)
> stil))
>
> returns every time the same value, in this case: 3.9975
>
> As expected.
>
Try the buddy engraver!
buddyEngraver =
#(let ((match-list '())
(name-list '()))
(list
(cons 'acknowledgers
(list
(cons 'grob-interface
(lambda (engraver grob source-engraver)
(let ((name (ly:grob-property grob 'my-name))
(searching (ly:grob-property grob
'searching)))
(set! name-list (cons (cons name grob)
name-list))
(set! match-list (append (map (lambda (x)
(cons name x)) searching) match-list)))))))
(cons 'finalize
(lambda (trans)
(for-each
(lambda (x) ;(format #t "MATCHING ~a\n" x)
(let ((grob1 (assoc-get (car x) name-list))
(grob2 (assoc-get (cdr x) name-list)))
(ly:grob-set-property! grob2 'buddies (cons (cons (car x)
grob1) (ly:grob-property grob2 'buddies)))
(ly:grob-set-property! grob1 'buddies (cons (cons (cdr x)
grob2) (ly:grob-property grob1 'buddies)))))
match-list)))))
Then, \layout \context { \Staff \consists \buddyEngraver }
If you do something like \override Staff.BarLine #'my-name = #'foo in one staff
and \override Staff.BarLine #'my-name = #'bar in another and then \override
BreathingSign #'searching = #'(foo bar) then BreathingSign will have a property
'buddies set with two buddies (the two barlines). You can then find their
positions via the normal grob-relative-position-finding functions.
Cheers,
MS
- How to catch the current height of a StaffGroup?, Thomas Morley, 2012/05/23
- Re: How to catch the current height of a StaffGroup?, Urs Liska, 2012/05/23
- Re: How to catch the current height of a StaffGroup?, Thomas Morley, 2012/05/23
- Re: How to catch the current height of a StaffGroup?,
address@hidden <=
- Re: How to catch the current height of a StaffGroup?, Thomas Morley, 2012/05/23
- Re: How to catch the current height of a StaffGroup?, David Kastrup, 2012/05/23
- Re: How to catch the current height of a StaffGroup?, Thomas Morley, 2012/05/23
- Re: How to catch the current height of a StaffGroup?, David Kastrup, 2012/05/23
- Re: How to catch the current height of a StaffGroup?, Thomas Morley, 2012/05/23
- Re: How to catch the current height of a StaffGroup?, Thomas Morley, 2012/05/23