/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2000--2012 Jan Nieuwenhuizen <janneke@gnu.org>
+ Copyright (C) 2000--2015 Jan Nieuwenhuizen <janneke@gnu.org>
Han-Wen Nienhuys <hanwen@xs4all.nl>
TRANSLATOR_DECLARATIONS (Part_combine_engraver);
protected:
- DECLARE_ACKNOWLEDGER (note_head);
- DECLARE_ACKNOWLEDGER (stem);
+ void acknowledge_note_head (Grob_info);
+ void acknowledge_stem (Grob_info);
- DECLARE_TRANSLATOR_LISTENER (part_combine);
- DECLARE_TRANSLATOR_LISTENER (note);
+ void listen_part_combine (Stream_event *);
+ void listen_note (Stream_event *);
void process_music ();
void stop_translation_timestep ();
void create_item (Stream_event *ev);
Stream_event *waiting_event_;
};
-IMPLEMENT_TRANSLATOR_LISTENER (Part_combine_engraver, part_combine);
void
Part_combine_engraver::listen_part_combine (Stream_event *ev)
{
waiting_event_ = new_event_;
}
-IMPLEMENT_TRANSLATOR_LISTENER (Part_combine_engraver, note);
void
Part_combine_engraver::listen_note (Stream_event *)
{
note_found_ = true;
}
-Part_combine_engraver::Part_combine_engraver ()
+Part_combine_engraver::Part_combine_engraver (Context *c)
+ : Engraver (c)
{
text_ = 0;
new_event_ = 0;
void
Part_combine_engraver::create_item (Stream_event *ev)
{
- SCM what = ev->get_property ("class");
+ SCM what = scm_car (ev->get_property ("class"));
SCM text = SCM_EOL;
- if (what == ly_symbol2scm ("solo-one-event"))
+ if (scm_is_eq (what, ly_symbol2scm ("solo-one-event")))
text = get_property ("soloText");
- else if (what == ly_symbol2scm ("solo-two-event"))
+ else if (scm_is_eq (what, ly_symbol2scm ("solo-two-event")))
text = get_property ("soloIIText");
- else if (what == ly_symbol2scm ("unisono-event"))
+ else if (scm_is_eq (what, ly_symbol2scm ("unisono-event")))
text = get_property ("aDueText");
if (Text_interface::is_markup (text))
note_found_ = false;
}
-ADD_ACKNOWLEDGER (Part_combine_engraver, note_head);
-ADD_ACKNOWLEDGER (Part_combine_engraver, stem);
+void
+Part_combine_engraver::boot ()
+{
+ ADD_LISTENER (Part_combine_engraver, part_combine);
+ ADD_LISTENER (Part_combine_engraver, note);
+ ADD_ACKNOWLEDGER (Part_combine_engraver, note_head);
+ ADD_ACKNOWLEDGER (Part_combine_engraver, stem);
+}
+
ADD_TRANSLATOR (Part_combine_engraver,
/* doc */
"Part combine engraver for orchestral scores: Print markings"