lilypond-devel
[Top][All Lists]
Advanced

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

Re: Approximates cross-staff slurs in VerticalAxisGroup vertical-skyline


From: mtsolo
Subject: Re: Approximates cross-staff slurs in VerticalAxisGroup vertical-skylines. (issue 6498077)
Date: Sun, 02 Sep 2012 06:25:58 +0000

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





reply via email to

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