2 engravergroup.cc -- implement Engraver_group_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
11 #include "engraver-group.hh"
12 #include "engraver.hh"
15 #include "score-element.hh"
18 ADD_THIS_TRANSLATOR(Engraver_group_engraver);
21 Engraver_group_engraver::announce_element (Score_element_info info)
23 announce_info_arr_.push (info);
24 Engraver::announce_element (info);
28 Engraver_group_engraver::do_announces()
30 Link_array<Translator_group> groups = group_l_arr ();
31 for (int i=0; i < groups.size(); i++)
33 Engraver_group_engraver * group = dynamic_cast<Engraver_group_engraver*> (groups[i]);
36 group->do_announces();
42 Link_array<Translator> nongroups = nongroup_l_arr ();
43 while (announce_info_arr_.size ())
45 for (int j =0; j < announce_info_arr_.size(); j++)
47 Score_element_info info = announce_info_arr_[j];
50 info.req_l_ = &dummy_req;
51 for (int i=0; i < nongroups.size(); i++)
52 { // Is this good enough?
53 Engraver * eng = dynamic_cast<Engraver*> (nongroups[i]);
54 if (eng && eng!= info.origin_grav_l_arr_[0])
55 eng->acknowledge_element (info);
58 announce_info_arr_.clear ();
59 for (int i=0; i < nongroups.size(); i++)
61 Engraver * eng = dynamic_cast<Engraver*> (nongroups[i]);
63 eng->process_acknowledged ();
71 Engraver_group_engraver::get_staff_info() const
73 Staff_info inf = Engraver::get_staff_info();
75 Link_array<Translator> simple_translators = nongroup_l_arr ();
76 for (int i=0; i < simple_translators.size(); i++)
78 Engraver * eng = dynamic_cast<Engraver*> (simple_translators[i]);
80 eng->fill_staff_info (inf);
87 Engraver_group_engraver::~Engraver_group_engraver ()
91 Engraver_group_engraver::Engraver_group_engraver ()