From d3024f0823da8c451f61fb1eabdb9a5850c9ad85 Mon Sep 17 00:00:00 2001 From: Mike Solomon Date: Mon, 21 Mar 2011 10:20:45 -0400 Subject: [PATCH] Fixes accidental suggestions in the beam collision engraver (issue 1570) Adds an inline-accidental-interface that the engraver uses to filter out all accidentals that do not come before a note in the staff. --- input/regression/beam-collision-accidentals.ly | 12 ++++++++++++ lily/beam-collision-engraver.cc | 3 ++- scm/define-grob-interfaces.scm | 6 ++++++ scm/define-grobs.scm | 2 ++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 input/regression/beam-collision-accidentals.ly diff --git a/input/regression/beam-collision-accidentals.ly b/input/regression/beam-collision-accidentals.ly new file mode 100644 index 0000000000..90238f40f4 --- /dev/null +++ b/input/regression/beam-collision-accidentals.ly @@ -0,0 +1,12 @@ +\version "2.13.47" +\header { + texidoc = "Beams only check for collisions with in-line accidentals." +} + +{ + \set suggestAccidentals = ##t + a'8[ fis'16 g'16] + \unset suggestAccidentals + c'8 [ des'' ] + r2 +} \ No newline at end of file diff --git a/lily/beam-collision-engraver.cc b/lily/beam-collision-engraver.cc index 39e614c2a1..367570ff6d 100644 --- a/lily/beam-collision-engraver.cc +++ b/lily/beam-collision-engraver.cc @@ -160,7 +160,8 @@ Beam_collision_engraver::acknowledge_note_head (Grob_info i) void Beam_collision_engraver::acknowledge_accidental (Grob_info i) { - covered_grobs_.push_back (i.grob ()); + if (i.grob ()->internal_has_interface (ly_symbol2scm ("inline-accidental-interface"))) + covered_grobs_.push_back (i.grob ()); } void diff --git a/scm/define-grob-interfaces.scm b/scm/define-grob-interfaces.scm index 223cdafcf6..edc02a7fb3 100644 --- a/scm/define-grob-interfaces.scm +++ b/scm/define-grob-interfaces.scm @@ -107,6 +107,12 @@ note)." "Keep track of durations in a run of grace notes." '(columns common-shortest-duration)) +(ly:add-interface + 'inline-accidental-interface + "An inlined accidental (i.e. normal accidentals, cautionary +accidentals)." + '()) + (ly:add-interface 'instrument-specific-markup-interface "Instrument-specific markup (like fret boards or harp pedal diagrams)." diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 8b9564f41e..a9b2001772 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -36,6 +36,7 @@ (Y-extent . ,ly:accidental-interface::height) (meta . ((class . Item) (interfaces . (accidental-interface + inline-accidental-interface font-interface)))))) (AccidentalCautionary @@ -48,6 +49,7 @@ (Y-extent . ,ly:accidental-interface::height) (meta . ((class . Item) (interfaces . (accidental-interface + inline-accidental-interface font-interface)))))) (AccidentalPlacement -- 2.39.2