]> git.donarmstrong.com Git - lilypond.git/blob - lily/engraver.cc
release: 0.1.11
[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   if (status < CREATION_INITED) 
19     {
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 void
31 Engraver::removal_processing()
32 {
33   if (status < CREATION_INITED)
34         do_creation_processing();
35   
36   do_removal_processing();
37 }
38
39 bool
40 Engraver::try_request (Request * r)
41 {
42   if (status < MOVE_INITED)
43         post_move_processing();
44
45   return do_try_request (r);
46 }
47
48 void
49 Engraver::process_requests()
50 {
51   if (status < PROCESSED_REQS)
52         post_move_processing();
53   else if (status >= PROCESSED_REQS)
54         return; 
55   
56   status = PROCESSED_REQS;
57   do_process_requests();
58 }
59
60 void
61 Engraver::pre_move_processing()
62 {
63   do_pre_move_processing();
64   status = CREATION_INITED;
65 }
66
67 void
68 Engraver::fill_staff_info (Staff_info&)
69 {
70   
71 }
72
73 Scalar
74 Engraver::get_feature (String t)
75 {
76   return daddy_grav_l_->get_feature (t);
77 }
78
79 bool
80 Engraver::do_try_request (Request*)
81 {
82   return false;
83 }
84
85 Engraver::Engraver()
86 {
87   status = VIRGIN;
88   daddy_grav_l_ = 0;
89 }
90
91 void
92 Engraver::announce_element (Score_elem_info i)
93 {
94   i.origin_grav_l_arr_.push (this);
95   daddy_grav_l_->announce_element (i);
96 }
97
98 void
99 Engraver::typeset_element (Score_elem*p)
100 {
101   daddy_grav_l_->typeset_element (p);
102 }
103
104 Paper_def*
105 Engraver::paper() const
106 {
107   return daddy_grav_l_->paper();
108 }
109
110 bool
111 Engraver::contains_b (Engraver *grav_l) const
112 {
113   return this == grav_l;
114 }
115
116 Staff_info
117 Engraver::get_staff_info() const
118 {
119   if (daddy_grav_l_)
120     return daddy_grav_l_->get_staff_info();
121   Staff_info info;
122   return info;
123 }
124
125 void
126 Engraver::print() const
127 {
128 #ifndef NPRINT
129   DOUT << "\n" << name() << " {";
130   do_print();
131   DOUT << "}";
132 #endif
133 }
134
135
136 IMPLEMENT_IS_TYPE_B(Engraver);
137
138 void
139 Engraver::do_print() const
140 {
141 }
142