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-administration.hh"
10 #include "axis-group-element.hh"
11 #include "graphical-element.hh"
14 /** don't copy anything: an element can only be in one
15 Axis_group_element at one time. */
16 Axis_group_administration::Axis_group_administration (Axis_group_administration
const&)
21 Axis_group_administration::contains_b (Graphical_element
const *e
) const
23 return elem_l_arr_
.find_l (e
);
27 Axis_group_administration::extent (Axis axis
) const
30 for (int i
=0; i
< elem_l_arr_
.size(); i
++)
31 r
.unite (elem_l_arr_
[i
]->extent (axis
));
36 Axis_group_administration::add_element (Graphical_element
*e
,
37 Axis_group_element
*g
, Axis a1
, Axis a2
)
39 // don't add self to self.
41 Axis_group_element
*& g1
= e
->axis_group_l_a_
[a1
];
42 Axis_group_element
*& g2
= e
->axis_group_l_a_
[a2
];
44 assert (!g1
|| g1
== g
);
45 assert (!g2
|| g2
== g
);
54 Axis_group_administration::remove_element (Graphical_element
*e
, Axis a1
, Axis a2
)
56 assert (contains_b (e
));
57 elem_l_arr_
.unordered_substitute (e
,0);
59 e
->axis_group_l_a_
[a1
] = 0;
60 e
->axis_group_l_a_
[a2
] = 0;
64 Axis_group_administration::remove_all (Axis a1
, Axis a2
)
66 for (int i
=0; i
< elem_l_arr_
.size(); i
++)
68 Graphical_element
*e
=elem_l_arr_
[i
];
69 e
->axis_group_l_a_
[a1
] = 0;
70 e
->axis_group_l_a_
[a2
] = 0;
77 Axis_group_administration::print() const
80 for (int i
=0; i
< elem_l_arr_
.size(); i
++)
81 DOUT
<< elem_l_arr_
[i
]->name () << ' ';