#include "note-column.hh"
#include "collision.hh"
-#include "dimension-cache.hh"
+
#include "engraver.hh"
+#include "axis-group-interface.hh"
/*
collect Note_column, and as soon as there are 2 or more, put them in
a collision object. */
class Collision_engraver : public Engraver {
- Collision* col_p_;
- Link_array<Note_column> note_column_l_arr_;
+ Item * col_p_;
+ Link_array<Score_element> note_column_l_arr_;
protected:
virtual void acknowledge_element (Score_element_info);
return ;
if (!col_p_)
{
- col_p_ = new Collision (get_property ("basicCollisionProperties"));
+ col_p_ = new Item (get_property ("basicCollisionProperties"));
+ Axis_group_interface::set_interface (col_p_);
+ Axis_group_interface::set_axes (col_p_, X_AXIS, Y_AXIS);
+
announce_element (Score_element_info (col_p_,0));
}
+
for (int i=0; i< note_column_l_arr_.size (); i++)
- col_p_->add_column (note_column_l_arr_[i]);
+ Collision::add_column (col_p_,note_column_l_arr_[i]);
}
void
Collision_engraver::acknowledge_element (Score_element_info i)
{
- if (Note_column * c = dynamic_cast<Note_column *> (i.elem_l_))
+ if (Note_column::has_interface (i.elem_l_))
{
/*should check Y axis? */
- if (c->rest_b () || c->parent_l(X_AXIS))
+ if (Note_column::rest_b (i.elem_l_) || i.elem_l_->parent_l(X_AXIS))
return ;
- note_column_l_arr_.push (c);
+ note_column_l_arr_.push (i.elem_l_);
}
}