Reviewers: Keith, Message: On 2012/09/01 23:58:37, Keith wrote:
I might have a test case for you at http://www.mutopiaproject.org/cgibin/piece-info.cgi?id=1776
It seems you copy each slur into a "slur-stub", and from those keep
only the
ones with "cross-staff" set. Then when figuring system skylines you
insert all
Grobs with the slur-stub-interface into the skylines for each staff.
Why not insert the original Slur into the skylines, if it has
"cross-staff"
instead of the SlurStub. For that matter, why not insert all Grobs
marked
"cross-staff"?
all the cross-staff
It's not a copy of the original slur because it is using pure heights and offsets. The original slur can't be inserted into the VerticalAxisGroup skylines because its height and offset depends on the distance between axis groups, which is not known at the time the skyline is created. So we use the pure version (the stub) to build the system skylines in page-layout-problem.cc. Note that we don't use it for the minimum-translations (I made a minimum-translation-vertical-skylines property for that) because we don't want cross-staff grobs to affect the distance between two axis groups in the same system. We want them just to appear in the aggregate of all vertical axis groups smooshed into one system, created in the function Page_layout_problem::build_system_skyline. The test case shows that the patch is not ready - I need to make it overshoot less. But the general idea will remain the same. Description: Approximates cross-staff slurs in VerticalAxisGroup vertical-skylines. The approximation is almost always an overshoot for the time being. A more robust strategy would be to create SlurStubs for every VerticalAxisGroup on which the cross-staff slur encompassed a note column. Then, the skyline added would be the union of all these skylines where the top skyline acted as a top bound and the low skyline acted as a lower bound, so if intermediary skylines went over these bounds, those parts of the skyline would be thrown out. This can be done in a separate commit: it'd require making a Skyline::crop function that crops one skyline by another and would require creating multiple SlurStubs in the engraver as well as figuring out the right amount to shift them for each vertical axis group. Please review this at http://codereview.appspot.com/6498077/ Affected files: A input/regression/cross-staff-slur-vertical-spacing.ly M lily/align-interface.cc M lily/axis-group-interface.cc M lily/figured-bass-position-engraver.cc M lily/grob.cc M lily/include/axis-group-interface.hh M lily/include/grob.hh M lily/include/slur-scoring.hh M lily/include/slur.hh M lily/melody-engraver.cc M lily/phrasing-slur-engraver.cc M lily/slur-engraver.cc M lily/slur-scoring.cc M lily/slur.cc M lily/tab-tie-follow-engraver.cc M scm/define-grob-interfaces.scm M scm/define-grob-properties.scm M scm/define-grobs.scm M scm/output-lib.scm _______________________________________________ lilypond-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-devel
