From 830273ee6930479dbf332731ea5243a364c1bd87 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 20 Dec 2006 02:00:07 +0100 Subject: [PATCH] acknowledge repeat slash as rhythmic event. Fixes spacing of slashes, due to previous fixes in basic-spacing.cc and Rational::operator double() --- lily/spacing-engraver.cc | 18 +++++++++++++++++- scm/define-event-classes.scm | 1 + scm/define-grob-interfaces.scm | 4 ++-- scm/define-grobs.scm | 3 ++- scm/define-music-types.scm | 2 +- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc index c6fc091de0..81d5f2c829 100644 --- a/lily/spacing-engraver.cc +++ b/lily/spacing-engraver.cc @@ -68,12 +68,14 @@ protected: DECLARE_ACKNOWLEDGER (staff_spacing); DECLARE_ACKNOWLEDGER (note_spacing); DECLARE_ACKNOWLEDGER (rhythmic_head); + DECLARE_ACKNOWLEDGER (rhythmic_grob); DECLARE_TRANSLATOR_LISTENER (spacing_section); void start_translation_timestep (); void stop_translation_timestep (); void process_music (); - + void add_starter_duration (Grob_info i); + virtual void finalize (); void start_spanner (); @@ -144,8 +146,21 @@ Spacing_engraver::acknowledge_staff_spacing (Grob_info i) Pointer_group_interface::add_grob (spacing_, ly_symbol2scm ("wishes"), i.grob ()); } +void +Spacing_engraver::acknowledge_rhythmic_grob (Grob_info i) +{ + add_starter_duration (i); +} + void Spacing_engraver::acknowledge_rhythmic_head (Grob_info i) +{ + add_starter_duration (i); +} + + +void +Spacing_engraver::add_starter_duration (Grob_info i) { if (i.grob ()->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")) || i.grob ()->internal_has_interface (ly_symbol2scm ("multi-measure-interface"))) @@ -243,6 +258,7 @@ Spacing_engraver::start_translation_timestep () ADD_ACKNOWLEDGER (Spacing_engraver, staff_spacing); ADD_ACKNOWLEDGER (Spacing_engraver, note_spacing); ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_head); +ADD_ACKNOWLEDGER (Spacing_engraver, rhythmic_grob); ADD_TRANSLATOR (Spacing_engraver, "make a SpacingSpanner and do " diff --git a/scm/define-event-classes.scm b/scm/define-event-classes.scm index e7d59622d4..2bda1a2d02 100644 --- a/scm/define-event-classes.scm +++ b/scm/define-event-classes.scm @@ -37,6 +37,7 @@ (span-dynamic-event . (decrescendo-event crescendo-event)) (pedal-event . (sostenuto-event sustain-event una-corda-event)) (rhythmic-event . (lyric-event melodic-event multi-measure-rest-event + percent-event rest-event skip-event bass-figure-event)) (melodic-event . (cluster-note-event note-event)) (() . (Announcement)) diff --git a/scm/define-grob-interfaces.scm b/scm/define-grob-interfaces.scm index c6eb520493..bf2c5b6c99 100644 --- a/scm/define-grob-interfaces.scm +++ b/scm/define-grob-interfaces.scm @@ -129,8 +129,8 @@ (ly:add-interface 'rhythmic-grob-interface - "Any object with a rhythmic basis. Used to determine which grobs -are interesting enough to maintain a hara-kiri staff." + "Any object with a duration. Used to determine which grobs are +interesting enough to maintain a hara-kiri staff." '()) diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 7aad372102..02f530d54b 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1295,7 +1295,8 @@ (thickness . 0.48) (slope . 1.7) (meta . ((class . Item) - (interfaces . (percent-repeat-item-interface)))))) + (interfaces . (rhythmic-grob-interface + percent-repeat-item-interface)))))) (RepeatTie . ( diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index 99036e4ed4..bec7bc5efc 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -387,7 +387,7 @@ Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.") (PercentEvent . ( (description . "Used internally to signal percent repeats.") - (types . (general-music event percent-event)) + (types . (general-music event percent-event rhythmic-event)) )) (PesOrFlexaEvent -- 2.39.2