]> git.donarmstrong.com Git - lilypond.git/commitdiff
Adds Dots to the Slur encompass-objects grob set.
authorMike Solomon <mike@apollinemike.com>
Mon, 5 Dec 2011 07:28:56 +0000 (08:28 +0100)
committerMike Solomon <mike@apollinemike.com>
Mon, 5 Dec 2011 07:28:56 +0000 (08:28 +0100)
input/regression/slur-dot-collision.ly [new file with mode: 0644]
lily/phrasing-slur-engraver.cc
lily/slur-engraver.cc
lily/slur-scoring.cc
scm/define-grobs.scm

diff --git a/input/regression/slur-dot-collision.ly b/input/regression/slur-dot-collision.ly
new file mode 100644 (file)
index 0000000..aafa865
--- /dev/null
@@ -0,0 +1,8 @@
+\version "2.15.21"
+
+\header {
+  texidoc = "Slurs avoid dots.
+"
+}
+
+\relative c''' { e16. ( e,,32 ) }
\ No newline at end of file
index 6a1caedb01b124821534ccae8681049fc68510cd..6048232e802594908749741287b969f8d203d6ea 100644 (file)
@@ -60,6 +60,7 @@ protected:
   DECLARE_ACKNOWLEDGER (note_column);
   DECLARE_ACKNOWLEDGER (slur);
   DECLARE_ACKNOWLEDGER (script);
+  DECLARE_ACKNOWLEDGER (dots);
   DECLARE_ACKNOWLEDGER (text_script);
   DECLARE_ACKNOWLEDGER (tie);
   DECLARE_ACKNOWLEDGER (tuplet_number);
@@ -113,6 +114,12 @@ Phrasing_slur_engraver::acknowledge_inline_accidental (Grob_info info)
   acknowledge_extra_object (info);
 }
 
+void
+Phrasing_slur_engraver::acknowledge_dots (Grob_info info)
+{
+  acknowledge_extra_object (info);
+}
+
 void
 Phrasing_slur_engraver::acknowledge_fingering (Grob_info info)
 {
@@ -224,6 +231,7 @@ ADD_ACKNOWLEDGER (Phrasing_slur_engraver, fingering)
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, note_column);
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, slur);
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, script);
+ADD_ACKNOWLEDGER (Phrasing_slur_engraver, dots);
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, text_script);
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tie);
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tuplet_number);
index 96d22cd759c001f6eff7acb97c54f1ade52fe5a0..2386c4d8c52179b03e4c49dc682154d08b2c4c11 100644 (file)
@@ -61,6 +61,7 @@ protected:
   DECLARE_ACKNOWLEDGER (fingering);
   DECLARE_ACKNOWLEDGER (note_column);
   DECLARE_ACKNOWLEDGER (script);
+  DECLARE_ACKNOWLEDGER (dots);
   DECLARE_ACKNOWLEDGER (text_script);
   DECLARE_ACKNOWLEDGER (tie);
   DECLARE_ACKNOWLEDGER (tuplet_number);
@@ -120,6 +121,12 @@ Slur_engraver::acknowledge_inline_accidental (Grob_info info)
   acknowledge_extra_object (info);
 }
 
+void
+Slur_engraver::acknowledge_dots (Grob_info info)
+{
+  acknowledge_extra_object (info);
+}
+
 void
 Slur_engraver::acknowledge_fingering (Grob_info info)
 {
@@ -258,6 +265,7 @@ ADD_ACKNOWLEDGER (Slur_engraver, fingering);
 ADD_ACKNOWLEDGER (Slur_engraver, note_column);
 ADD_ACKNOWLEDGER (Slur_engraver, script);
 ADD_ACKNOWLEDGER (Slur_engraver, text_script);
+ADD_ACKNOWLEDGER (Slur_engraver, dots);
 ADD_ACKNOWLEDGER (Slur_engraver, tie);
 ADD_ACKNOWLEDGER (Slur_engraver, tuplet_number);
 ADD_TRANSLATOR (Slur_engraver,
index d8c7655185fd082796e3b20461faad75cde719a7..3f753ae1ccd9626feacd36f54303f76554b41b37 100644 (file)
@@ -26,6 +26,7 @@
 #include "beam.hh"
 #include "clef.hh"
 #include "directional-element-interface.hh"
+#include "dots.hh"
 #include "libc-extension.hh"
 #include "main.hh"
 #include "misc.hh"
@@ -806,6 +807,8 @@ Slur_score_state::get_extra_encompass_infos () const
           Grob *g = encompasses [i];
           Interval xe = g->extent (common_[X_AXIS], X_AXIS);
           Interval ye = g->extent (common_[Y_AXIS], Y_AXIS);
+          if (Dots::has_interface (g))
+            ye.widen (0.2);
 
           Real xp = 0.0;
           Real penalty = parameters_.extra_object_collision_penalty_;
index 2723ffbfb02820a52bc8256d2a7e917e46ad9887..653bc5e227046d944a281a5d34558f68005e4007 100644 (file)
 
     (Dots
      . (
+       (avoid-slur . inside)
        (dot-count . ,dots::calc-dot-count)
        (staff-position . ,dots::calc-staff-position)
        (stencil . ,ly:dots::print)