lilypond-devel
[Top][All Lists]
Advanced

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

Documentation about unpure-pure containers is unclear


From: Pavel Roskin
Subject: Documentation about unpure-pure containers is unclear
Date: Tue, 7 Feb 2012 17:58:14 -0500

Hello!

The issue 2275 has "Patch-needs_work" now.  I guess the needed work is
asking some questions in the list, so that the documentation becomes
easier to understand and the example would actually illustrate it.

This is the page I'm taking about:
http://lilypond.org/doc/v2.15/Documentation/notation/unpure_002dpure-containers

Quote:

"When a function overrides a Y-offset and/or Y-extent it is assumed that
this will trigger line breaking calculations too early during
compilation. So the function is not evaluated at all"

squareLineCircleSpace doesn't override Y-offset or Y-extent, yet the
output is ugly.  Why?

Why do stems have to be hidden?  Do they force calculations that would
otherwise be delayed?  Or do they reserve horizontal space that the
noteheads with overridden stencil won't reserve?

Why is this showing correct output?

roundNotes = {
  \override NoteHead #'stencil = #(make-circle-stencil 0.5 0.1 #f)
}
smartRoundNotes = {
  \roundNotes
  \override NoteHead #'Y-extent =
   #(ly:make-unpure-pure-container
      ly:grob::stencil-height
      (lambda (grob start end) (ly:grob::stencil-height grob)))
}
\new Voice
\relative c'' {
  \time 4/1
  \roundNotes
  cis1 ces cisis c
  \smartRoundNotes
  cis1 ces cisis c
}

And why does the output break if roundNotes is rewritten with a
lambda?

roundNotes = {
  \override NoteHead #'stencil =
   #(lambda (grob) (make-circle-stencil 0.5 0.1 #f))
}

What's so different between the above stencil definitions?  Does
Lilypond actually try to classify functions as pure and unpure by
parsing them?

-- 
Regards,
Pavel Roskin



reply via email to

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