/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2005--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
Moment stop_moment_;
bool have_rest_;
- DECLARE_TRANSLATOR_LISTENER (rest);
- DECLARE_TRANSLATOR_LISTENER (bass_figure);
+ void listen_rest (Stream_event *);
+ void listen_bass_figure (Stream_event *);
virtual void derived_mark () const;
void process_music ();
};
-Figured_bass_engraver::Figured_bass_engraver ()
+Figured_bass_engraver::Figured_bass_engraver (Context *c)
+ : Engraver (c)
{
alignment_ = 0;
continuation_ = false;
clear_spanners ();
}
-IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, rest);
void
Figured_bass_engraver::listen_rest (Stream_event *)
{
have_rest_ = true;
}
-IMPLEMENT_TRANSLATOR_LISTENER (Figured_bass_engraver, bass_figure);
void
Figured_bass_engraver::listen_bass_figure (Stream_event *ev)
{
left_figs.push_back (consecutive_lines[j]->get_bound (LEFT));
SCM ga = Grob_array::make_array ();
- unsmob_grob_array (ga)->set_array (left_figs);
+ unsmob<Grob_array> (ga)->set_array (left_figs);
for (vsize j = consecutive_lines.size (); j--;)
consecutive_lines[j]->set_object ("figures",
- unsmob_grob_array (ga)->smobbed_copy ());
+ unsmob<Grob_array> (ga)->smobbed_copy ());
}
void
Figured_bass_engraver::create_grobs ()
{
Grob *muscol
- = dynamic_cast<Item *> (unsmob_grob (get_property ("currentMusicalColumn")));
+ = unsmob<Item> (get_property ("currentMusicalColumn"));
if (!alignment_)
{
alignment_ = make_spanner ("BassFigureAlignment", SCM_EOL);
Align_interface::add_element (alignment_, group.group_);
}
- if (scm_memq (group.number_, get_property ("implicitBassFigures")) != SCM_BOOL_F)
+ if (scm_is_true (scm_memq (group.number_, get_property ("implicitBassFigures"))))
{
item->set_property ("transparent", SCM_BOOL_T);
item->set_property ("implicit", SCM_BOOL_T);
}
}
+void
+Figured_bass_engraver::boot ()
+{
+ ADD_LISTENER (Figured_bass_engraver, rest);
+ ADD_LISTENER (Figured_bass_engraver, bass_figure);
+}
+
ADD_TRANSLATOR (Figured_bass_engraver,
/* doc */
"Make figured bass numbers.",