2 axis-group.cc -- implement Axis_group_administration
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
9 #include "axis-group.hh"
10 #include "score-elem.hh"
13 /** don't copy anything: an element can only be in one
14 Axis_group_element at one time. */
15 Axis_group_administration::Axis_group_administration (Axis_group_administration const&)
20 Axis_group_administration::contains_b (Score_elem const *e) const
22 return elem_l_arr_.find_l (e);
26 Axis_group_administration::extent (Axis axis) const
29 for (int i=0; i < elem_l_arr_.size(); i++)
30 r.unite (elem_l_arr_[i]->extent (axis));
35 Axis_group_administration::add_element (Score_elem*e,
36 Axis_group_element*g, Axis a1, Axis a2)
38 assert (! e->axis_group_l_a_[a1] && !e->axis_group_l_a_[a2]);
39 e->axis_group_l_a_[a1] = g;
40 e->axis_group_l_a_[a2] = g;
47 Axis_group_administration::remove_element (Score_elem*e, Axis a1, Axis a2)
49 assert (contains_b (e));
50 elem_l_arr_.unordered_substitute (e,0);
52 e->axis_group_l_a_[a1] = 0;
53 e->axis_group_l_a_[a2] = 0;
57 Axis_group_administration::remove_all (Axis a1, Axis a2)
59 for (int i=0; i < elem_l_arr_.size(); i++)
61 Score_elem*e=elem_l_arr_[i];
62 e->axis_group_l_a_[a1] = 0;
63 e->axis_group_l_a_[a2] = 0;
70 Axis_group_administration::print() const
73 for (int i=0; i < elem_l_arr_.size(); i++)
74 DOUT << elem_l_arr_[i]->name() << ' ';