Graphical_axis_group at one time. */
Graphical_axis_group::Graphical_axis_group(Graphical_axis_group const&s)
{
-#if 0
- /*
- gcc-2.95: huh? why can't i assign a const value to a var?
- graphical-axis-group.cc:20: incompatible types in assignment of `const Axis[2]' to `Axis[2]'
- */
- axes_ = s.axes_;
-#else
axes_[0] = s.axes_[0];
axes_[1] = s.axes_[1];
-#endif
ordered_b_ = s.ordered_b_;
}
Graphical_axis_group::extent (Axis axis) const
{
Interval r;
- for (int i=0; i < elem_l_arr_.size(); i++)
- r.unite (elem_l_arr_[i]->extent (axis));
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ {
+ r.unite (elem_l_arr_[i]->extent (axis)
+ + elem_l_arr_[i]->relative_coordinate (this, axis)
+ );
+ }
return r;
}
void
-Graphical_axis_group::add_element (Graphical_element*e)
+Graphical_axis_group::add_element (Graphical_element*e, Axis a1 , Axis a2)
{
used_b_ =true;
e->used_b_ = true;
+
+ Axis as[2] = {
+ (a1 == NO_AXES) ? axes_[0] : a1,
+ (a2 == NO_AXES) ? axes_[1] : a2,
+ };
+
+
+
for (int i = 0; i < 2; i++)
{
- Axis a = axes_[i];
- assert (a>=0);
- Dimension_cache * &d = e->dim_cache_[a]->parent_l_;
- assert (!d || d == dim_cache_[a]);
- d = dim_cache_[a];
- d->dependencies_l_arr_.push (dim_cache_[a]);
- }
+ if (e->parent_l (as[i]))
+ continue;
+
+ e->set_parent (this, as[i]);
+ // e->dim_cache_[as[i]]->dependencies_l_arr_.push (dim_cache_[as[i]]);
+ }
+ assert (e->parent_l(Y_AXIS) == this || e->parent_l (X_AXIS) == this);
elem_l_arr_.push (e);
}
-
+/**
+ ugr. duplication of functionality with remove_all ()
+ */
void
Graphical_axis_group::remove_element (Graphical_element*e)
{
elem_l_arr_.substitute (e,0);
else
elem_l_arr_.unordered_substitute (e,0);
-
+
+ do_remove (e);
+}
+
+void
+Graphical_axis_group::do_remove (Graphical_element *e)
+{
for (int i=0; i< 2; i++)
{
Axis a=axes_[i];
- Dimension_cache * d = e->dim_cache_[a];
- d->parent_l_ = 0;
- d->dependencies_l_arr_.unordered_substitute (dim_cache_[a], 0);
+ if (e->parent_l (a) != this)
+ continue;
+ e->set_parent (0, a);
+ // e->dim_cache_[a]->dependencies_l_arr_.clear ();
}
}
Graphical_axis_group::remove_all ()
{
for (int i=0; i < elem_l_arr_.size(); i++)
- {
- Graphical_element*e=elem_l_arr_[i];
- for (int i=0; i< 2; i++)
- {
- Axis a=axes_[i];
- Dimension_cache * d = e->dim_cache_[a];
- d->parent_l_ = 0;
- d->dependencies_l_arr_.clear ();
- }
-
- }
+ do_remove (elem_l_arr_[i]);
+
elem_l_arr_.clear ();
}
{
#ifndef NPRINT
for (int i=0; i < elem_l_arr_.size(); i++)
- DOUT << classname(elem_l_arr_[i]) << " ";
+ DEBUG_OUT << classname(elem_l_arr_[i]) << " ";
#endif
}