/*
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"
{
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_;
virtual void process_acknowledged_grobs ();
public:
- TRANSLATOR_DECLARATIONS(Phrasing_slur_engraver);
+ TRANSLATOR_DECLARATIONS (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)
{
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);
}
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++)
{
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 ();
}
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 ();
}
-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",