2 ctie-engraver.cc -- implement Command_tie_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #include "ctie-engraver.hh"
11 #include "command-request.hh"
12 #include "note-head.hh"
13 #include "musical-request.hh"
15 Command_tie_engraver::Command_tie_engraver()
22 Command_tie_engraver::do_try_music (Music *m)
24 if (Command_tie_req * c = dynamic_cast<Command_tie_req*> (m))
33 Command_tie_engraver::acknowledge_element (Score_element_info i)
35 if (Note_head *nh = dynamic_cast<Note_head *> (i.elem_l_))
37 Note_req * m = dynamic_cast<Note_req* > (i.req_l_);
38 now_heads_.push (CHead_melodic_tuple (nh, m, now_moment()+ m->duration ()));
43 Command_tie_engraver::do_process_requests ()
49 Command_tie_engraver::processed_acknowledged ()
54 Command_tie_engraver::do_pre_move_processing ()
56 for (int i=0; i < now_heads_.size (); i++)
58 past_notes_pq_.insert (now_heads_[i]);
63 Command_tie_engraver::do_post_move_processing ()
65 Moment now = now_moment ();
66 while (past_notes_pq_.front ().end_ < now)
67 past_notes_pq_.delmin ();
72 ADD_THIS_TRANSLATOR(Command_tie_engraver);
75 CHead_melodic_tuple::CHead_melodic_tuple ()
82 CHead_melodic_tuple::CHead_melodic_tuple (Note_head *h, Melodic_req*m, Moment mom)
90 CHead_melodic_tuple::pitch_compare (CHead_melodic_tuple const&h1,
91 CHead_melodic_tuple const &h2)
93 return Melodic_req::compare (*h1.mel_l_, *h2.mel_l_);
97 CHead_melodic_tuple::time_compare (CHead_melodic_tuple const&h1,
98 CHead_melodic_tuple const &h2)
100 return (h1.end_ - h2.end_ ).sign ();