X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fspacing-engraver.cc;h=b3ca5753932cb2253c2cc3e3d385bc8d18c61940;hb=986aa8f8974e54c701bed0be54a2b042aecec820;hp=c35d5fe98b08abbe2412bb7ce13230fb887c7fb8;hpb=852a05c2e911c2296f3f6936829a342b0f3c1c85;p=lilypond.git diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc index c35d5fe98b..b3ca575393 100644 --- a/lily/spacing-engraver.cc +++ b/lily/spacing-engraver.cc @@ -6,14 +6,13 @@ (c) 1999--2006 Han-Wen Nienhuys */ +#include "paper-column.hh" #include "engraver.hh" +#include "pqueue.hh" #include "note-spacing.hh" -#include "paper-column.hh" +#include "staff-spacing.hh" #include "pointer-group-interface.hh" -#include "pqueue.hh" #include "spanner.hh" -#include "staff-spacing.hh" -#include "stream-event.hh" #include "translator.icc" @@ -59,7 +58,7 @@ class Spacing_engraver : public Engraver vector stopped_durations_; Moment now_; Spanner *spacing_; - Stream_event *start_section_; + Music *start_section_; TRANSLATOR_DECLARATIONS (Spacing_engraver); @@ -67,13 +66,13 @@ protected: DECLARE_ACKNOWLEDGER (staff_spacing); DECLARE_ACKNOWLEDGER (note_spacing); DECLARE_ACKNOWLEDGER (rhythmic_head); - DECLARE_TRANSLATOR_LISTENER (spacing_section); void start_translation_timestep (); void stop_translation_timestep (); void process_music (); virtual void finalize (); + virtual bool try_music (Music *m); void start_spanner (); void stop_spanner (); @@ -85,11 +84,11 @@ Spacing_engraver::Spacing_engraver () start_section_ = 0; } -IMPLEMENT_TRANSLATOR_LISTENER (Spacing_engraver, spacing_section); -void -Spacing_engraver::listen_spacing_section (Stream_event *ev) +bool +Spacing_engraver::try_music (Music *m) { - start_section_ = ev; + start_section_ = m; + return true; } void @@ -154,10 +153,10 @@ Spacing_engraver::acknowledge_rhythmic_head (Grob_info i) */ if (!now_.grace_part_) { - Stream_event *r = i.event_cause (); - if (r && r->in_event_class ("rhythmic-event")) + Music *r = i.music_cause (); + if (r && r->is_mus_type ("rhythmic-event")) { - Moment len = get_event_length (r); + Moment len = r->get_length (); Rhythmic_tuple t (i, now_mom () + len); now_durations_.push_back (t); } @@ -170,14 +169,6 @@ Spacing_engraver::stop_translation_timestep () Paper_column *musical_column = dynamic_cast (unsmob_grob (get_property ("currentMusicalColumn"))); - - if (spacing_) - { - musical_column->set_object ("spacing", spacing_->self_scm ()); - unsmob_grob (get_property ("currentCommandColumn")) - ->set_object ("spacing", spacing_->self_scm ()); - } - SCM proportional = get_property ("proportionalNotationDuration"); if (unsmob_moment (proportional)) { @@ -190,10 +181,10 @@ Spacing_engraver::stop_translation_timestep () shortest_playing.set_infinite (1); for (vsize i = 0; i < playing_durations_.size (); i++) { - Stream_event *ev = playing_durations_[i].info_.event_cause (); - if (ev) + Music *mus = playing_durations_[i].info_.music_cause (); + if (mus) { - Moment m = get_event_length (ev); + Moment m = mus->get_length (); shortest_playing = min (shortest_playing, m); } } @@ -202,7 +193,7 @@ Spacing_engraver::stop_translation_timestep () for (vsize i = 0; i < now_durations_.size (); i++) { - Moment m = get_event_length (now_durations_[i].info_.event_cause ()); + Moment m = now_durations_[i].info_.music_cause ()->get_length (); if (m.to_bool ()) { starter = min (starter, m); @@ -221,8 +212,6 @@ Spacing_engraver::stop_translation_timestep () musical_column->set_property ("shortest-starter-duration", st); } - - void Spacing_engraver::start_translation_timestep () {