]> git.donarmstrong.com Git - lilypond.git/blob - lily/engraver.cc
release: 0.0.73pre
[lilypond.git] / lily / engraver.cc
1 /*
2   engraver.cc -- implement Engraver
3
4   Sourcefile of GNU LilyPond musictypesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9 #include "music-list.hh"
10 #include "musical-request.hh"
11 #include "engraver.hh"
12 #include "engraver-group.hh"
13 #include "debug.hh"
14
15 void
16 Engraver::post_move_processing()
17 {
18         
19     if (status < CREATION_INITED) {
20         do_creation_processing();
21         status = CREATION_INITED;
22     }
23     if (status >= MOVE_INITED)
24         return;
25
26     do_post_move_processing();
27     status = MOVE_INITED;
28 }
29
30 bool
31 Engraver::try_request(Request * r)
32 {
33     if (status < MOVE_INITED)
34         post_move_processing();
35
36     return do_try_request(r);
37 }
38
39 void
40 Engraver::process_requests()
41 {
42     if (status < PROCESSED_REQS)
43         post_move_processing();
44     else if (status >= PROCESSED_REQS)
45         return; 
46     
47     status = PROCESSED_REQS;
48     do_process_requests();
49 }
50
51 void
52 Engraver::pre_move_processing()
53 {
54     do_pre_move_processing();
55     status = CREATION_INITED;
56 }
57
58 void
59 Engraver::fill_staff_info(Staff_info&)
60 {
61     
62 }
63
64 Scalar
65 Engraver::get_feature(String t)
66 {
67     return daddy_grav_l_->get_feature(t);
68 }
69
70 bool
71 Engraver::do_try_request(Request*)
72 {
73     return false;
74 }
75
76 Engraver::Engraver()
77 {
78     status = VIRGIN;
79     daddy_grav_l_ = 0;
80 }
81
82 void
83 Engraver::announce_element(Score_elem_info i)
84 {
85     i.origin_grav_l_arr_.push(this);
86     daddy_grav_l_->announce_element(i);
87 }
88
89 void
90 Engraver::typeset_element(Score_elem*p)
91 {
92     daddy_grav_l_->typeset_element(p);
93 }
94
95 Paper_def*
96 Engraver::paper()const
97 {
98     return daddy_grav_l_->paper();
99 }
100
101 void
102 Engraver::typeset_breakable_item(Item * nobreak_p)
103 {
104     daddy_grav_l_->typeset_breakable_item(nobreak_p);
105 }
106
107 bool
108 Engraver::contains_b(Engraver *grav_l)const
109 {
110     return this == grav_l;
111 }
112
113 Staff_info
114 Engraver::get_staff_info() const
115 {
116     return daddy_grav_l_->get_staff_info();
117 }
118
119 void
120 Engraver::print() const
121 {
122 #ifndef NPRINT
123     mtor << "\n" << name() << " {";
124     do_print();
125     mtor << "}";
126 #endif
127 }
128
129 IMPLEMENT_STATIC_NAME(Engraver);
130 IMPLEMENT_IS_TYPE_B(Engraver);
131
132 void
133 Engraver::do_print()const
134 {
135 }
136
137