From fb79c584a99fe6571a23a9770efd6e1ede3a5772 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Mon, 5 Dec 2011 08:28:56 +0100 Subject: [PATCH] Adds Dots to the Slur encompass-objects grob set. --- input/regression/slur-dot-collision.ly | 8 ++++++++ lily/phrasing-slur-engraver.cc | 8 ++++++++ lily/slur-engraver.cc | 8 ++++++++ lily/slur-scoring.cc | 3 +++ scm/define-grobs.scm | 1 + 5 files changed, 28 insertions(+) create mode 100644 input/regression/slur-dot-collision.ly diff --git a/input/regression/slur-dot-collision.ly b/input/regression/slur-dot-collision.ly new file mode 100644 index 0000000000..aafa8652b7 --- /dev/null +++ b/input/regression/slur-dot-collision.ly @@ -0,0 +1,8 @@ +\version "2.15.21" + +\header { + texidoc = "Slurs avoid dots. +" +} + +\relative c''' { e16. ( e,,32 ) } \ No newline at end of file diff --git a/lily/phrasing-slur-engraver.cc b/lily/phrasing-slur-engraver.cc index 6a1caedb01..6048232e80 100644 --- a/lily/phrasing-slur-engraver.cc +++ b/lily/phrasing-slur-engraver.cc @@ -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); diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 96d22cd759..2386c4d8c5 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -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, diff --git a/lily/slur-scoring.cc b/lily/slur-scoring.cc index d8c7655185..3f753ae1cc 100644 --- a/lily/slur-scoring.cc +++ b/lily/slur-scoring.cc @@ -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_; diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 2723ffbfb0..653bc5e227 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -673,6 +673,7 @@ (Dots . ( + (avoid-slur . inside) (dot-count . ,dots::calc-dot-count) (staff-position . ,dots::calc-staff-position) (stencil . ,ly:dots::print) -- 2.39.2