Outside-staff-priority and vertical order of grobs

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Outside-staff-priority and vertical order of grobs

Paolo Prete-3
Hello,

in the following snippet, I assigned to the TupletBracket grob an outside-staff-priority higher than the OttavaBracket. Then, the OttavaBracket is placed below it, as expected.

%%%%%%%%
{
\override TupletBracket.outside-staff-priority = #340
\override Staff.OttavaBracket.outside-staff-priority = #300
\ottava #1 \tuplet 3/2 { c' d' f' }
}
%%%%%%%%

However, if I override the staff-padding property of the OttavaBracket, the ottava grob il placed in a new position regardless of the previous outside-staff-priority order. Then, the TupletBracket us now placed below the moved OttavaBracket:

%%%%%%%%
{
\override TupletBracket.outside-staff-priority = #340
\override Staff.OttavaBracket.outside-staff-priority = #300
\override Staff.OttavaBracket #'staff-padding = #'5
\ottava #1 \tuplet 3/2 { c' d' f' }
}
%%%%%%%%

Why? Is there a way to set the staff-padding property of a grob and preserve at the same time the vertical order set with outside-staff-priority? 

Thanks,
Paolo

Reply | Threaded
Open this post in threaded view
|

Re: Outside-staff-priority and vertical order of grobs

Thomas Morley-2
Am Mo., 9. Dez. 2019 um 17:05 Uhr schrieb Paolo Pr <[hidden email]>:

>
> Hello,
>
> in the following snippet, I assigned to the TupletBracket grob an outside-staff-priority higher than the OttavaBracket. Then, the OttavaBracket is placed below it, as expected.
>
> %%%%%%%%
> {
> \override TupletBracket.outside-staff-priority = #340
> \override Staff.OttavaBracket.outside-staff-priority = #300
> \ottava #1 \tuplet 3/2 { c' d' f' }
> }
> %%%%%%%%
>
> However, if I override the staff-padding property of the OttavaBracket, the ottava grob il placed in a new position regardless of the previous outside-staff-priority order. Then, the TupletBracket us now placed below the moved OttavaBracket:
>
> %%%%%%%%
> {
> \override TupletBracket.outside-staff-priority = #340
> \override Staff.OttavaBracket.outside-staff-priority = #300
> \override Staff.OttavaBracket #'staff-padding = #'5
> \ottava #1 \tuplet 3/2 { c' d' f' }
> }
> %%%%%%%%
>
> Why?

In IR outside-staff-priority is explained as:
"
outside-staff-priority (number)

If set, the grob is positioned outside the staff in such a way as to
avoid all collisions. _In_ _case _of a potential _collision_, the grob
with the smaller outside-staff-priority is closer to the staff.
"

If you set staff-padding of OttavaBracket to a sufficient high value,
then no collision will occur anyway. Thus no need to follow the
staff-priority you've set.

> Is there a way to set the staff-padding property of a grob and preserve at the same time the vertical order set with outside-staff-priority?

Provoke collision by setting staff-padding of TupletBracket to the
same value and let LilyPond sort it.

Cheers,
  Harm

Reply | Threaded
Open this post in threaded view
|

Re: Outside-staff-priority and vertical order of grobs

Paolo Prete-3


On Mon, Dec 9, 2019 at 5:38 PM Thomas Morley <[hidden email]> wrote:
Am Mo., 9. Dez. 2019 um 17:05 Uhr schrieb Paolo Pr <[hidden email]>:
>
 
> Is there a way to set the staff-padding property of a grob and preserve at the same time the vertical order set with outside-staff-priority?

Provoke collision by setting staff-padding of TupletBracket to the
same value and let LilyPond sort it.


Hello Thomas,

This method, unfortunately, seems redundant, because I have to specify the value for all the objects that are near the OttavaBracket. Instead, I wonder if is there an automatic way to vertically order them, given that the order is already set in the list of outside-staff-priority valuse.
For example, if I have in the following vertical order (grob1 on the top, grob4 on the bottom):

grob1
grob2
grob3
grob4

---------------------------
---------------------------
---------------------------
---------------------------
---------------------------

I wonder if is there a way to shift grob4 vertically and automatically shift grob1,2,3 as a consequence...

Thanks.


Reply | Threaded
Open this post in threaded view
|

Re: Outside-staff-priority and vertical order of grobs

Thomas Morley-2
Am Mo., 9. Dez. 2019 um 18:00 Uhr schrieb Paolo Pr <[hidden email]>:

>
>
>
> On Mon, Dec 9, 2019 at 5:38 PM Thomas Morley <[hidden email]> wrote:
>>
>> Am Mo., 9. Dez. 2019 um 17:05 Uhr schrieb Paolo Pr <[hidden email]>:
>> >
>
>
>>
>> > Is there a way to set the staff-padding property of a grob and preserve at the same time the vertical order set with outside-staff-priority?
>>
>> Provoke collision by setting staff-padding of TupletBracket to the
>> same value and let LilyPond sort it.
>>
>
> Hello Thomas,
>
> This method, unfortunately, seems redundant, because I have to specify the value for all the objects that are near the OttavaBracket. Instead, I wonder if is there an automatic way to vertically order them, given that the order is already set in the list of outside-staff-priority valuse.

And that's the misunderstanding.
The grob are only ordered following outside-staff-priority _if_
collisions would happen otherwise.
If you manually move grob4, in a way grob1/2/3 _can't_ collide with it
any longer then collision-avoidence following outside-staff-priority
happens only for grob1/2/3

> For example, if I have in the following vertical order (grob1 on the top, grob4 on the bottom):
>
> grob1
> grob2
> grob3
> grob4
>
> ---------------------------
> ---------------------------
> ---------------------------
> ---------------------------
> ---------------------------
>
> I wonder if is there a way to shift grob4 vertically and automatically shift grob1,2,3 as a consequence...

I'm not aware of such a possibility.

Cheers,
  Harm