]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/piano-pedal-engraver.cc
* The grand 2005-2006 replace.
[lilypond.git] / lily / piano-pedal-engraver.cc
index eb46d8e4336923f75ffad6e45b57f4b294f617ae..80677d7829df397627c0e494319d59a0cad17a93 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 2000--2005 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 2000--2006 Jan Nieuwenhuizen <janneke@gnu.org>
 
   Chris Jackson <chris@fluffhouse.org.uk> - extended to support
   bracketed pedals.
@@ -64,9 +64,9 @@ protected:
   virtual void initialize ();
   virtual void finalize ();
   virtual bool try_music (Music *);
-  virtual void stop_translation_timestep ();
-  virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
+  void stop_translation_timestep ();
+  DECLARE_ACKNOWLEDGER (note_column);
+  void process_music ();
 
 private:
 
@@ -95,7 +95,7 @@ Piano_pedal_engraver::initialize ()
 {
   char *names [] = { "Sostenuto", "Sustain", "UnaCorda", 0 };
 
-  info_list_ = new Pedal_info[sizeof (names) / sizeof (const char *)];
+  info_list_ = new Pedal_info[sizeof (names) / sizeof (char const *)];
   Pedal_info *p = info_list_;
 
   char **np = names;
@@ -127,22 +127,19 @@ Piano_pedal_engraver::~Piano_pedal_engraver ()
   I'm a script
 */
 void
-Piano_pedal_engraver::acknowledge_grob (Grob_info info)
+Piano_pedal_engraver::acknowledge_note_column (Grob_info info)
 {
   for (Pedal_info *p = info_list_; p && p->name_; p++)
     {
-      if (Note_column::has_interface (info.grob_))
+      if (p->line_spanner_)
        {
-         if (p->line_spanner_)
-           {
-             Side_position_interface::add_support (p->line_spanner_, info.grob_);
-             add_bound_item (p->line_spanner_, info.grob_);
-           }
-         if (p->bracket_)
-           add_bound_item (p->bracket_, info.grob_);
-         if (p->finished_bracket_)
-           add_bound_item (p->finished_bracket_, info.grob_);
+         Side_position_interface::add_support (p->line_spanner_, info.grob ());
+         add_bound_item (p->line_spanner_, info.grob ());
        }
+      if (p->bracket_)
+       add_bound_item (p->bracket_, info.grob ());
+      if (p->finished_bracket_)
+       add_bound_item (p->finished_bracket_, info.grob ());
     }
 }
 
@@ -154,8 +151,8 @@ Piano_pedal_engraver::try_music (Music *m)
       for (Pedal_info *p = info_list_; p->name_; p++)
        {
          String nm = p->name_ + String ("Event");
-         if (ly_c_equal_p (m->get_property ("name"),
-                           scm_str2symbol (nm.to_str0 ())))
+         if (ly_is_equal (m->get_property ("name"),
+                          scm_str2symbol (nm.to_str0 ())))
            {
              Direction d = to_dir (m->get_property ("span-direction"));
              p->event_drul_[d] = m;
@@ -236,13 +233,9 @@ Piano_pedal_engraver::create_text_grobs (Pedal_info *p, bool mixed)
       if (!mixed)
        {
          if (!p->start_ev_)
-           {
-             p->event_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", p->name_));
-           }
+           p->event_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", p->name_));
          else
-           {
-             s = scm_cadr (strings);
-           }
+           s = scm_cadr (strings);
          p->start_ev_ = p->event_drul_[START];
        }
     }
@@ -251,13 +244,9 @@ Piano_pedal_engraver::create_text_grobs (Pedal_info *p, bool mixed)
       if (!mixed)
        {
          if (!p->start_ev_)
-           {
-             p->event_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", p->name_));
-           }
+           p->event_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", p->name_));
          else
-           {
-             s = scm_caddr (strings);
-           }
+           s = scm_caddr (strings);
          p->start_ev_ = 0;
        }
     }
@@ -325,7 +314,7 @@ Piano_pedal_engraver::create_bracket_grobs (Pedal_info *p, bool mixed)
        {
          SCM flare = p->bracket_->get_property ("bracket-flare");
          p->bracket_->set_property ("bracket-flare", scm_cons (scm_car (flare),
-                                                               scm_make_real (0)));
+                                                               scm_from_double (0)));
        }
 
       p->finished_bracket_ = p->bracket_;
@@ -348,7 +337,7 @@ Piano_pedal_engraver::create_bracket_grobs (Pedal_info *p, bool mixed)
       if (!p->finished_bracket_)
        {
          SCM flare = p->bracket_->get_property ("bracket-flare");
-         p->bracket_->set_property ("bracket-flare", scm_cons (scm_make_real (0), scm_cdr (flare)));
+         p->bracket_->set_property ("bracket-flare", scm_cons (scm_from_double (0), scm_cdr (flare)));
        }
 
       /* Set this property for 'mixed style' pedals,    Ped._______/\ ,
@@ -367,7 +356,7 @@ Piano_pedal_engraver::create_bracket_grobs (Pedal_info *p, bool mixed)
            WTF is pedal-text not the bound of the object? --hwn
          */
          if (p->item_)
-           p->bracket_->set_property ("pedal-text", p->item_->self_scm ());
+           p->bracket_->set_object ("pedal-text", p->item_->self_scm ());
        }
 
       /*
@@ -426,9 +415,7 @@ Piano_pedal_engraver::finalize ()
          SCM cc = get_property ("currentCommandColumn");
          Item *c = unsmob_item (cc);
          if (p->line_spanner_)
-           {
-             p->line_spanner_->set_bound (RIGHT, c);
-           }
+           p->line_spanner_->set_bound (RIGHT, c);
          p->bracket_->set_bound (RIGHT, c);
 
          p->finished_bracket_ = p->bracket_;
@@ -490,17 +477,13 @@ Piano_pedal_engraver::typeset_all (Pedal_info *p)
     p->finished_bracket_ = 0;
 
   if (p->item_)
-    {
-      p->item_ = 0;
-    }
+    p->item_ = 0;
 
   if (p->finished_bracket_)
     {
       Grob *r = p->finished_bracket_->get_bound (RIGHT);
       if (!r)
-       {
-         p->finished_bracket_->set_bound (RIGHT, unsmob_grob (get_property ("currentMusicalColumn")));
-       }
+       p->finished_bracket_->set_bound (RIGHT, unsmob_grob (get_property ("currentMusicalColumn")));
 
       p->finished_bracket_ = 0;
     }
@@ -525,13 +508,17 @@ Piano_pedal_engraver::typeset_all (Pedal_info *p)
     }
 }
 
+#include "translator.icc"
+ADD_ACKNOWLEDGER (Piano_pedal_engraver, note_column);
 ADD_TRANSLATOR (Piano_pedal_engraver,
-               /* descr */ "Engrave piano pedal symbols and brackets.",
-               /* creats*/ "SostenutoPedal SustainPedal UnaCordaPedal SostenutoPedalLineSpanner SustainPedalLineSpanner UnaCordaPedalLineSpanner",
-               /* accepts */ "pedal-event",
-               /* acks  */ "note-column-interface",
-               /* reads */ "currentCommandColumn "
-               "pedalSostenutoStrings pedalSustainStrings "
-               "pedalUnaCordaStrings pedalSostenutoStyle "
-               "pedalSustainStyle pedalUnaCordaStyle",
+               /* doc */ "Engrave piano pedal symbols and brackets.",
+               /* create */ "SostenutoPedal SustainPedal UnaCordaPedal SostenutoPedalLineSpanner SustainPedalLineSpanner UnaCordaPedalLineSpanner",
+               /* accept */ "pedal-event",
+               /* read */ "currentCommandColumn "
+               "pedalSostenutoStrings "
+               "pedalSustainStrings "
+               "pedalUnaCordaStrings "
+               "pedalSostenutoStyle "
+               "pedalSustainStyle "
+               "pedalUnaCordaStyle",
                /* write */ "");