X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fnew-lyric-combine-music-iterator.cc;h=cee17244b209efdf11fbbf0e0d150ac391ebae7a;hb=b3916dc1307dbaad8e50a97aadff8181000344ae;hp=5af6fb4c6aaa2d923eaddadb804b79624a7293b5;hpb=43d1c731756070519bb1229b30c7a83f275e2c6e;p=lilypond.git diff --git a/lily/new-lyric-combine-music-iterator.cc b/lily/new-lyric-combine-music-iterator.cc index 5af6fb4c6a..cee17244b2 100644 --- a/lily/new-lyric-combine-music-iterator.cc +++ b/lily/new-lyric-combine-music-iterator.cc @@ -1,65 +1,64 @@ /* - new-lyric-combine-iterator.cc -- implement New_lyric_combine_music_iterator - + new-lyric-combine-iterator.cc -- implement Lyric_combine_music_iterator + source file of the GNU LilyPond music typesetter - - (c) 2004 Han-Wen Nienhuys + + (c) 2004--2005 Han-Wen Nienhuys */ #include "context.hh" -#include "lyric-combine-music.hh" -#include "event.hh" +#include "music.hh" #include "grob.hh" #include "music-iterator.hh" +#include "input.hh" - -class New_lyric_combine_music_iterator : public Music_iterator +class Lyric_combine_music_iterator : public Music_iterator { public: - New_lyric_combine_music_iterator (); - New_lyric_combine_music_iterator (New_lyric_combine_music_iterator const&src); + Lyric_combine_music_iterator (); + Lyric_combine_music_iterator (Lyric_combine_music_iterator const &src); DECLARE_SCHEME_CALLBACK (constructor, ()); protected: virtual void construct_children (); virtual Moment pending_moment () const; - virtual void do_quit (); + virtual void do_quit (); virtual void process (Moment); virtual Music_iterator *try_music_in_children (Music *) const; virtual bool run_always ()const; virtual bool ok () const; virtual void derived_mark () const; - virtual void derived_substitute (Context *,Context *); + virtual void derived_substitute (Context *, Context *); private: - bool start_new_syllable () ; + bool start_new_syllable (); void find_voice (); bool music_found_; bool made_association_; - Context * lyrics_context_; - Context * music_context_; + Context *lyrics_context_; + Context *music_context_; SCM lyricsto_voice_name_; - - Music_iterator * lyric_iter_; + + Music_iterator *lyric_iter_; }; /* Ugh, why static? - */ +*/ static Music *busy_ev; static Music *start_ev; static Music *melisma_playing_ev; -New_lyric_combine_music_iterator::New_lyric_combine_music_iterator () +Lyric_combine_music_iterator::Lyric_combine_music_iterator () { music_found_ = false; made_association_ = false; - lyric_iter_ =0; - music_context_ =0; + lyric_iter_ = 0; + music_context_ = 0; lyrics_context_ = 0; /* Ugh. out of place here. - */ + */ if (!busy_ev) { busy_ev @@ -72,50 +71,50 @@ New_lyric_combine_music_iterator::New_lyric_combine_music_iterator () } bool -New_lyric_combine_music_iterator::start_new_syllable () +Lyric_combine_music_iterator::start_new_syllable () { bool b = music_context_->try_music (busy_ev); - + if (!b) return false; if (!lyrics_context_) return false; - + if (!to_boolean (lyrics_context_->get_property ("ignoreMelismata"))) { bool m = music_context_->try_music (melisma_playing_ev); if (m) return false; } - + return true; } Moment -New_lyric_combine_music_iterator::pending_moment () const +Lyric_combine_music_iterator::pending_moment () const { Moment m; m.set_infinite (1); - + return m; } bool -New_lyric_combine_music_iterator::run_always () const +Lyric_combine_music_iterator::run_always () const { return true; } bool -New_lyric_combine_music_iterator::ok () const +Lyric_combine_music_iterator::ok () const { return lyric_iter_ && lyric_iter_->ok (); } void -New_lyric_combine_music_iterator::derived_mark ()const +Lyric_combine_music_iterator::derived_mark ()const { if (lyric_iter_) scm_gc_mark (lyric_iter_->self_scm ()); @@ -126,28 +125,26 @@ New_lyric_combine_music_iterator::derived_mark ()const } void -New_lyric_combine_music_iterator::derived_substitute (Context *f, Context *t) +Lyric_combine_music_iterator::derived_substitute (Context *f, Context *t) { if (lyric_iter_) - lyric_iter_->substitute_outlet (f,t); - if (lyrics_context_ && lyrics_context_==f) + lyric_iter_->substitute_outlet (f, t); + if (lyrics_context_ && lyrics_context_ == f) lyrics_context_ = t; if (music_context_ && music_context_ == f) - music_context_ = t; + music_context_ = t; } - void -New_lyric_combine_music_iterator::construct_children () +Lyric_combine_music_iterator::construct_children () { Music *m = unsmob_music (get_music ()->get_property ("element")); lyric_iter_ = unsmob_iterator (get_iterator (m)); lyricsto_voice_name_ = get_music ()->get_property ("associated-context"); - find_voice (); - + if (lyric_iter_) lyrics_context_ = find_context_below (lyric_iter_->get_outlet (), ly_symbol2scm ("Lyrics"), ""); @@ -156,29 +153,31 @@ New_lyric_combine_music_iterator::construct_children () We do not create a Lyrics context, because the user might create one with a different name, and then we will not find that one. - */ + */ } void -New_lyric_combine_music_iterator::find_voice () +Lyric_combine_music_iterator::find_voice () { SCM voice_name = lyricsto_voice_name_; - SCM running = lyrics_context_ ? lyrics_context_->get_property ("associatedVoice") : SCM_EOL; + SCM running = lyrics_context_ + ? lyrics_context_->get_property ("associatedVoice") + : SCM_EOL; - if (ly_c_string_p (running)) + if (scm_is_string (running)) voice_name = running; - if (ly_c_string_p (voice_name) - && (!music_context_ || ly_scm2string (voice_name) != music_context_->id_string ())) + if (scm_is_string (voice_name) + && (!music_context_ || ly_scm2string (voice_name) != music_context_->id_string ())) { /* (spaghettini). - + Need to set associatedVoiceContext again - */ + */ if (music_context_) made_association_ = false; - + Context *t = get_outlet (); while (t && t->get_parent_context ()) t = t->get_parent_context (); @@ -186,7 +185,6 @@ New_lyric_combine_music_iterator::find_voice () String name = ly_scm2string (voice_name); Context *voice = find_context_below (t, ly_symbol2scm ("Voice"), name); - if (voice) music_context_ = voice; } @@ -195,7 +193,7 @@ New_lyric_combine_music_iterator::find_voice () { if (!made_association_) { - made_association_ = true; + made_association_ = true; lyrics_context_->set_property ("associatedVoiceContext", music_context_->self_scm ()); } @@ -203,43 +201,43 @@ New_lyric_combine_music_iterator::find_voice () } void -New_lyric_combine_music_iterator::process (Moment ) +Lyric_combine_music_iterator::process (Moment) { find_voice (); if (!music_context_) - return ; - + return; + if (!music_context_->get_parent_context ()) { /* The melody has died. We die too. - */ + */ if (lyrics_context_) lyrics_context_->unset_property (ly_symbol2scm ("associatedVoiceContext")); lyric_iter_ = 0; music_context_ = 0; } - + if (music_context_ && start_new_syllable () && lyric_iter_->ok ()) { - Moment m= lyric_iter_->pending_moment (); + Moment m = lyric_iter_->pending_moment (); lyric_iter_->process (m); - music_found_ = true; + music_found_ = true; } } void -New_lyric_combine_music_iterator::do_quit () +Lyric_combine_music_iterator::do_quit () { if (!music_found_) { SCM voice_name = get_music ()->get_property ("associated-context"); String name; - if (ly_c_string_p (voice_name)) + if (scm_is_string (voice_name)) name = ly_scm2string (voice_name); get_music ()->origin ()->warning (_f ("cannot find Voice `%s'", @@ -250,13 +248,10 @@ New_lyric_combine_music_iterator::do_quit () lyric_iter_->quit (); } - - -Music_iterator* -New_lyric_combine_music_iterator::try_music_in_children (Music *m) const +Music_iterator * +Lyric_combine_music_iterator::try_music_in_children (Music *m) const { return lyric_iter_->try_music (m); } - -IMPLEMENT_CTOR_CALLBACK (New_lyric_combine_music_iterator); +IMPLEMENT_CTOR_CALLBACK (Lyric_combine_music_iterator);