Reviewers: ,
Message:
I can already see that this may lead to circular dependencies, but
(miraculously) it passes the regtests and actually improves all but one
collision, whose results were bad before and are worse now (it squashes
the beam into a notehead).
Obviously, this patch is rather simple, so I'm looking for:
(a) People to confirm that the circular dependency I fear (beam
placement relying on rest placement relying on beam placement relying
on...) does not exist.
(b) Confirmation that this does exist with suggestions for how to handle
it.
Thanks!
~Mike
Description:
Implements beam collision rest avoidance.
Please review this at http://codereview.appspot.com/4465049/
Affected files:
M lily/beam-collision-engraver.cc
M scm/define-grobs.scm
Index: lily/beam-collision-engraver.cc
diff --git a/lily/beam-collision-engraver.cc
b/lily/beam-collision-engraver.cc
index
cdb4be6270dad054ee13c8a8d55d88e52ef12285..4986652c28cd41b61c405e4cecc815ff2dd7c317
100644
--- a/lily/beam-collision-engraver.cc
+++ b/lily/beam-collision-engraver.cc
@@ -31,6 +31,7 @@ protected:
vector<Grob_info> covered_grobs_;
DECLARE_ACKNOWLEDGER (note_head);
+ DECLARE_ACKNOWLEDGER (rest);
DECLARE_ACKNOWLEDGER (stem);
DECLARE_ACKNOWLEDGER (accidental);
DECLARE_ACKNOWLEDGER (clef);
@@ -129,6 +130,12 @@ Beam_collision_engraver::acknowledge_note_head
(Grob_info i)
}
void
+Beam_collision_engraver::acknowledge_rest (Grob_info i)
+{
+ covered_grobs_.push_back (i);
+}
+
+void
Beam_collision_engraver::acknowledge_stem (Grob_info i)
{
covered_grobs_.push_back (i);
@@ -169,6 +176,7 @@ Beam_collision_engraver::acknowledge_beam (Grob_info i)
#include "translator.icc"
ADD_ACKNOWLEDGER (Beam_collision_engraver, note_head);
+ADD_ACKNOWLEDGER (Beam_collision_engraver, rest);
ADD_ACKNOWLEDGER (Beam_collision_engraver, stem);
ADD_ACKNOWLEDGER (Beam_collision_engraver, accidental);
ADD_ACKNOWLEDGER (Beam_collision_engraver, clef);
Index: scm/define-grobs.scm
diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm
index
84c3f72f8fbb72c715ebab652bd81c2780b31998..a0f8c2fb21be921eca3fdc4e91c75a9da0ed9dbe
100644
--- a/scm/define-grobs.scm
+++ b/scm/define-grobs.scm
@@ -354,6 +354,7 @@
inline-accidental-interface
key-signature-interface
note-head-interface
+ rest-interface
stem-interface
time-signature-interface))
(concaveness . ,ly:beam::calc-concaveness)
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel