Mike Solomon <m...@jongla.com> writes:

> On 21 May 2015, at 11:01, David Kastrup <d...@gnu.org> wrote:
>> 
>> 
>> In the CG I read
>> 
>>    For certain grobs, the @code{Y-extent} is based on the @code{stencil}
>>    property, overriding the stencil property of one of these will
>>    require an additional @code{Y-extent} override with an unpure-pure
>>    container.  When a function overrides a @code{Y-offset} and/or
>>    @code{Y-extent} it is assumed that this will trigger line breaking
>>    calculations too early during compilation.  So the function is not
>>    evaluated at all (usually returning a value of @samp{0} or
>>    @samp{'(0 . 0)}) which can result in collisions.  A @q{pure} function
>>    will not affect properties, objects or grob suicides and therefore will
>>    always have its Y-axis-related evaluated correctly.
>> 
>>    Currently, there are about thirty functions that are already considered
>>    @q{pure} and Unpure-pure containers are a way to set functions not on
>>    this list as @q{pure}.  The @q{pure} function is evaluated @emph{before}
>>    any line-breaking and so the horizontal spacing can be adjusted
>>    @q{in time}.  The @q{unpure} function is then evaluated @emph{after}
>>    line breaking.
>> 
>> This is all very nice.  Except that it is the function calls labelled as
>> *pure* that actually receive start/end values indicating particular
>> breakpoints of the system that the respective grob is in.  What's the
>> deal with that?
>
> I’d have to dive back into it to remember correctly, but I’m pretty
> sure that these values are ignored.

Ignored or not: those are values indicating breakpoints of the current
system.  They should not even be available for functions evaluated
before any line-breaking.  Or maybe they are called for one of a set of
tentative not-final line breaks, but in that case it would make little
sense to call the post-linebreak (impure?) functions without the actual
linebreak information.

There is some definite piece of the puzzle missing here.

-- 
David Kastrup

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to