X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=blobdiff_plain;f=lily%2Fslur-engraver.cc;h=8cd767edcd94f619e5e3a0e00148aff526a4c0c3;hb=3c2f386f1385a10dafbb811be245f5a75d6b132c;hp=7987187335586ec8c050ca8b8301939f5808d101;hpb=cb788160bb99e5c6d1e28ba9dd3be955b2a99edc;p=lilypond.git diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 7987187335..8cd767edcd 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -12,12 +12,13 @@ #include "note-column.hh" #include "translator-group.hh" #include "engraver.hh" +#include "spanner.hh" class Slur_engraver :public Engraver { Link_array requests_arr_; Link_array new_slur_req_l_arr_; - Link_array slur_l_stack_; - Link_array end_slur_l_arr_; + Link_array slur_l_stack_; + Link_array end_slur_l_arr_; void set_melisma (bool); protected: @@ -56,13 +57,13 @@ Slur_engraver::set_melisma (bool m) void Slur_engraver::acknowledge_element (Score_element_info info) { - if (dynamic_cast (info.elem_l_)) + if (Note_column::has_interface (info.elem_l_)) { - Note_column *col_l =dynamic_cast (info.elem_l_) ;// ugh + Score_element *e =info.elem_l_; for (int i = 0; i < slur_l_stack_.size (); i++) - slur_l_stack_[i]->add_column (col_l); + Slur::add_column (slur_l_stack_[i], e); for (int i = 0; i < end_slur_l_arr_.size (); i++) - end_slur_l_arr_[i]->add_column (col_l); + Slur::add_column (end_slur_l_arr_[i], e); } } @@ -86,7 +87,7 @@ Slur_engraver::do_removal_processing () void Slur_engraver::do_process_music () { - Array start_slur_l_arr_; + Link_array start_slur_l_arr_; for (int i=0; i< new_slur_req_l_arr_.size (); i++) { Span_req* slur_req_l = new_slur_req_l_arr_[i]; @@ -98,7 +99,7 @@ Slur_engraver::do_process_music () slur_req_l->warning (_f ("can't find both ends of %s", _ ("slur"))); else { - Slur* slur = slur_l_stack_.pop (); + Score_element* slur = slur_l_stack_.pop (); SCM s = get_property ("slurEndAttachment"); if (gh_symbol_p (s)) { @@ -112,7 +113,8 @@ Slur_engraver::do_process_music () { // push a new slur onto stack. // (use temp. array to wait for all slur STOPs) - Slur* slur = new Slur (get_property ("basicSlurProperties")); + Score_element* slur = new Spanner (get_property ("basicSlurProperties")); + Slur::set_interface (slur); SCM s = get_property ("slurBeginAttachment"); if (gh_symbol_p (s)) {