2 elem-group.cc -- implement Horizontal_vertical_group
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
9 #include "elem-group.hh"
10 #include "interval.hh"
15 Elbement_group::contains_b(Score_elem const*e)const
17 return elem_l_arr_.find_l(e);
20 Elbement_group::Elbement_group(Elbement_group const &s)
26 Vertical_group::do_height()const
29 for (int i=0; i < elem_l_arr_.size(); i++)
30 r.unite(elem_l_arr_[i]->height());
35 Horizontal_group::do_width()const
38 for (int i=0; i < elem_l_arr_.size(); i++)
39 if (elem_l_arr_[i]->item()) // makes no at preprocessing for spanners.
40 r.unite(elem_l_arr_[i]->width());
45 IMPLEMENT_IS_TYPE_B1(Horizontal_group, Elbement_group);
46 IMPLEMENT_IS_TYPE_B1(Vertical_group, Elbement_group);
50 Elbement_group::add_element(Score_elem*i_l)
53 assert(! contains_b(i_l));
55 elem_l_arr_.push(i_l);
60 Horizontal_group::add_element(Score_elem*elt)
62 assert ( !elt->x_group_l_ );
63 elt->x_group_l_ = this;
64 Elbement_group::add_element(elt);
68 Vertical_group::add_element(Score_elem*e)
70 assert( ! e->y_group_l_ );
73 Elbement_group::add_element(e);
78 Horizontal_group::translate_x(Real x)
80 for (int i=0; i < elem_l_arr_.size(); i++)
81 elem_l_arr_[i]->translate_x(x);
85 Vertical_group::translate_y(Real y)
87 for (int i=0; i < elem_l_arr_.size(); i++)
88 elem_l_arr_[i]->translate_y(y);
92 IMPLEMENT_IS_TYPE_B1(Elbement_group, Score_elem);
95 Elbement_group::do_print() const
98 for (int i=0; i < elem_l_arr_.size(); i++)
99 mtor << elem_l_arr_[i]->name() << ' ';
104 Horizontal_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
108 while ((i=elem_l_arr_.find_i(old))>=0) {
112 new_l->x_group_l_ = this;
113 elem_l_arr_[i] = new_l;
115 elem_l_arr_.unordered_del(i);
121 Vertical_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
125 while ((i=elem_l_arr_.find_i(old))>=0) {
129 new_l->y_group_l_ =this;
130 elem_l_arr_[i] = new_l;
132 elem_l_arr_.unordered_del(i);
137 Vertical_group::Vertical_group(Vertical_group
143 Horizontal_group::Horizontal_group(Horizontal_group
149 Elbement_group::Elbement_group()
151 transparent_b_ = true;
154 IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group, Horizontal_group, Vertical_group);
157 Horizontal_vertical_group::Horizontal_vertical_group()
162 Horizontal_vertical_group::do_substitute_dependency(Score_elem*o,Score_elem*n)
164 Vertical_group::do_substitute_dependency(o,n);
165 Horizontal_group::do_substitute_dependency(o,n);
169 Horizontal_vertical_group::add_element(Score_elem*e)
171 Vertical_group::add_element(e);
172 Horizontal_group::add_element(e);
176 Horizontal_vertical_group::do_print()const
178 Vertical_group::do_print();
182 Vertical_group::do_print()const
184 Elbement_group::do_print();
188 Horizontal_group::do_print() const
190 Elbement_group::do_print();
196 Vertical_group::remove_element(Score_elem*s)
198 remove_dependency( s );
202 Horizontal_group::remove_element(Score_elem*s)
204 remove_dependency( s );