On Mon, Jun 18, 2012 at 12:12 PM, Janek Warchoł <janek.lilyp...@gmail.com>wrote:
> Hi all, > > Summary: see attached explanation.png. > > I've noticed problems with aligning grobs and markups correctly: issue > 2451 (http://code.google.com/p/lilypond/issues/detail?id=2451), issue > 2452 (http://code.google.com/p/lilypond/issues/detail?id=2452); there > are serious problems with markups (example attached) and other things. > > The core of the problem is that XY-extents are currently related to > graphical size, not to the logical outlines. I suggest that we change > this to have "outer" and "inner" extents; outer extents will contain > whole object and inner extents will contain only the part "which > matters". This is a generalization of my idea for lyrics > (http://code.google.com/p/lilypond/issues/detail?id=2451#c1); see > attached explanation.png if you haven't already. > Hi Janek, I think that what you propose can be done more generically using higher-order functions to build grob callbacks. This would have two main advantages that I can see: it would allow each grob to have more than one "core extent" to be used in different contexts, and it would allow those "core extents" to be referenced using meaningful names. Consider the example: #(define (ly:aligned-on-X-parent-using sym) (lambda (grob) (let ((grob-extent (ly:grob-property grob sym)) ... ;; do the alignment, but using the result of looking up 'sym instead of the grob's extent ))) \override LyricText #'non-punctuation-extent = #(some-callback-that-computes-the-right-thing) \override LyricText #'X-offset = #(ly:aligned-on-X-parent-using 'non-punctuation-extent) If someone then decides that they also want numbers to be excluded, then they can write a non-punctuation-or-number-extent callback and do \override LyricText #'X-offset = #(ly:aligned-on-X-parent-using 'non-punctuation-or-number-extent) I think that we could provided a lot of functionality (and flexibility) by providing a selection of functions like ly:aligned-on-X-parent-using and a selection of callbacks to use them with. Whatever design you pursue, I think it's worth keeping around the old X-extent and Y-extent names, if only so that there is no painful transition. Actually, it seems like extents are gradually being replaced by more accurate outlines (ie. skylines) anyway, but they are probably still useful for certain things. Cheers, Joe
_______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel