2 axis-group.cc -- implement Graphical_axis_group
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "graphical-axis-group.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 Graphical_axis_group at one time. */
16 Graphical_axis_group::Graphical_axis_group (Graphical_axis_group const&s)
18 axes_[0] = s.axes_[0];
19 axes_[1] = s.axes_[1];
23 Graphical_axis_group::contains_b (Graphical_element const *e) const
25 return elem_l_arr_.find_l (e);
29 Graphical_axis_group::extent (Axis axis) const
32 for (int i=0; i < elem_l_arr_.size(); i++)
33 r.unite (elem_l_arr_[i]->extent (axis));
38 Graphical_axis_group::add_element (Graphical_element*e)
42 for (int i = 0; i < 2; i++)
45 Dimension_cache * &d = e->dim_cache_[a].parent_l_;
46 assert (!d || d == &dim_cache_[a]);
48 d->dependencies_l_arr_.push (&dim_cache_[a]);
57 Graphical_axis_group::remove_element (Graphical_element*e)
59 assert (contains_b (e));
60 elem_l_arr_.unordered_substitute (e,0);
62 for (int i=0; i< 2; i++)
65 Dimension_cache * d = &e->dim_cache_[a];
67 d->dependencies_l_arr_.unordered_substitute (&dim_cache_[a], 0);
72 Graphical_axis_group::remove_all ()
74 for (int i=0; i < elem_l_arr_.size(); i++)
76 Graphical_element*e=elem_l_arr_[i];
77 for (int i=0; i< 2; i++)
80 Dimension_cache * d = &e->dim_cache_[a];
82 d->dependencies_l_arr_.clear ();
91 Graphical_axis_group::do_print() const
94 for (int i=0; i < elem_l_arr_.size(); i++)
95 DOUT << classname(elem_l_arr_[i]) << " ";
99 Graphical_axis_group::Graphical_axis_group (Axis a1, Axis a2)