]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/figured-bass-engraver.cc
Web-ja: update introduction
[lilypond.git] / lily / figured-bass-engraver.cc
index d2eec375dd4b124e0a5d5f4b3745a14bdb611425..b2a79262bb64727f7b4421dfb54981032f01e278 100644 (file)
@@ -1,7 +1,7 @@
 /*
   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
@@ -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<Spanner *> 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<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
@@ -407,7 +406,7 @@ 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);
@@ -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.",