On Wed, 2009-05-27 at 21:35 +0100, Neil Puttock wrote: > 2009/5/24 Joe Neeman <joenee...@gmail.com>: > > > Fair enough, but I don't think 'padding has the right meaning here. > > Ideally, 'padding should be the smallest distance between an > > InstrumentName and the SystemStartXXX to its right. Here, it's the > > distance between the rightmost InstrumentName and the leftmost > > SystemStartXXX. > > Yes, it's definitely an abuse of 'padding, as was my original approach > of applying the global shift using a 'padding callback. > > How about a slightly different approach whereby the correction is > applied inside System_start_text::get_stencil (), but can be switched > off if a user wants to revert to the existing behaviour using > side-support-elements?
I wouldn't worry about preserving the existing behaviour. Anyway, with your patch, individual instrument names can be adjusted by tweaking their alignments. Also, I think the code that positions the stencil should be kept outside System_start_text::get_stencil. The sanest behaviour IMO is the behaviour of your current patch, but with a different meaning for 'padding. I can see two ways to do this: the quick&dirty way to get this is to replace instrument-name::calc-combined-delimiters-offset with instrument-name::calc-min-distance-to-support, which goes through all the instrument names and finds the minimum distance necessary between any instrument name and any grob in its support. The nicer way to get the same effect would be to create an InstrumentNameColumn grob that is the X-parent of all the InstrumentNames and do the instrument name positioning in ly:instrument-name-column::calc-positioning-done. Unless you're planning to do either of these (or something with the same effect) soon, I'd say to go ahead and commit what you have now. Given that you basically solved the bug a week ago, it seems silly to hold up the fix over some minor quibbles about 'padding. > I was hoping to be able to make use of the option in > Side_position_interface::general_side_position () to ignore support > extents when a user wants the global instrument name shift (instead of > removing the instrument name acknowledger from > System_start_delimiter_engraver), but it doesn't seem to work as I > expected: though braces and squares are ignored completely, bars and > brackets still count. The reason is probably found at side-position-interface.cc:104. When use_extents is false, the positioning still takes the support into account, it just pretends that each grob in the support has an extent of '(0 . 0). That is, they're still there, they're just infinitely thin around their refpoints. So the effect depends on where the refpoint normally lies within the extent of that grob. Joe _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel