]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/phrasing-slur-engraver.cc
* input/regression/bar-check-redefine.ly (pipeSymbol): new file.
[lilypond.git] / lily / phrasing-slur-engraver.cc
index 03f13e6dbbed23627143160ebef5d5be7b7e811c..f6779595e28d6881cfd81065045e31a27cb48d54 100644 (file)
@@ -1,14 +1,15 @@
 /*
   phrasing-slur-engraver.cc -- implement Phrasing_slur_engraver
 
-  (c)  1997--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "event.hh"
 #include "slur.hh"
 #include "warn.hh"
 #include "note-column.hh"
-#include "translator-group.hh"
+#include "context.hh"
+
 #include "engraver.hh"
 #include "spanner.hh"
 
@@ -23,7 +24,7 @@ class Phrasing_slur_engraver : public Engraver
 {
   Link_array<Music> eventses_;
   Link_array<Music> new_phrasing_slur_evs_;
-  Link_array<Grob> phrasing_slur_l_stack_;
+  Link_array<Grob> phrasing_slurs_;
   Link_array<Grob> end_phrasing_slurs_;
   Moment last_start_;
 
@@ -36,7 +37,7 @@ protected:
   virtual void process_acknowledged_grobs ();
 
 public:
-  TRANSLATOR_DECLARATIONS(Phrasing_slur_engraver);
+  TRANSLATOR_DECLARATIONS (Phrasing_slur_engraver);
   
 };
 
@@ -48,28 +49,13 @@ Phrasing_slur_engraver::Phrasing_slur_engraver ()
 bool
 Phrasing_slur_engraver::try_music (Music *ev)
 {
-  if (ev->is_mus_type ("abort-event"))
-    {
-      for (int i = 0; i < phrasing_slur_l_stack_.size (); i++)
-       {
-         phrasing_slur_l_stack_[i]->suicide ();
-       }
-      phrasing_slur_l_stack_.clear ();
-      for (int i = 0; i < end_phrasing_slurs_.size (); i++)
-       {
-         end_phrasing_slurs_[i]->suicide ();
-       }
-      end_phrasing_slurs_.clear ();
-      eventses_.clear ();
-      new_phrasing_slur_evs_.clear ();
-    }
-  else if (ev->is_mus_type ("phrasing-slur-event"))
+ if (ev->is_mus_type ("phrasing-slur-event"))
     {
       /*
        Let's not start more than one phrasing slur per moment.
       */
       
-      Direction d = to_dir (ev->get_mus_property ("span-direction"));
+      Direction d = to_dir (ev->get_property ("span-direction"));
          
       if (d == START)
        {
@@ -95,8 +81,8 @@ Phrasing_slur_engraver::acknowledge_grob (Grob_info info)
   if (Note_column::has_interface (info.grob_))
     {
       Grob *e =info.grob_;
-      for (int i = 0; i < phrasing_slur_l_stack_.size (); i++)
-       Slur::add_column (phrasing_slur_l_stack_[i], e);
+      for (int i = 0; i < phrasing_slurs_.size (); i++)
+       Slur::add_column (phrasing_slurs_[i], e);
       for (int i = 0; i < end_phrasing_slurs_.size (); i++)
        Slur::add_column (end_phrasing_slurs_[i], e);
     }
@@ -105,14 +91,14 @@ Phrasing_slur_engraver::acknowledge_grob (Grob_info info)
 void
 Phrasing_slur_engraver::finalize ()
 {
-  for (int i = 0; i < phrasing_slur_l_stack_.size (); i++)
+  for (int i = 0; i < phrasing_slurs_.size (); i++)
     {
       /*
        Let's not typeset unterminated stuff
       */
-      phrasing_slur_l_stack_[i]->suicide ();
+      phrasing_slurs_[i]->suicide ();
     }
-  phrasing_slur_l_stack_.clear ();
+  phrasing_slurs_.clear ();
 
   for (int i=0; i < eventses_.size (); i++)
     {
@@ -129,15 +115,15 @@ Phrasing_slur_engraver::process_acknowledged_grobs ()
       Music* phrasing_slur_ev = new_phrasing_slur_evs_[i];
       // end phrasing slur: move the phrasing slur to other array
 
-      Direction d = to_dir (phrasing_slur_ev->get_mus_property ("span-direction"));
+      Direction d = to_dir (phrasing_slur_ev->get_property ("span-direction"));
       
       if (d == STOP)
        {
-         if (phrasing_slur_l_stack_.empty ())
+         if (phrasing_slurs_.is_empty ())
            phrasing_slur_ev->origin ()->warning (_f ("can't find start of phrasing slur"));
          else
            {
-             Grob* phrasing_slur = phrasing_slur_l_stack_.pop ();
+             Grob* phrasing_slur = phrasing_slurs_.pop ();
              end_phrasing_slurs_.push (phrasing_slur);
              eventses_.pop ();
            }
@@ -150,18 +136,18 @@ Phrasing_slur_engraver::process_acknowledged_grobs ()
          Slur::set_interface (phrasing_slur); // can't remove.
 
 
-         if (Direction updown = to_dir (phrasing_slur_ev->get_mus_property ("direction")))
+         if (Direction updown = to_dir (phrasing_slur_ev->get_property ("direction")))
            {
-             phrasing_slur->set_grob_property ("direction", gh_int2scm (updown));
+             phrasing_slur->set_property ("direction", gh_int2scm (updown));
            }
 
          start_phrasing_slurs.push (phrasing_slur);
          eventses_.push (phrasing_slur_ev);
-         announce_grob(phrasing_slur, phrasing_slur_ev->self_scm());
+         announce_grob (phrasing_slur, phrasing_slur_ev->self_scm ());
        }
     }
   for (int i=0; i < start_phrasing_slurs.size (); i++)
-    phrasing_slur_l_stack_.push (start_phrasing_slurs[i]);
+    phrasing_slurs_.push (start_phrasing_slurs[i]);
   new_phrasing_slur_evs_.clear ();
 }
 
@@ -183,7 +169,7 @@ Phrasing_slur_engraver::start_translation_timestep ()
 
 
 
-ENTER_DESCRIPTION(Phrasing_slur_engraver,
+ENTER_DESCRIPTION (Phrasing_slur_engraver,
 /* descr */       "Print phrasing slurs. Similar to @ref{Slur_engraver}",
 /* creats*/       "PhrasingSlur",
 /* accepts */     "phrasing-slur-event",