On May 24, 2011, at 11:08 AM, Joe Neeman wrote:

> A pure callback is one that has no side-effects. In define-grobs.scm, you 
> will find a list of pure callbacks, along with an associative list that 
> allows you to substitute a non-pure callback for a pure one.
> 
> Pure callbacks are important for spacing and page-breaking, particularly pure 
> Y-extent and Y-offset callbacks. For example, a slur cannot know its true 
> Y-extent until after the page breaks, line breaks, and horizontal spacing 
> have been completed. But we need to know its Y-extent while computing the 
> page breaking, so we can see if things fit on a page without collisions; 
> hence ly:slur::pure-height.
> 
> Cheers,
> Joe
> 

Thanks Joe!
So, if I understand you correctly, ly:slur::pure-height provides a 
side-effectless approximation that is useful for other functions, whereas the 
real height is what is calculated after all of the line breaking has been done?
Is there ever a case, then, where the approximated pure property differs so 
greatly from the actual property that the erroneous first-pass approximation 
leads to bad typsetting?

Cheers,
MS

> On Tue, May 24, 2011 at 10:31 AM, [email protected] 
> <[email protected]> wrote:
> Hey all,
> 
> I think I've asked this question before, but I can't find the response - 
> sorry if I'm repeating myself!
> 
> Could someone please send me a paragraph-long response about what pure 
> properties are and how/when/why they're used?  The more sequential, the 
> better (i.e. pure properties are defined in X for the purpose of doing Y when 
> lilypond hits function Z).  git grep shows the word `pure' all over the 
> place, and I feel kinda stupid not knowing what pure means in the LilyPond 
> lingo. I'm writing a patch right now that allows LilyPond to do multiple 
> passes through a score to fix several spacing issues I've run into, and 
> before taking it on seriously I'd like to fill this gap in my knowledge of 
> the program.
> 
> Cheers,
> Mike
> _______________________________________________
> lilypond-devel mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/lilypond-devel
> 
> _______________________________________________
> lilypond-devel mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/lilypond-devel

_______________________________________________
lilypond-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to