]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/spacing-engraver.cc
Fix some bugs in the dynamic engraver and PostScript backend
[lilypond.git] / lily / spacing-engraver.cc
index b3ca5753932cb2253c2cc3e3d385bc8d18c61940..d567cb6ebc279d53e1f55ed741b7c9020bf2cf22 100644 (file)
@@ -32,21 +32,9 @@ struct Rhythmic_tuple
   static int time_compare (Rhythmic_tuple const &, Rhythmic_tuple const &);
 };
 
-inline int
-compare (Rhythmic_tuple const &a, Rhythmic_tuple const &b)
-{
-  return Rhythmic_tuple::time_compare (a, b);
-}
-
-int
-Rhythmic_tuple::time_compare (Rhythmic_tuple const &h1,
-                             Rhythmic_tuple const &h2)
-{
-  return (h1.end_ - h2.end_).main_part_.sign ();
-}
-
-/****************************************************************/
-
+/*
+  TODO: allow starting & stopping of spacing regions.
+*/
 /*
   Acknowledge rhythmic elements, for initializing spacing fields in
   the columns.
@@ -58,8 +46,7 @@ class Spacing_engraver : public Engraver
   vector<Rhythmic_tuple> stopped_durations_;
   Moment now_;
   Spanner *spacing_;
-  Music *start_section_;
-  
+
   TRANSLATOR_DECLARATIONS (Spacing_engraver);
 
 protected:
@@ -70,55 +57,39 @@ protected:
   void start_translation_timestep ();
   void stop_translation_timestep ();
   void process_music ();
-  
   virtual void finalize ();
-  virtual bool try_music (Music *m);
-
-  void start_spanner ();
-  void stop_spanner ();
 };
 
-Spacing_engraver::Spacing_engraver ()
+inline int
+compare (Rhythmic_tuple const &a, Rhythmic_tuple const &b)
 {
-  spacing_ = 0;
-  start_section_ = 0;
+  return Rhythmic_tuple::time_compare (a, b);
 }
 
-bool
-Spacing_engraver::try_music (Music *m)
+int
+Rhythmic_tuple::time_compare (Rhythmic_tuple const &h1,
+                             Rhythmic_tuple const &h2)
 {
-  start_section_ = m;
-  return true;  
+  return (h1.end_ - h2.end_).main_part_.sign ();
 }
 
-void
-Spacing_engraver::process_music ()
+Spacing_engraver::Spacing_engraver ()
 {
-  if (start_section_ && spacing_)
-    stop_spanner ();
-  
-  if (!spacing_)
-    start_spanner ();
+  spacing_ = 0;
 }
 
 void
-Spacing_engraver::start_spanner ()
+Spacing_engraver::process_music ()
 {
-  assert (!spacing_);
-
-  spacing_ = make_spanner ("SpacingSpanner", SCM_EOL);
-  spacing_->set_bound (LEFT,
-                      unsmob_grob (get_property ("currentCommandColumn")));
+  if (!spacing_)
+    {
+      spacing_ = make_spanner ("SpacingSpanner", SCM_EOL);
+      spacing_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
+    }
 }
 
 void
 Spacing_engraver::finalize ()
-{
-  stop_spanner ();
-}
-
-void
-Spacing_engraver::stop_spanner ()
 {
   if (spacing_)
     {
@@ -215,11 +186,8 @@ Spacing_engraver::stop_translation_timestep ()
 void
 Spacing_engraver::start_translation_timestep ()
 {
-  start_section_ = 0;
-
   now_ = now_mom ();
   stopped_durations_.clear ();
-  
   while (playing_durations_.size () && playing_durations_.front ().end_ < now_)
     playing_durations_.delmin ();
   while (playing_durations_.size () && playing_durations_.front ().end_ == now_)
@@ -235,8 +203,7 @@ ADD_TRANSLATOR (Spacing_engraver,
                "bookkeeping of shortest starting and playing notes  ",
 
                /* create */ "SpacingSpanner",
-               /* accept */
-               "spacing-section-event ",
+               /* accept */ "",
                /* read */
                "currentMusicalColumn "
                "currentCommandColumn "