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);
21 Vertical_group::do_height()const
24 for (int i=0; i < elem_l_arr_.size(); i++)
25 r.unite(elem_l_arr_[i]->height());
30 Horizontal_group::do_width()const
33 for (int i=0; i < elem_l_arr_.size(); i++)
34 if (elem_l_arr_[i]->item()) // makes no at preprocessing for spanners.
35 r.unite(elem_l_arr_[i]->width());
39 IMPLEMENT_STATIC_NAME(Horizontal_group);
40 IMPLEMENT_IS_TYPE_B1(Horizontal_group, Elbement_group);
41 IMPLEMENT_IS_TYPE_B1(Vertical_group, Elbement_group);
42 IMPLEMENT_STATIC_NAME(Vertical_group);
45 Elbement_group::add_element(Score_elem*i_l)
48 assert(! contains_b(i_l));
50 elem_l_arr_.push(i_l);
55 Horizontal_group::add_element(Score_elem*elt)
57 elt->x_group_element_i_ ++;
58 Elbement_group::add_element(elt);
62 Vertical_group::add_element(Score_elem*e)
64 e->y_group_element_i_++;
65 Elbement_group::add_element(e);
70 Horizontal_group::translate_x(Real x)
72 for (int i=0; i < elem_l_arr_.size(); i++)
73 elem_l_arr_[i]->translate_x(x);
77 Vertical_group::translate_y(Real y)
79 for (int i=0; i < elem_l_arr_.size(); i++)
80 elem_l_arr_[i]->translate_y(y);
83 IMPLEMENT_STATIC_NAME(Elbement_group);
84 IMPLEMENT_IS_TYPE_B1(Elbement_group, Score_elem);
87 Elbement_group::do_print() const
90 for (int i=0; i < elem_l_arr_.size(); i++)
91 mtor << elem_l_arr_[i]->name() << ' ';
96 Horizontal_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
100 while ((i=elem_l_arr_.find_i(old))>=0) {
101 old->x_group_element_i_--;
104 new_l->x_group_element_i_ ++;
105 elem_l_arr_[i] = new_l;
113 Vertical_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
117 while ((i=elem_l_arr_.find_i(old))>=0) {
118 old->y_group_element_i_--;
121 new_l->y_group_element_i_ ++;
122 elem_l_arr_[i] = new_l;
129 Vertical_group::Vertical_group(Vertical_group
133 for (int i=0; i < elem_l_arr_.size(); i++)
134 elem_l_arr_[i]->y_group_element_i_ ++;
137 Horizontal_group::Horizontal_group(Horizontal_group
141 for (int i=0; i < elem_l_arr_.size(); i++)
142 elem_l_arr_[i]->x_group_element_i_ ++;
145 Elbement_group::Elbement_group()
147 transparent_b_ = true;
150 IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group, Horizontal_group, Vertical_group);
151 IMPLEMENT_STATIC_NAME(Horizontal_vertical_group);
154 Horizontal_vertical_group::do_substitute_dependency(Score_elem*o,Score_elem*n)
156 Vertical_group::do_substitute_dependency(o,n);
157 Horizontal_group::do_substitute_dependency(o,n);
161 Horizontal_vertical_group::add_element(Score_elem*e)
163 Vertical_group::add_element(e);
164 Horizontal_group::add_element(e);
168 Horizontal_vertical_group::do_print()const
170 Vertical_group::do_print();
174 Vertical_group::do_print()const
176 Elbement_group::do_print();
180 Horizontal_group::do_print() const
182 Elbement_group::do_print();