- Music* slur_ev = new_slur_evs_[i];
- // end slur: move the slur to other array
- Direction d = to_dir (slur_ev->get_mus_property ("span-direction"));
- if (d== STOP)
- {
- if (slur_stack_.empty ())
- /* How to shut up this warning, when Voice_devnull_engraver has
- eaten start event? */
- slur_ev->origin ()->warning (_f ("can't find start of slur"));
- else
- {
- Grob* slur = slur_stack_.pop ();
-
- end_slurs_.push (slur);
- events_.pop ();
- }
- }
- else if (d == START)
- {
- // push a new slur onto stack.
- // (use temp. array to wait for all slur STOPs)
- Grob* slur = new Spanner (get_property ("Slur"));
- Slur::set_interface (slur); // cannot remove yet!
-
-
- if (Direction updown = to_dir (slur_ev->get_mus_property ("direction")))
- {
- slur->set_grob_property ("direction", gh_int2scm (updown));
- }
-
- start_slurs.push (slur);
- events_.push (slur_ev);
- announce_grob (slur, slur_ev->self_scm ());
- }