* ligature context that encloses use of this engraver, using syntax
* like: \ligature { e \~ c }.
*
- * TODO: Do not allow a series of adjacent porrectus requests, as in:
+ * TODO: Do not allow a series of adjacent porrectus events, as in:
* e \~ d \~ c.
*
* TODO: Junk duplicate (or rather triple) implementation of
#include "staff-symbol-referencer.hh"
#include "porrectus.hh"
-#include "musical-request.hh"
-#include "command-request.hh"
+#include "event.hh"
+
#include "rhythmic-head.hh"
#include "item.hh"
#include "engraver.hh"
private:
PQueue<Grob_pitch_tuple> past_notes_pq_;
- Porrectus_req *porrectus_req_;
+ Music *porrectus_req_;
Array<Grob_pitch_tuple> left_heads_;
Array<Grob_pitch_tuple> right_heads_;
Link_array<Grob> porrectuses_;
bool
Porrectus_engraver::try_music (Music *m)
{
- if (Porrectus_req *req_ = dynamic_cast <Porrectus_req *> (m))
+ if (m->is_mus_type ("porrectus-event"))
{
- porrectus_req_ = req_;
+ porrectus_req_ = m;
return true;
}
else
{
if (Rhythmic_head::has_interface (info_.grob_))
{
- Note_req *note_req_ = dynamic_cast <Note_req *> (info_.music_cause ());
- if (!note_req_)
- return;
- right_heads_.push (Grob_pitch_tuple (info_.grob_, note_req_,
- now_mom () +
- note_req_->length_mom ()));
+ Music * m = info_.music_cause ();
+ if (m->is_mus_type ("note-event"))
+ right_heads_.push (Grob_pitch_tuple (info_.grob_, m,
+ now_mom () +
+ m->get_length ()));
}
}
ENTER_DESCRIPTION(Porrectus_engraver,
/* descr */ "Join adjacent notes to a porrectus ligature.",
/* creats*/ "Porrectus",
-/* acks */ "rhythmic-head-interface",
+/* accepts */ "porrectus-event",
+/* acks */ "rhythmic-head-interface",
/* reads */ "",
/* write */ "");