/*
- elem-group.cc -- implement Element_group
+ elem-group.cc -- implement Horizontal_vertical_group_element
source file of the GNU LilyPond music typesetter
#include "item.hh"
#include "debug.hh"
-Interval
-Element_group::do_height()const
+void
+Axis_group_element::do_unlink()
{
- Interval r;
- for (int i=0; i < elem_l_arr_.size(); i++)
- r.unite(elem_l_arr_[i]->height());
- return r;
+ remove_all();
}
-Interval
-Element_group::do_width()const
+
+bool
+Axis_group_element::contains_b (Score_elem const*e)const
+{
+ return axis_admin_.contains_b (e);
+}
+
+Link_array<Score_elem>
+Axis_group_element::get_extra_dependencies()const
{
- Interval r;
- for (int i=0; i < elem_l_arr_.size(); i++)
- if (elem_l_arr_[i]->item()) // makes no at preprocessing for spanners.
- r.unite(elem_l_arr_[i]->width());
- return r;
+ return axis_admin_.elem_l_arr_;
}
void
-Element_group::add_element(Score_elem*i_l)
+Axis_group_element::do_print()const
{
- i_l->group_element_i_ ++;
-
- assert(! elem_l_arr_.find_l(i_l));
- elem_l_arr_.push(i_l);
- add_dependency(i_l);
+ axis_admin_.print();
}
+// ****************
+
+
void
-Element_group::translate(Offset o)
+Vertical_group_element::add_element (Score_elem*e)
{
- for (int i=0; i < elem_l_arr_.size(); i++)
- elem_l_arr_[i]->translate(o);
+ axis_admin_.add_element (e, this, Y_AXIS, Y_AXIS);
+}
+
+void
+Vertical_group_element::remove_element (Score_elem*e)
+{
+ axis_admin_.remove_element (e, Y_AXIS, Y_AXIS);
}
-IMPLEMENT_STATIC_NAME(Element_group);
+Interval
+Vertical_group_element::do_height() const
+{
+ return axis_admin_.extent (Y_AXIS);
+}
void
-Element_group::do_print() const
+Vertical_group_element::remove_all()
{
-#ifndef NPRINT
- for (int i=0; i < elem_l_arr_.size(); i++)
- mtor << elem_l_arr_[i]->name() << ' ';
-#endif
+ axis_admin_.remove_all (Y_AXIS,Y_AXIS);
}
+// ****************
void
-Element_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
+Horizontal_group_element::remove_all()
{
- int i;
-
- while ((i=elem_l_arr_.find_i(old))>=0) {
-
- old->group_element_i_--;
- if (new_l){
- new_l->group_element_i_ ++;
- elem_l_arr_[i] = new_l;
- }else {
- elem_l_arr_.del(i);
- }
- }
+ axis_admin_.remove_all (X_AXIS,X_AXIS);
+}
+void
+Horizontal_group_element::add_element (Score_elem*e)
+{
+ axis_admin_.add_element (e,this, X_AXIS,X_AXIS);
}
-String
-Element_group::TeX_string()const
+void
+Horizontal_group_element::remove_element (Score_elem*e)
+{
+ axis_admin_.remove_element (e,X_AXIS,X_AXIS);
+}
+
+
+Interval
+Horizontal_group_element::do_width()const
+{
+ return axis_admin_.extent (X_AXIS);
+}
+
+
+// ****************
+
+void
+Horizontal_vertical_group_element::remove_all()
{
- return "";
+ axis_admin_.remove_all (X_AXIS,Y_AXIS);
+}
+void
+Horizontal_vertical_group_element::add_element (Score_elem *e)
+{
+ axis_admin_.add_element (e, this, X_AXIS, Y_AXIS);
}
-Element_group::Element_group(Element_group const&s)
- :elem_l_arr_(s.elem_l_arr_)
+void
+Horizontal_vertical_group_element::remove_element (Score_elem*e)
{
- for (int i=0; i < elem_l_arr_.size(); i++)
- elem_l_arr_[i]->group_element_i_ ++;
+ axis_admin_.remove_element (e, X_AXIS, Y_AXIS);
}
-Element_group::Element_group()
-{}
+
+
+IMPLEMENT_IS_TYPE_B1(Axis_group_element, Score_elem);
+IMPLEMENT_IS_TYPE_B1(Horizontal_group_element, Axis_group_element);
+IMPLEMENT_IS_TYPE_B1(Vertical_group_element, Axis_group_element);
+IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_element, Horizontal_group_element, Vertical_group_element);