From: fred Date: Tue, 4 Feb 1997 16:07:29 +0000 (+0000) Subject: lilypond-0.0.27 X-Git-Tag: release/1.5.59~6369 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=8e4a8ff71cba2f601b222a33b0f9127069c268ed;p=lilypond.git lilypond-0.0.27 --- diff --git a/src/voicegroup.cc b/src/voicegroup.cc index 5dfe5a8a27..f3088d73e2 100644 --- a/src/voicegroup.cc +++ b/src/voicegroup.cc @@ -4,51 +4,61 @@ #include "voicegroup.hh" #include "register.hh" -Voice_group_registers::Voice_group_registers(Complex_walker*w_l) - : //text_reg_(w_l), - stem_beam_reg_(w_l) -//, script_reg_(w_l), - // stem_reg_(w_l) +static int temp_id_count; + +Voice_group_registers::Voice_group_registers(Complex_walker*w_l, String id) + : text_reg_(w_l), + stem_beam_reg_(w_l), + script_reg_(w_l) { walk_l_ = w_l; + if (id=="") + id = __FUNCTION__ + String(temp_id_count++); + group_id_str_ = id; + dir_i_ = 0; } void Voice_group_registers::pre_move_processing() { stem_beam_reg_.pre_move_processing(); -// script_reg_.pre_move_processing(); -// text_reg_.pre_move_processing(); + script_reg_.pre_move_processing(); + text_reg_.pre_move_processing(); } + void Voice_group_registers::post_move_processing() { stem_beam_reg_.post_move_processing(); + text_reg_.post_move_processing(); + script_reg_.post_move_processing(); } + bool Voice_group_registers::try_request(Request*r_l) { + if (r_l->groupfeature()) { + dir_i_ = r_l->groupfeature()->stemdir_i_; + return true; + } bool b = stem_beam_reg_.try_request(r_l); -/* if (!b) - b|= beam_reg_.try_request(r_l); if (!b) b|= script_reg_.try_request(r_l); if (!b) b|= text_reg_.try_request(r_l); - */ + return b; } void Voice_group_registers::announce_element(Staff_elem_info i) { -/* - if (i.group_regs_l_!= this) + if (i.group_regs_l_!= this) return; - */ + stem_beam_reg_.acknowledge_element(i); -// text_reg_.announce_element(i); - // script_reg_.announce_element(i); + script_reg_.acknowledge_element(i); + text_reg_.acknowledge_element(i); } @@ -56,5 +66,17 @@ void Voice_group_registers::process_requests() { stem_beam_reg_.process_request(); + if (dir_i_) + stem_beam_reg_.set_dir (dir_i_); + + script_reg_.process_request(); + text_reg_.process_request(); } + +bool +Voice_group_registers::acceptable_request(Request*r) +{ + return (r->stem() || r->beam() || r->text() || r->script() || + r->groupfeature()); +}