]> git.donarmstrong.com Git - lilypond.git/blob - lily/complex-walker.cc
release: 0.0.64
[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 "staff-column.hh"
10 #include "voice.hh"
11 #include "p-score.hh"
12 #include "complex-staff.hh"
13 #include "debug.hh"
14 #include "complex-walker.hh"
15 #include "walk-regs.hh"
16
17 void
18 Complex_walker::do_post_move()
19 {
20     walk_regs_p_->post_move_processing();
21 }
22
23 void
24 Complex_walker::do_pre_move()
25 {
26     walk_regs_p_->pre_move_processing();
27 }
28
29 void
30 Complex_walker::do_announces()
31 {
32     walk_regs_p_->do_announces();
33 }
34
35
36 void
37 Complex_walker::try_request(Request*req)
38 {
39     bool b =walk_regs_p_->try_request(req);
40     if (!b)
41         req->warning("junking request: "  + String(req->name()));
42 }
43
44 void
45 Complex_walker::process_requests()
46 {
47     Staff_column*c =ptr();
48
49     for (int i=0; i < c->creationreq_l_arr_.size(); i++) {
50         try_request(c->creationreq_l_arr_[i]);
51     }    
52     for (int i=0; i < c->commandreq_l_arr_.size(); i++) {
53         try_request(c->commandreq_l_arr_[i]);
54     }
55
56     for (int i=0; i < c->musicalreq_l_arr_.size(); i++) {
57         try_request(c->musicalreq_l_arr_[i]);
58     }
59
60     regs_process_requests();
61     do_announces();
62 }
63
64 void
65 Complex_walker::regs_process_requests()
66 {
67     walk_regs_p_->process_requests();
68 }
69
70 void
71 Complex_walker::typeset_element(Score_elem *elem_p)
72 {
73     if (!elem_p)
74         return;
75     if (elem_p->spanner())
76         pscore_l_->typeset_spanner(elem_p->spanner(), staff()->pstaff_l_);
77     else
78         ptr()->typeset_musical_item(elem_p->item()); 
79 }
80
81 Complex_walker::Complex_walker(Complex_staff*s)
82     : Staff_walker(s, s->pstaff_l_->pscore_l_)
83 {
84     walk_regs_p_ = new Walker_registers(this);    
85     do_post_move();
86 }
87
88
89 Complex_walker::~Complex_walker()
90 {
91 }
92
93 Complex_staff*
94 Complex_walker::staff()
95 {
96     return (Complex_staff*) staff_l_;
97 }
98
99
100