]> git.donarmstrong.com Git - lilypond.git/commit
Adds arpeggio to conditional item grob array.
authorMike Solomon <mike@apollinemike.com>
Thu, 18 Apr 2013 04:19:50 +0000 (06:19 +0200)
committerMike Solomon <mike@apollinemike.com>
Thu, 18 Apr 2013 04:19:50 +0000 (06:19 +0200)
commit5ab8335d106d736335698245af3c1b2b2455aed6
treec9a82af35ba0b59017fc917fe52165f66aee0777
parent54d23d6ca9b231155f5d171b6c0e86edf489c36b
Adds arpeggio to conditional item grob array.

The actual function of conditional elements was not correctly reflected
in the comment above Separation_item::boxes.  This comment led one to believe
that conditional elements were only used when notes with accidentals
had ties coming to them.  This is not true.  Conditional elements are always
used for right columns when there is something to the left (see
Spacing_interface::skylines).  They are omitted _only_ when they are
accidentals with ties coming to them.

So why do we want an arpeggio to be a conditional element?  There is
nothing conditional about it (it will always be printed, unlike accidentals
with ties going to them).  It is because conditional elements have the
double duty of being conditional (i.e. accidentals) AND being factored
into springs in note spacing (see the long comment in
Note_spacing::get_spacing) in the calculation of a spring's ideal distance.
Other elements to the left of a note column, like scripts and fingerings,
are only factored into the minimum distance. We want arpeggios to factor
into the ideal distance because otherwise they will be too close to
left note-columns in tight spacing situations.

Lastly, there was no reason in the code base to keep a pointer to the
arpeggio in the note column, so it is removed here.
input/regression/arpeggio-collision.ly
lily/arpeggio-engraver.cc
lily/include/note-column.hh
lily/note-column.cc
lily/paper-column-engraver.cc
lily/rhythmic-column-engraver.cc
lily/separation-item.cc
lily/span-arpeggio-engraver.cc
scm/define-grob-properties.scm