From bdd3b8c31fbba8a411da9da1073e4067708c6893 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sat, 2 Nov 2002 01:07:00 +0000 Subject: [PATCH] (Lyric_combine_music_iterator): remove superfluous events. (melisma_busy): new function. --- ChangeLog | 8 ++ VERSION | 2 +- lily/include/lyric-combine-music-iterator.hh | 38 ---------- lily/lyric-combine-music-iterator.cc | 79 ++++++++++++++------ lily/lyric-combine-music.cc | 1 - lily/melisma-engraver.cc | 2 +- lily/new-fingering-engraver.cc | 14 ++-- scm/music-types.scm | 12 +-- scm/script.scm | 4 - 9 files changed, 79 insertions(+), 81 deletions(-) delete mode 100644 lily/include/lyric-combine-music-iterator.hh diff --git a/ChangeLog b/ChangeLog index df191ebfca..faacac1f7e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2002-11-02 Han-Wen Nienhuys + + * lily/lyric-combine-music-iterator.cc + (Lyric_combine_music_iterator): remove superfluous events. + (melisma_busy): new function. + 2002-10-31 Heikki Junes * vimrc: Add shortcuts for compiling, midi-playing and PS-viewing. @@ -55,6 +61,8 @@ 2002-10-28 Han-Wen Nienhuys + * VERSION: 1.7.5 released + * input/regression/finger-chords.ly (texidoc): new file. * lily/script-engraver.cc (process_music): remove scriptHorizontal diff --git a/VERSION b/VERSION index df4ced4ab5..ec9b808776 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=7 -PATCH_LEVEL=5 +PATCH_LEVEL=6 MY_PATCH_LEVEL= # Use the above to send patches: MY_PATCH_LEVEL is always empty for a diff --git a/lily/include/lyric-combine-music-iterator.hh b/lily/include/lyric-combine-music-iterator.hh deleted file mode 100644 index e85fc6ab63..0000000000 --- a/lily/include/lyric-combine-music-iterator.hh +++ /dev/null @@ -1,38 +0,0 @@ - -/* - lyric-combine-music-iterator.hh -- declare Lyric_combine_music_iterator - - source file of the GNU LilyPond music typesetter - - (c) 1999--2002 Han-Wen Nienhuys - - */ - -#ifndef LYRIC_COMBINE_MUSIC_ITERATOR_HH -#define LYRIC_COMBINE_MUSIC_ITERATOR_HH - -#include "music-iterator.hh" - -class Lyric_combine_music_iterator : public Music_iterator -{ -public: - VIRTUAL_COPY_CONS (Music_iterator); - 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 process (Moment); - virtual Music_iterator *try_music_in_children (Music *) const; - - virtual bool ok () const; - virtual void derived_mark () const; -private: - bool get_busy_status ()const ; - Music_iterator * music_iter_; - Music_iterator * lyric_iter_; -}; -#endif /* LYRIC_COMBINE_MUSIC_ITERATOR_HH */ - diff --git a/lily/lyric-combine-music-iterator.cc b/lily/lyric-combine-music-iterator.cc index 77d12d4563..eda5892771 100644 --- a/lily/lyric-combine-music-iterator.cc +++ b/lily/lyric-combine-music-iterator.cc @@ -8,19 +8,43 @@ */ #include "translator-group.hh" -#include "lyric-combine-music-iterator.hh" #include "lyric-combine-music.hh" #include "event.hh" #include "note-head.hh" #include "grob.hh" +#include "music-iterator.hh" + +class Lyric_combine_music_iterator : public Music_iterator +{ +public: + VIRTUAL_COPY_CONS (Music_iterator); + 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 process (Moment); + virtual Music_iterator *try_music_in_children (Music *) const; + + virtual bool ok () const; + virtual void derived_mark () const; +private: + bool get_busy_status ()const ; + bool melisma_busy (); + + + Music_iterator * music_iter_; + Music_iterator * lyric_iter_; +}; + /* Ugh, why static? */ Music *busy_req; -Music *melisma_start_req; -Music *melisma_stop_req; Music *melisma_playing_req; Lyric_combine_music_iterator::Lyric_combine_music_iterator () @@ -31,13 +55,6 @@ Lyric_combine_music_iterator::Lyric_combine_music_iterator () = make_music_by_name (ly_symbol2scm ("BusyPlayingEvent")); melisma_playing_req = make_music_by_name (ly_symbol2scm ("MelismaPlayingEvent")); - melisma_stop_req - = make_music_by_name (ly_symbol2scm ("MelismaEvent")); - melisma_start_req - = make_music_by_name (ly_symbol2scm ("MelismaEvent")); - - melisma_start_req->set_mus_property ("span-direction", gh_int2scm (START)); - melisma_stop_req->set_mus_property ("span-direction", gh_int2scm (STOP)); } music_iter_ =0; @@ -106,6 +123,33 @@ Lyric_combine_music_iterator::get_busy_status () const return false; } + +bool +Lyric_combine_music_iterator::melisma_busy () +{ +#if 0 + + Translator_group * trg = music_iter_->report_to(); + bool melisma_busy= to_boolean (trg->get_property ("melismaBusy")); + + melisma_busy = melisma_busy || to_boolean (trg->get_property ("slurMelismaBusy")); + melisma_busy = melisma_busy || to_boolean (trg->get_property ("tieMelismaBusy")); + melisma_busy = melisma_busy || to_boolean (trg->get_property ("beamMelismaBusy")); + return melisma_busy; + +#else + + /* + The above code is nicer since it doesn't rely on a special + engraver to signal the melisma status. Unfortunately, + music_iter_->report_to() might not be the context that sets the + melisma properties, but rather a parent context. + */ + return music_iter_->try_music (melisma_playing_req); +#endif + +} + void Lyric_combine_music_iterator::process (Moment m) { @@ -115,20 +159,13 @@ Lyric_combine_music_iterator::process (Moment m) music_iter_->process (m); - if (get_busy_status ()) + if (get_busy_status () && !melisma_busy () && lyric_iter_->ok ()) { - bool melisma_b = try_music (melisma_playing_req); - if (!melisma_b) - { - if (lyric_iter_->ok ()) - { - Moment m= lyric_iter_->pending_moment (); - lyric_iter_->process (m); - } - } + Moment m= lyric_iter_->pending_moment (); + lyric_iter_->process (m); } - } + void Lyric_combine_music_iterator::do_quit () { diff --git a/lily/lyric-combine-music.cc b/lily/lyric-combine-music.cc index 8edc61903f..cb77d13c1e 100644 --- a/lily/lyric-combine-music.cc +++ b/lily/lyric-combine-music.cc @@ -8,7 +8,6 @@ */ #include "lyric-combine-music.hh" -#include "lyric-combine-music-iterator.hh" #include "pitch.hh" Lyric_combine_music::Lyric_combine_music () diff --git a/lily/melisma-engraver.cc b/lily/melisma-engraver.cc index 4da8b4a5cf..4ef620c711 100644 --- a/lily/melisma-engraver.cc +++ b/lily/melisma-engraver.cc @@ -62,4 +62,4 @@ ENTER_DESCRIPTION(Melisma_engraver, /* accepts */ "melisma-playing-event", /* acks */ "", /* reads */ "melismaBusy slurMelismaBusy tieMelismaBusy beamMelismaBusy", -/* write */ ""); +/* write */ "melismaEngraverBusy"); diff --git a/lily/new-fingering-engraver.cc b/lily/new-fingering-engraver.cc index 0e5404b9a9..15d3aa97f4 100644 --- a/lily/new-fingering-engraver.cc +++ b/lily/new-fingering-engraver.cc @@ -58,15 +58,22 @@ New_fingering_engraver::acknowledge_grob (Grob_info inf) { Music * m = unsmob_music (gh_car (s)); - if (m && m->is_mus_type ("fingering-event")) + if (!m) + continue; + + + if (m->is_mus_type ("fingering-event")) { add_fingering (inf.grob_ , m, note_ev); } + else if (m->is_mus_type ("script-event")) + { + + } } } } - void New_fingering_engraver::add_fingering (Grob * head, Music * event, @@ -126,10 +133,7 @@ New_fingering_engraver::position_scripts () fingerings_[i].position_ = gh_scm2int (fingerings_[i].head_ -> get_grob_property( "staff-position")); } - - Array up, down, horiz; - for (int i = fingerings_.size(); i--;) { SCM d = fingerings_[i].finger_event_->get_mus_property ("direction"); diff --git a/scm/music-types.scm b/scm/music-types.scm index 7746ca4cf9..e87a13b659 100644 --- a/scm/music-types.scm +++ b/scm/music-types.scm @@ -191,20 +191,12 @@ is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto}, (internal-class-name . "Event") (types . (general-music mark-event event)) - )) - (MelismaEvent - . ( - (description . "") - - (internal-class-name . "Event") - (types . (general-music span-event melisma-playing-event event)) - )) + )) (MelismaPlayingEvent . ( (description . "") - (internal-class-name . "Event") - (types . (general-music event)) + (types . (general-music melisma-playing-event event)) )) (MultiMeasureRestEvent . ( diff --git a/scm/script.scm b/scm/script.scm index 8fde1da280..058f03aefd 100644 --- a/scm/script.scm +++ b/scm/script.scm @@ -53,9 +53,6 @@ default-script-alist) ) - - - (set! default-script-alist (append '(("accDiscant" . ((accordion "Discant" "") #f 0 1 0)) @@ -97,7 +94,6 @@ ("accStdbaseTFE" . ((accordion "Stdbase" "TFE") #f 0 -1 0)) ("accStdbaseMES" . ((accordion "Stdbase" "MES") #f 0 -1 0)) ("accStdbaseTFMES" . ((accordion "Stdbase" "TFMES") #f 0 -1 0)) - ("accSB" . ((accordion "SB" "") #f 0 -1 0)) ("accBB" . ((accordion "BB" "") #f 0 -1 0)) ("accOldEE" . ((accordion "OldEE" "") #f 0 -1 0)) -- 2.39.2