X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fdynamic-engraver.cc;h=408fde144e29bf9eeb674b211d578b8bc14160c4;hb=875cf3061b68867a109cdaf52c93be868a3e01be;hp=ce2c068c6403211ca35ee5a90c841a5bf5e669d4;hpb=2873636a53f0011f837aaf6e2072de602730d957;p=lilypond.git diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index ce2c068c64..408fde144e 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -25,13 +25,9 @@ class Dynamic_engraver : public Engraver { Text_item * text_p_; - Staff_side_item * staff_side_p_; - Staff_side_spanner * ss_span_p_; - Staff_side_spanner * to_end_ss_span_p_; - - Crescendo * to_end_cresc_p_; Crescendo * cresc_p_; + Span_req * cresc_req_l_; Array dynamic_req_l_arr_; void typeset_all (); @@ -54,9 +50,9 @@ Dynamic_engraver::Dynamic_engraver() { do_post_move_processing(); text_p_ =0; - staff_side_p_ =0; + to_end_cresc_p_ = cresc_p_ = 0; - ss_span_p_ = to_end_ss_span_p_=0; + cresc_req_l_ = 0; } @@ -98,7 +94,7 @@ void Dynamic_engraver::do_process_requests() { Crescendo* new_cresc_p=0; - Staff_side_spanner * new_sss_p =0; + for (int i=0; i < dynamic_req_l_arr_.size(); i++) { if (Text_script_req *absd = @@ -114,39 +110,37 @@ Dynamic_engraver::do_process_requests() text_p_ = new Text_item; text_p_->text_str_ = loud; // ugh - - staff_side_p_ = new Staff_side_item; - staff_side_p_->set_elt_property ("script-priority", - gh_int2scm (100)); - - staff_side_p_->set_victim (text_p_); - staff_side_p_->axis_ = Y_AXIS; - staff_side_p_->dir_ = DOWN; + text_p_->set_elt_property ("style", gh_str02scm ("dynamic")); + text_p_->set_elt_property ("script-priority", + gh_int2scm (100)); + Side_position_interface (text_p_).set_axis (Y_AXIS); - SCM prop = get_property ("verticalDirection", 0); - if (isdir_b (prop)) + if (absd->get_direction ()) { - staff_side_p_->dir_ = to_dir (prop); + text_p_->set_elt_property ("direction", gh_int2scm (absd->get_direction ())); } - prop = get_property ("dynamicDirection", 0); - if (gh_number_p(prop)) - { - staff_side_p_->dir_ = to_dir (prop); - } - if (absd->dir_) + + /* + UGH UGH + */ + SCM prop = get_property ("dynamicDirection", 0); + if (!isdir_b (prop)) { - staff_side_p_->dir_ = absd->dir_; + prop = get_property ("verticalDirection", 0); } + if (isdir_b (prop) && to_dir (prop)) + text_p_->set_elt_property ("direction", prop); + + prop = get_property ("dynamicPadding", 0); if (gh_number_p(prop)) { - staff_side_p_->set_elt_property ("padding", prop); + text_p_->set_elt_property ("padding", prop); } announce_element (Score_element_info (text_p_, absd)); - announce_element (Score_element_info (staff_side_p_, absd)); } else if (Span_req *span_l = dynamic_cast (dynamic_req_l_arr_[i])) @@ -161,29 +155,8 @@ Dynamic_engraver::do_process_requests() { assert (!to_end_cresc_p_); to_end_cresc_p_ =cresc_p_; - to_end_ss_span_p_ = ss_span_p_ ; cresc_p_ = 0; - ss_span_p_ =0; - - - - - SCM prop = get_property ("verticalDirection", 0); - if (isdir_b (prop)) - { - to_end_ss_span_p_->dir_ = to_dir (prop); - } - prop = get_property ("dynamicDirection", 0); - if (isdir_b (prop)) - { - to_end_ss_span_p_->dir_ = to_dir (prop); - } - prop = get_property ("dynamicPadding", 0); - if (gh_number_p(prop)) - { - to_end_ss_span_p_->set_elt_property ("padding",prop); - } } } else if (span_l->span_dir_ == START) @@ -192,14 +165,9 @@ Dynamic_engraver::do_process_requests() assert (!new_cresc_p); new_cresc_p = new Crescendo; new_cresc_p->grow_dir_ = (span_l->span_type_str_ == "crescendo") ? BIGGER : SMALLER; - announce_element (Score_element_info (new_cresc_p, span_l)); - new_sss_p = new Staff_side_spanner; - new_sss_p->set_victim (new_cresc_p); - new_sss_p->axis_ = Y_AXIS; - // UGH.! - // new_sss_p->set_elt_property ("dangling", SCM_BOOL_T); - announce_element (Score_element_info (new_sss_p, span_l)); + Side_position_interface (new_cresc_p).set_axis (Y_AXIS); + announce_element (Score_element_info (new_cresc_p, span_l)); } } } @@ -210,15 +178,13 @@ Dynamic_engraver::do_process_requests() { ::warning (_ ("Too many crescendi here")); typeset_element (cresc_p_); - typeset_element (ss_span_p_); + cresc_p_ = 0; - ss_span_p_ =0; } cresc_p_ = new_cresc_p; - ss_span_p_ = new_sss_p; cresc_p_->set_bounds(LEFT,get_staff_info().musical_pcol_l ()); - ss_span_p_->set_bounds (LEFT,get_staff_info().musical_pcol_l ()); + if (text_p_) { cresc_p_->dyn_b_drul_[LEFT] = true; @@ -244,8 +210,6 @@ Dynamic_engraver::do_removal_processing () if (cresc_p_) { typeset_element (cresc_p_ ); - typeset_element (ss_span_p_); - ss_span_p_ =0; cresc_req_l_->warning (_ ("unended crescendo")); cresc_p_ =0; } @@ -259,19 +223,17 @@ Dynamic_engraver::typeset_all () if (to_end_cresc_p_) { to_end_cresc_p_->set_bounds(RIGHT,get_staff_info().musical_pcol_l ()); - to_end_ss_span_p_->set_bounds(RIGHT,get_staff_info().musical_pcol_l ()); + typeset_element (to_end_cresc_p_); - typeset_element (to_end_ss_span_p_); + to_end_cresc_p_ =0; - to_end_ss_span_p_ =0; + } if (text_p_) { typeset_element (text_p_); - typeset_element (staff_side_p_); text_p_ =0; - staff_side_p_ =0; } } @@ -283,14 +245,14 @@ Dynamic_engraver::acknowledge_element (Score_element_info i) || dynamic_cast (i.elem_l_) ) { - if (staff_side_p_) - staff_side_p_->add_support (i.elem_l_); + if (text_p_) + Side_position_interface (text_p_).add_support (i.elem_l_); - if (to_end_ss_span_p_) - to_end_ss_span_p_->add_support (i.elem_l_); + if (to_end_cresc_p_) + Side_position_interface (to_end_cresc_p_).add_support (i.elem_l_); - if (ss_span_p_) - ss_span_p_->add_support (i.elem_l_); + if (cresc_p_) + Side_position_interface(cresc_p_).add_support (i.elem_l_); } }