X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffigured-bass-engraver.cc;h=b2a79262bb64727f7b4421dfb54981032f01e278;hb=a6a51abfd0195a3cf7d6ea095cf69808852f21ce;hp=d2eec375dd4b124e0a5d5f4b3745a14bdb611425;hpb=9e781b7dc83b60a543ce218aa1a5f139f74c760f;p=lilypond.git diff --git a/lily/figured-bass-engraver.cc b/lily/figured-bass-engraver.cc index d2eec375dd..b2a79262bb 100644 --- a/lily/figured-bass-engraver.cc +++ b/lily/figured-bass-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2014 Han-Wen Nienhuys + Copyright (C) 2005--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -122,8 +122,8 @@ protected: 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; @@ -132,7 +132,8 @@ protected: void process_music (); }; -Figured_bass_engraver::Figured_bass_engraver () +Figured_bass_engraver::Figured_bass_engraver (Context *c) + : Engraver (c) { alignment_ = 0; continuation_ = false; @@ -180,14 +181,12 @@ Figured_bass_engraver::stop_translation_timestep () 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) { @@ -222,11 +221,11 @@ Figured_bass_engraver::center_continuations (vector const &consecutiv 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 (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 (ga)->smobbed_copy ()); } void @@ -407,7 +406,7 @@ void Figured_bass_engraver::create_grobs () { Grob *muscol - = dynamic_cast (unsmob_grob (get_property ("currentMusicalColumn"))); + = unsmob (get_property ("currentMusicalColumn")); if (!alignment_) { alignment_ = make_spanner ("BassFigureAlignment", SCM_EOL); @@ -433,7 +432,7 @@ Figured_bass_engraver::create_grobs () 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); @@ -504,6 +503,13 @@ Figured_bass_engraver::add_brackets () } } +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.",