2 graphical-element.cc -- implement Graphical_element
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "graphical-element.hh"
10 #include "graphical-axis-group.hh"
13 Graphical_element::Graphical_element ()
15 dim_cache_[X_AXIS] = new Dimension_cache;
16 dim_cache_[Y_AXIS] = new Dimension_cache;
21 Graphical_element::Graphical_element (Graphical_element const &s)
23 dim_cache_[X_AXIS] = new Dimension_cache (*s.dim_cache_[X_AXIS]);
24 dim_cache_[Y_AXIS] = new Dimension_cache (*s.dim_cache_[Y_AXIS]);
31 Graphical_element::init ()
33 dim_cache_[X_AXIS]->elt_l_ = dim_cache_[Y_AXIS]->elt_l_ = this;
37 Graphical_element::absolute_coordinate (Axis a) const
39 return dim_cache_[a]->absolute_coordinate ();
43 Graphical_element::translate_axis (Real y, Axis a)
45 dim_cache_[a]->translate (y);
49 Graphical_element::relative_coordinate (Dimension_cache*e, Axis a) const
51 return dim_cache_[a]->relative_coordinate (e);
55 Graphical_element::common_group (Graphical_element const* s, Axis a) const
57 return dim_cache_[a]->common_group (s->dim_cache_[a]);
61 Graphical_element::translate (Offset offset)
63 translate_axis (offset[Y_AXIS], Y_AXIS);
64 translate_axis (offset[X_AXIS], X_AXIS);
69 Graphical_element::set_empty (bool b)
71 dim_cache_[X_AXIS]->set_empty (b);
72 dim_cache_[Y_AXIS]->set_empty (b);
76 Graphical_element::extent (Axis a) const
78 Dimension_cache const * d = dim_cache_[a];
88 Graphical_element::do_print () const
98 Graphical_element::invalidate_cache (Axis a)
100 dim_cache_[a]->invalidate ();
104 Graphical_element::parent_l (Axis a) const
106 Dimension_cache*d= dim_cache_[a]->parent_l_;
107 return d ? d->elt_l_ : 0;
110 Graphical_element::~Graphical_element ()
112 delete dim_cache_[X_AXIS];
113 delete dim_cache_[Y_AXIS];
117 Graphical_element::common_group (Link_array<Graphical_element> gs, Axis a) const
119 Dimension_cache * common = dim_cache_[a];
120 for (int i=0; i < gs.size (); i++)
122 common = common->common_group (gs[i]->dim_cache_[a]);
129 Graphical_element::name () const
131 return classname (this);
135 Graphical_element::print () const
138 DOUT << classname (this) << "{\n";