2 voicegroup.cc -- implement Voice_group_registers
4 source file of the LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
9 #include "musicalrequest.hh"
10 #include "voicegroup.hh"
11 #include "register.hh"
13 #include "stembeamreg.hh"
14 #include "scriptreg.hh"
15 #include "complexwalker.hh"
16 #include "commandrequest.hh"
18 static int temp_id_count
;
20 Voice_group_registers::Voice_group_registers(Complex_walker
*w_l
, String id
)
23 text_reg_
=new Text_register(w_l
);
24 stem_beam_reg_
= new Stem_beam_register(w_l
);
25 script_reg_
= new Script_register(w_l
);
27 id
= __FUNCTION__
+ String(temp_id_count
++);
32 Voice_group_registers::~Voice_group_registers()
35 delete stem_beam_reg_
;
40 Voice_group_registers::pre_move_processing()
42 stem_beam_reg_
->pre_move_processing();
43 script_reg_
->pre_move_processing();
44 text_reg_
->pre_move_processing();
48 Voice_group_registers::post_move_processing()
50 stem_beam_reg_
->post_move_processing();
51 text_reg_
->post_move_processing();
52 script_reg_
->post_move_processing();
56 Voice_group_registers::try_request(Request
*r_l
)
58 if (r_l
->groupfeature()) {
59 set_dir(r_l
->groupfeature()->stemdir_i_
);
62 bool b
= stem_beam_reg_
->try_request(r_l
);
64 b
|= script_reg_
->try_request(r_l
);
66 b
|= text_reg_
->try_request(r_l
);
72 Voice_group_registers::acknowledge_element(Staff_elem_info i
)
74 if (i
.group_regs_l_
!= this)
77 stem_beam_reg_
->acknowledge_element(i
);
78 script_reg_
->acknowledge_element(i
);
79 text_reg_
->acknowledge_element(i
);
83 Voice_group_registers::set_dir(int i
)
85 stem_beam_reg_
->set_dir(i
);
86 script_reg_
->set_dir(i
);
87 text_reg_
->set_dir(i
);
89 Array
<Voice_registers
*> vr_arr (walk_l_
->get_voice_regs(this));
90 for (int j
=0; j
<vr_arr
.size(); j
++) {
92 vr_arr
[j
]->set_dir(i
);
96 Voice_group_registers::process_requests()
98 stem_beam_reg_
->process_request();
99 script_reg_
->process_request();
100 text_reg_
->process_request();
105 Voice_group_registers::acceptable_request(Request
*r
)
107 return (r
->stem() || r
->beam() || r
->text() || r
->script() ||