On Mon, Mar 21, 2011 at 8:11 PM, Keith OHara <k-ohara5...@oco.net> wrote:

> On Sat, 19 Mar 2011 22:46:51 -0700, Joe Neeman <joenee...@gmail.com>
> wrote:
>
>>
>> It might cause problems if "pure" is true. When the method is called with
>> "pure," it shouldn't cause any side effects. For a concrete example, this
>> will mess up if you have
>>
>> Staff
>> Lyrics with affinity down
>> Staff that sometimes disappears
>> Lyrics with affinity up
>> Staff
>>
>
> Unfortunately, if I protect the assignment to the property with an  if
> (!pure), I am letting the page-breaking planning rely on the user-requested
> affinities, and then changing them for the page-layout phase.  The boolean
> 'pure' asks explicitly that we keep the state unchanged, but there was
> always an implicit expectation that certain properties are unchanging.


I don't quite understand this comment. The only effect of set_property is to
prevent the warning from being triggered more than once per system. In fact,
the layout would be completely unchanged even if you removed the whole
if(after_affinity > before_affinity) block. So why does it matter if we
condition set_property on something?

>
>
> On Mon, 21 Mar 2011 19:22:49 -0700, <joenee...@gmail.com> wrote:
>
>>
>> Wouldn't a comment be better then?
>>
> Yep. I'll add a comment next time I have Linux up.
>
>
> The only effect of the original code was to give warning, not to change the
> effective affinity, demonstrating that nothing explodes if 'staff-affinities
> increase'.  Do you remember what the warning intended to protect against?
>

I think it was just to let the user know not to expect a sane layout.

The serious problem (coming up again in issue 1569) occurs when
> staff-affinity of the first or last non-staff points to a spaceable staff
> that is not present in the system.  It seems this needs to be caught one or
> two layers up, in distribute_loose_lines() or maybe better in
> Align_interface::internal_get_minimum_translations()
>
> So I'll tidy up this small issue, but let's start looking at the problem of
> unrequited affinity of loose lines at the top/bottom of the system.
>

I think the problem is that not enough space is being reserved in the first
pass (ie. the non-loose lines part) of the layout and so the loose lines
don't fit. Align_interface::internal_get_minimum_translations may be
responsible, but it isn't actually used for distances between systems, so
it's also worth investigating bottom_skyline_.

Unfortunately, I'm going backpacking starting tomorrow, but I'm happy to
answer questions once I get back (Sunday).

Cheers,
Joe
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to