2 complex-walker.cc -- implement Complex_walker
4 source file of the LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
9 #include "musicalrequest.hh"
10 #include "staff-column.hh"
13 #include "complex-staff.hh"
15 #include "voice-group-regs.hh"
16 #include "voice-regs.hh"
17 #include "complex-walker.hh"
19 #include "commandrequest.hh"
20 #include "walkregs.hh"
23 Complex_walker::do_post_move()
25 walk_regs_p_
->post_move_processing();
29 Complex_walker::do_pre_move()
31 walk_regs_p_
->pre_move_processing();
35 Complex_walker::do_announces()
37 walk_regs_p_
->do_announces();
41 Complex_walker::try_command_request(Command_req
*req_l
)
43 return walk_regs_p_
->try_request(req_l
);
47 Complex_walker::try_request(Request
*req
)
49 walk_regs_p_
->try_request(req
);
53 Complex_walker::process_requests()
55 Staff_column
*c
=ptr();
57 for (int i
=0; i
< c
->creationreq_l_arr_
.size(); i
++) {
58 try_request(c
->creationreq_l_arr_
[i
]);
60 for (int i
=0; i
< c
->commandreq_l_arr_
.size(); i
++) {
61 try_request(c
->commandreq_l_arr_
[i
]);
64 for (int i
=0; i
< c
->musicalreq_l_arr_
.size(); i
++) {
65 try_request(c
->musicalreq_l_arr_
[i
]);
68 regs_process_requests();
73 Complex_walker::regs_process_requests()
75 walk_regs_p_
->process_requests();
79 Complex_walker::typeset_element(Staff_elem
*elem_p
)
83 if (elem_p
->spanner())
84 pscore_l_
->typeset_spanner(elem_p
->spanner(), staff()->pstaff_l_
);
86 ptr()->typeset_musical_item(elem_p
->item());
89 Complex_walker::Complex_walker(Complex_staff
*s
)
90 : Staff_walker(s
, s
->pstaff_l_
->pscore_l_
)
92 walk_regs_p_
= new Walker_registers(this);
97 Complex_walker::~Complex_walker()
102 Complex_walker::staff()
104 return (Complex_staff
*) staff_l_
;