X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Frest-collision-engraver.cc;h=be91eb230621b8017558aeaf913555b48282dfc5;hb=9661ba1fb275f3e14f8a69f2cee2f02a2f893e48;hp=b2fd168d0741c161c3e2c9aa802fd5a528927305;hpb=bb36bac02a64770871780231ecc709cb18b20932;p=lilypond.git diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc index b2fd168d07..be91eb2306 100644 --- a/lily/rest-collision-engraver.cc +++ b/lily/rest-collision-engraver.cc @@ -8,11 +8,24 @@ #include "debug.hh" #include "rest-collision.hh" -#include "rest-collision-engraver.hh" +#include "engraver.hh" #include "collision.hh" #include "note-column.hh" +class Rest_collision_engraver : public Engraver +{ + Item* rest_collision_p_; + Link_array note_column_l_arr_; +protected: + virtual void acknowledge_element (Score_element_info); + virtual void process_acknowledged (); + virtual void do_pre_move_processing(); +public: + VIRTUAL_COPY_CONS(Translator); + Rest_collision_engraver(); + +}; ADD_THIS_TRANSLATOR(Rest_collision_engraver); @@ -27,17 +40,18 @@ Rest_collision_engraver::process_acknowledged () if (rest_collision_p_ || note_column_l_arr_.size () < 2) return; - rest_collision_p_ = new Rest_collision; - announce_element (Score_element_info (rest_collision_p_, 0)); + rest_collision_p_ = new Item (get_property ("basicRestCollisionProperties")); + Rest_collision::set_interface (rest_collision_p_); + announce_element (rest_collision_p_, 0); for (int i=0; i< note_column_l_arr_.size (); i++) - rest_collision_p_->add_column (note_column_l_arr_[i]); + Rest_collision::add_column ( rest_collision_p_,note_column_l_arr_[i]); } void Rest_collision_engraver::acknowledge_element (Score_element_info i) { - if (dynamic_cast (i.elem_l_)) - note_column_l_arr_.push (dynamic_cast (i.elem_l_)); + if (Note_column::has_interface (i.elem_l_)) + note_column_l_arr_.push (i.elem_l_); } void