From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Wed, 5 Oct 2005 13:11:44 +0000 (+0000)
Subject: (process_music): new file.
X-Git-Tag: release/2.7.12~9
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=f01c2c9ded1bca384e1565fcf425f0cf4764cb5a;p=lilypond.git

(process_music): new file.
---

diff --git a/lily/new-figured-bass-engraver.cc b/lily/new-figured-bass-engraver.cc
index 5398e42a20..3ef1e29ea4 100644
--- a/lily/new-figured-bass-engraver.cc
+++ b/lily/new-figured-bass-engraver.cc
@@ -46,7 +46,7 @@ struct Figure_group
 struct New_figured_bass_engraver : public Engraver
 {
   TRANSLATOR_DECLARATIONS(New_figured_bass_engraver);
-  void finalize_spanners();
+  void clear_spanners();
   void add_brackets ();
 protected:
   Array<Figure_group> groups_;
@@ -57,7 +57,6 @@ protected:
   Music *rest_event_; 
   
   virtual bool try_music (Music *);
-  virtual void finalize ();
   virtual void derived_mark () const; 
   
   void start_translation_timestep ();
@@ -87,7 +86,7 @@ New_figured_bass_engraver::stop_translation_timestep ()
     found  = found  || groups_[i].current_music_;
 
   if (!found)
-    finalize_spanners (); 
+    clear_spanners (); 
 }
 
 New_figured_bass_engraver::New_figured_bass_engraver ()
@@ -126,7 +125,8 @@ New_figured_bass_engraver::try_music (Music *m)
      SCM fig = m->get_property ("figure");
      for (int i = 0; i < groups_.size (); i++)
        {
-	 if (ly_is_equal (groups_[i].number_, fig))
+	 if (!groups_[i].current_music_
+	     && ly_is_equal (groups_[i].number_, fig))
 	   {
 	     groups_[i].current_music_ = m;
 	     groups_[i].is_continuation_ =
@@ -145,8 +145,9 @@ New_figured_bass_engraver::try_music (Music *m)
      return true;
    }
 }
+
 void
-New_figured_bass_engraver::finalize_spanners ()
+New_figured_bass_engraver::clear_spanners ()
 {
   if (!alignment_)
     return;
@@ -194,21 +195,21 @@ New_figured_bass_engraver::process_music ()
 {
   if (rest_event_)
     {
-      finalize_spanners ();
+      clear_spanners ();
       return;
     }
   
   if (!continuation_
       && new_musics_.is_empty ())
     {
-      finalize_spanners ();
+      clear_spanners ();
       return;
     }
   
   Grob *muscol = dynamic_cast<Item*> (unsmob_grob (get_property ("currentMusicalColumn")));
   if (!continuation_)
     {
-      finalize_spanners ();
+      clear_spanners ();
       alignment_ = make_spanner ("BassFigureAlignment", SCM_EOL);
       alignment_->set_bound (LEFT, muscol);
     }
@@ -308,19 +309,17 @@ New_figured_bass_engraver::process_music ()
   add_brackets ();
 }
 
-void
-New_figured_bass_engraver::finalize ()
-{
-  finalize_spanners ();
-}
-
 
 ADD_TRANSLATOR (New_figured_bass_engraver,
 		/* doc */
 
 		"Make figured bass numbers.",
 		/* create */
-		"BassFigure BassFigureLine BassFigureAlignment BassFigureBracket",
+		"NewBassFigure "
+		"BassFigureAlignment "
+		"BassFigureBracket",
+		"BassFigureContinuation "
+		"BassFigureLine "
 
 		/* accept */
 		"bass-figure-event rest-event",