lilypond-devel
[Top][All Lists]
Advanced

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

Re: Uses single algorithm for side-position spacing. (issue 6827072)


From: address@hidden
Subject: Re: Uses single algorithm for side-position spacing. (issue 6827072)
Date: Sun, 18 Nov 2012 21:21:51 +0100

On 18 nov. 2012, at 21:06, Keith OHara <address@hidden> wrote:

>>> 
>> 
>> Try running beam-cross-staff-script.ly with my patch and setting 
>> NoteColumn.cross-staff to ##f.  You'll see that it triggers beam slope 
>> calculations before vertical spacing is done on the staves because 
>> NoteColumn, which is a support for the script, has its height checked 
>> prematurely.  This does not happen in current master because NoteColumn is 
>> not a support for Scripts.
>> 
>> So why did I make NoteColumn a support for Scripts?  I use the NoteColumn as 
>> a side support object because it combines the width of the note head with 
>> the height of the stem.  We don't want UP staccatos, for example, getting 
>> tucked down to the left of UP stems but they will if skylines are used.  So, 
>> we use the NoteColumn as the side support.
>> 
> 
> I suppose that, strictly speaking, NoteColumn can be 'cross-staff=#t, meaning 
> "beware; I might move or change shape when staves are spread across the 
> page."  But, it seems to preserve more information if we can leave the 
> 'cross-staff indication specifically on the Stem.
> 
> Scripts clearing Stems is already a special case, controlled by 
> 'add-stem-support, which has in the past meant "keep this Script clear of the 
> end of the Stem and Flag of its parent, even if it could slide alongside."  
> Maybe 'add-stem-support could be implemented as "Consider the Script widened 
> enough to include a point on the extended line of the Stem, and keep the 
> widened Script clear of the Stem."
> 

I'm picking up what you're putting down...
What'd be easy is to add something to the effect of :

if (to_boolean (me->get_property ("add-stem-support"))
   && Stem::has_interface (e))
 skyline.set_min_height (e->extent (common_y, _Y_AXIS)[dir]);

That's pseudo-code, but do you get the idea?  Does that seem reasonable?  If 
so, I can get rid of all of that note column business in the engravers and then 
note column would no longer have to be cross staff.

Cheers,
MS


reply via email to

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