source file of the GNU LilyPond music typesetter
- (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 1998--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "performer.hh"
#include "audio-item.hh"
#include "context.hh"
-#include "pqueue.hh"
#include "stream-event.hh"
#include "translator.icc"
class Tie_performer : public Performer
{
Stream_event *event_;
- Stream_event *last_event_;
vector<Audio_element_info> now_heads_;
+ vector<Audio_element_info> now_tied_heads_;
vector<Audio_element_info> heads_to_tie_;
bool ties_created_;
Tie_performer::Tie_performer ()
{
event_ = 0;
- last_event_ = 0;
ties_created_ = false;
}
{
if (Audio_note *an = dynamic_cast<Audio_note *> (inf.elem_))
{
- now_heads_.push_back (inf);
+ if (an->tie_event_)
+ now_tied_heads_.push_back (inf);
+ else
+ now_heads_.push_back (inf);
+
for (vsize i = heads_to_tie_.size (); i--;)
{
Stream_event *right_mus = inf.event_;
if (ties_created_)
{
heads_to_tie_.clear ();
- last_event_ = 0;
ties_created_ = false;
}
if (event_)
{
heads_to_tie_ = now_heads_;
- last_event_ = event_;
}
+
+ for (vsize i = now_tied_heads_.size (); i--;)
+ heads_to_tie_.push_back (now_tied_heads_[i]);
+
event_ = 0;
now_heads_.clear ();
+ now_tied_heads_.clear ();
}
ADD_TRANSLATOR (Tie_performer,
- /* doc */ "Generate ties between noteheads of equal pitch.",
- /* create */ "",
- /* accept */ "tie-event",
- /* read */ "tieMelismaBusy",
- /* write */ "");
+ /* doc */
+ "Generate ties between note heads of equal pitch.",
+
+ /* create */
+ "",
+
+ /* read */
+ "tieMelismaBusy",
+
+ /* write */
+ ""
+ );