]> git.donarmstrong.com Git - lilypond.git/blob - lily/complex-walker.cc
09773b1503099016efc92c11a3f3a096e9a922bd
[lilypond.git] / lily / complex-walker.cc
1 /*
2   complex-walker.cc -- implement Complex_walker
3
4   source file of the LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9 #include "musical-request.hh"
10 #include "staff-column.hh"
11 #include "voice.hh"
12 #include "p-score.hh"
13 #include "complex-staff.hh"
14 #include "debug.hh"
15 #include "voice-group-regs.hh"
16 #include "voice-regs.hh"
17 #include "complex-walker.hh"
18 //#include "misc.hh"
19 #include "command-request.hh"
20 #include "walk-regs.hh"
21
22 void
23 Complex_walker::do_post_move()
24 {
25     walk_regs_p_->post_move_processing();
26 }
27
28 void
29 Complex_walker::do_pre_move()
30 {
31     walk_regs_p_->pre_move_processing();
32 }
33
34 void
35 Complex_walker::do_announces()
36 {
37     walk_regs_p_->do_announces();
38 }
39
40 bool
41 Complex_walker::try_command_request(Command_req *req_l)
42 {
43     return walk_regs_p_->try_request(req_l);
44 }
45
46 void
47 Complex_walker::try_request(Request*req)
48 {
49     walk_regs_p_->try_request(req);
50 }
51
52 void
53 Complex_walker::process_requests()
54 {
55     Staff_column*c =ptr();
56
57     for (int i=0; i < c->creationreq_l_arr_.size(); i++) {
58         try_request(c->creationreq_l_arr_[i]);
59     }    
60     for (int i=0; i < c->commandreq_l_arr_.size(); i++) {
61         try_request(c->commandreq_l_arr_[i]);
62     }
63
64     for (int i=0; i < c->musicalreq_l_arr_.size(); i++) {
65         try_request(c->musicalreq_l_arr_[i]);
66     }
67
68     regs_process_requests();
69     do_announces();
70 }
71
72 void
73 Complex_walker::regs_process_requests()
74 {
75     walk_regs_p_->process_requests();
76 }
77
78 void
79 Complex_walker::typeset_element(Staff_elem *elem_p)
80 {
81     if (!elem_p)
82         return;
83     if (elem_p->spanner())
84         pscore_l_->typeset_spanner(elem_p->spanner(), staff()->pstaff_l_);
85     else
86         ptr()->typeset_musical_item(elem_p->item()); 
87 }
88
89 Complex_walker::Complex_walker(Complex_staff*s)
90     : Staff_walker(s, s->pstaff_l_->pscore_l_)
91 {
92     walk_regs_p_ = new Walker_registers(this);    
93     do_post_move();
94 }
95
96
97 Complex_walker::~Complex_walker()
98 {
99 }
100
101 Complex_staff*
102 Complex_walker::staff()
103 {
104     return (Complex_staff*) staff_l_;
105 }
106
107
108