X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fchord-name-engraver.cc;h=963c3033f22e67ecaf6b0a0c46ca73dd45cc2d63;hb=9f3572d98bb948c9689cd1f75401a029451fa001;hp=20752ae2f7f7b4c368af7120c2c323577b1281e7;hpb=04265f11d1f21416ccebd2dcaa1d903dc781b36e;p=lilypond.git diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc index 20752ae2f7..963c3033f2 100644 --- a/lily/chord-name-engraver.cc +++ b/lily/chord-name-engraver.cc @@ -6,19 +6,17 @@ (c) 1998--2006 Jan Nieuwenhuizen */ -#include "chord-name.hh" -#include "context.hh" -#include "dimensions.hh" #include "engraver.hh" +#include "chord-name.hh" +#include "output-def.hh" #include "font-interface.hh" -#include "item.hh" #include "output-def.hh" -#include "pitch.hh" +#include "dimensions.hh" +#include "item.hh" #include "protected-scm.hh" -#include "stream-event.hh" +#include "context.hh" #include "warn.hh" - -#include "translator.icc" +#include "pitch.hh" class Chord_name_engraver : public Engraver { @@ -26,12 +24,14 @@ class Chord_name_engraver : public Engraver protected: void stop_translation_timestep (); void process_music (); + virtual bool try_music (Music *); virtual void finalize (); virtual void derived_mark () const; - DECLARE_TRANSLATOR_LISTENER (note); private: + void add_note (Music *); + Item *chord_name_; - vector notes_; + vector notes_; SCM last_chord_; }; @@ -53,6 +53,12 @@ Chord_name_engraver::Chord_name_engraver () last_chord_ = SCM_EOL; } +void +Chord_name_engraver::add_note (Music *n) +{ + notes_.push_back (n); +} + void Chord_name_engraver::process_music () { @@ -63,10 +69,10 @@ Chord_name_engraver::process_music () SCM inversion = SCM_EOL; SCM pitches = SCM_EOL; - Stream_event *inversion_event = 0; + Music *inversion_event = 0; for (vsize i = 0; i < notes_.size (); i++) { - Stream_event *n = notes_[i]; + Music *n = notes_[i]; SCM p = n->get_property ("pitch"); if (!unsmob_pitch (p)) continue; @@ -119,11 +125,18 @@ Chord_name_engraver::process_music () last_chord_ = chord_as_scm; } -IMPLEMENT_TRANSLATOR_LISTENER (Chord_name_engraver, note); -void -Chord_name_engraver::listen_note (Stream_event *ev) +bool +Chord_name_engraver::try_music (Music *m) { - notes_.push_back (ev); + /* + hmm. Should check? + */ + if (m->is_mus_type ("note-event")) + { + add_note (m); + return true; + } + return false; } void @@ -137,6 +150,8 @@ Chord_name_engraver::stop_translation_timestep () The READs description is not strictly accurate: which properties are read depend on the chord naming function active. */ +#include "translator.icc" + ADD_TRANSLATOR (Chord_name_engraver, /* doc */ "Catch note-events " "and generate the appropriate chordname.",