]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/piano-pedal-engraver.cc
release: 1.5.29
[lilypond.git] / lily / piano-pedal-engraver.cc
index eefb30b1540bdd6d5d867c1bdbc2def5db30d109..a4f53899492749dae0fa68a0d447074f9df959eb 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 2000 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 2000--2002 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "engraver.hh"
@@ -20,8 +20,7 @@
 class Piano_pedal_engraver : public Engraver
 {
 public:
-  VIRTUAL_COPY_CONS (Translator);
-  Piano_pedal_engraver ();
+  TRANSLATOR_DECLARATIONS(Piano_pedal_engraver);
   ~Piano_pedal_engraver ();
 protected:
   virtual void initialize ();
@@ -44,20 +43,20 @@ private:
   Pedal_info *info_list_;
 };
 
-ADD_THIS_TRANSLATOR (Piano_pedal_engraver);
+
 
 Piano_pedal_engraver::Piano_pedal_engraver ()
 {
   info_list_ = 0;
 }
 void
-Piano_pedal_engraver::initialize()
+Piano_pedal_engraver::initialize ()
 {
   info_list_ = new Pedal_info[4];
   Pedal_info *p = info_list_;
 
 
-  char * names [] = { "Sostenuto", "Sustain", "UnaChorda", 0  };
+  char * names [] = { "Sostenuto", "Sustain", "UnaCorda", 0  };
   char **np = names ;
   do
     {
@@ -69,10 +68,10 @@ Piano_pedal_engraver::initialize()
 
       p++;
     }
-  while (*(np ++));
+  while (* (np ++));
 }
 
-Piano_pedal_engraver::~Piano_pedal_engraver()
+Piano_pedal_engraver::~Piano_pedal_engraver ()
 {
   delete[] info_list_;
 }
@@ -88,17 +87,17 @@ Piano_pedal_engraver::acknowledge_grob (Grob_info info)
     {
       if (p->item_p_)
        {
-         if (Rhythmic_head::has_interface (info.elem_l_))
+         if (Rhythmic_head::has_interface (info.grob_l_))
            {
-             Side_position::add_support (p->item_p_, info.elem_l_);
+             Side_position_interface::add_support (p->item_p_, info.grob_l_);
 
-             if (Side_position::get_axis(p->item_p_) == X_AXIS
-                 && !p->item_p_->parent_l (Y_AXIS))
-               p->item_p_->set_parent (info.elem_l_, Y_AXIS);
+             if (Side_position_interface::get_axis (p->item_p_) == X_AXIS
+                 && !p->item_p_->get_parent (Y_AXIS))
+               p->item_p_->set_parent (info.grob_l_, Y_AXIS);
            }
-         if (Stem::has_interface (info.elem_l_))
+         if (Stem::has_interface (info.grob_l_))
            {
-             Side_position::add_support (p->item_p_,info.elem_l_);
+             Side_position_interface::add_support (p->item_p_,info.grob_l_);
            }
        }
     }
@@ -107,14 +106,14 @@ Piano_pedal_engraver::acknowledge_grob (Grob_info info)
 bool
 Piano_pedal_engraver::try_music (Music *m)
 {
-  if (Span_req * s = dynamic_cast<Span_req*>(m))
+  if (Span_req * s = dynamic_cast<Span_req*> (m))
     {
       for (Pedal_info*p = info_list_; p->name_; p ++)
        {
          if (scm_equal_p (s->get_mus_property ("span-type"),
                           ly_str02scm (p->name_))==SCM_BOOL_T)
            {
-             p->req_l_drul_[s->get_span_dir()] = s;
+             p->req_l_drul_[s->get_span_dir ()] = s;
              return true;
            }
        }
@@ -131,19 +130,19 @@ Piano_pedal_engraver::create_grobs ()
        continue;
       
       SCM s = SCM_EOL;
-      SCM strings = get_property( ("pedal" + String (p->name_) + "Strings").ch_C());
-      ifscm_ilength (strings) < 3)
+      SCM strings = get_property (("pedal" + String (p->name_) + "Strings").ch_C ());
+      if (scm_ilength (strings) < 3)
        continue;
       
       if (p->req_l_drul_[STOP] && p->req_l_drul_[START])
        {
          if (!p->start_req_l_)
            {
-             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: %s",  p->name_ ));
+             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'",  p->name_));
            }
          else
            {
-             s = gh_cadr (strings);
+             s = ly_cadr (strings);
            }
          p->start_req_l_ = p->req_l_drul_[START];
        }
@@ -151,24 +150,24 @@ Piano_pedal_engraver::create_grobs ()
        {
          if (!p->start_req_l_)
            {
-             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: %s", p->name_ ));
+             p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", p->name_));
            }
          else
            {
-             s = gh_car (strings);
+             s = ly_caddr (strings);
            }
          p->start_req_l_ = 0;
        }
       else if (p->req_l_drul_[START])
        {
          p->start_req_l_ = p->req_l_drul_[START];
-         s = gh_caddr (strings);
+         s = ly_car (strings);
        }
 
       if (gh_string_p (s))
        {
          String propname = String (p->name_) + "Pedal";
-         p->item_p_ = new Item (get_property (propname.ch_C()));
+         p->item_p_ = new Item (get_property (propname.ch_C ()));
          p->item_p_->set_grob_property ("text", s);
 
          announce_grob (p->item_p_,
@@ -195,7 +194,7 @@ Piano_pedal_engraver::stop_translation_timestep ()
     {
       if (p->item_p_)
        {
-         Side_position::add_staff_support (p->item_p_);
+         Side_position_interface::add_staff_support (p->item_p_);
          
          /*
            Hmm.
@@ -204,7 +203,7 @@ Piano_pedal_engraver::stop_translation_timestep ()
            {
              if (sustain)
                {
-                 Side_position::add_support (p->item_p_,sustain);
+                 Side_position_interface::add_support (p->item_p_,sustain);
                }
            }
          typeset_grob (p->item_p_);
@@ -222,3 +221,9 @@ Piano_pedal_engraver::start_translation_timestep ()
       p->req_l_drul_[START] = 0;
     }
 }
+ENTER_DESCRIPTION(Piano_pedal_engraver,
+/* descr */       "Engrave piano pedal symbols.",
+/* creats*/       "SostenutoPedal SustainPedal UnaCordaPedal",
+/* acks  */       "rhythmic-head-interface stem-interface",
+/* reads */       "pedalSostenutoStrings pedalSustainStrings pedalUnaCordaStrings",
+/* write */       "");