lilypond-devel
[Top][All Lists]
Advanced

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

Implements beam collision rest avoidance. (issue4465049)


From: mtsolo
Subject: Implements beam collision rest avoidance. (issue4465049)
Date: Thu, 05 May 2011 16:30:28 +0000

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)





reply via email to

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