+
+void
+Piano_pedal_engraver::typeset_all (Pedal_info *p)
+{
+ /*
+ Handle suicide.
+ */
+ if (p->finished_line_spanner_
+ && !p->finished_line_spanner_->is_live ())
+ p->finished_line_spanner_ = 0;
+ if (p->finished_bracket_
+ && !p->finished_bracket_->is_live ())
+ p->finished_bracket_ = 0;
+
+ if (p->item_)
+ 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_ = 0;
+ }
+
+ if (p->finished_line_spanner_)
+ {
+ Grob *l = p->finished_line_spanner_->get_bound (LEFT);
+ Grob *r = p->finished_line_spanner_->get_bound (RIGHT);
+ if (!r && l)
+ p->finished_line_spanner_->set_bound (RIGHT, l);
+ else if (!l && r)
+ p->finished_line_spanner_->set_bound (LEFT, r);
+ else if (!r && !l)
+ {
+ Grob *cc = unsmob_grob (get_property ("currentMusicalColumn"));
+ Item *ci = dynamic_cast<Item *> (cc);
+ p->finished_line_spanner_->set_bound (RIGHT, ci);
+ p->finished_line_spanner_->set_bound (LEFT, ci);
+ }
+
+ p->finished_line_spanner_ = 0;
+ }
+}
+
+ADD_ACKNOWLEDGER (Piano_pedal_engraver, note_column);
+
+ADD_TRANSLATOR (Piano_pedal_engraver,
+
+ /* doc */
+ "Engrave piano pedal symbols and brackets.",
+
+ /* create */
+ "SostenutoPedal "
+ "SostenutoPedalLineSpanner "
+ "SustainPedal "
+ "SustainPedalLineSpanner "
+ "UnaCordaPedal "
+ "UnaCordaPedalLineSpanner ",
+
+ /* accept */
+ "pedal-event",
+
+ /* read */
+ "currentCommandColumn "
+ "pedalSostenutoStrings "
+ "pedalSostenutoStyle "
+ "pedalSustainStrings "
+ "pedalSustainStyle "
+ "pedalUnaCordaStrings "
+ "pedalUnaCordaStyle",
+ /* write */ "");