/*
- elem-group.cc -- implement Horizontal_vertical_group
+ elem-group.cc -- implement Horizontal_vertical_group_element
source file of the GNU LilyPond music typesetter
#include "item.hh"
#include "debug.hh"
-bool
-Elbement_group::contains_b(Score_elem const*e)const
+void
+Axis_group_element::do_unlink()
{
- return elem_l_arr_.find_l(e);
+ remove_all();
}
-Interval
-Vertical_group::do_height()const
-{
- Interval r;
- for (int i=0; i < elem_l_arr_.size(); i++)
- r.unite(elem_l_arr_[i]->height());
- return r;
-}
-Interval
-Horizontal_group::do_width()const
+bool
+Axis_group_element::contains_b (Score_elem const*e)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_.contains_b (e);
}
-IMPLEMENT_STATIC_NAME(Horizontal_group);
-IMPLEMENT_IS_TYPE_B1(Horizontal_group, Elbement_group);
-IMPLEMENT_IS_TYPE_B1(Vertical_group, Elbement_group);
-IMPLEMENT_STATIC_NAME(Vertical_group);
-
-void
-Elbement_group::add_element(Score_elem*i_l)
+Link_array<Score_elem>
+Axis_group_element::get_extra_dependencies()const
{
- assert(i_l!= this);
- assert(! contains_b(i_l));
-
- elem_l_arr_.push(i_l);
- add_dependency(i_l);
+ return axis_admin_.elem_l_arr_;
}
void
-Horizontal_group::add_element(Score_elem*elt)
+Axis_group_element::do_print()const
{
- elt->x_group_element_i_ ++;
- Elbement_group::add_element(elt);
+ axis_admin_.print();
}
-void
-Vertical_group::add_element(Score_elem*e)
-{
- e->y_group_element_i_++;
- Elbement_group::add_element(e);
-}
+// ****************
void
-Horizontal_group::translate_x(Real x)
+Vertical_group_element::add_element (Score_elem*e)
{
- for (int i=0; i < elem_l_arr_.size(); i++)
- elem_l_arr_[i]->translate_x(x);
+ axis_admin_.add_element (e, this, Y_AXIS, Y_AXIS);
}
void
-Vertical_group::translate_y(Real y)
+Vertical_group_element::remove_element (Score_elem*e)
{
- for (int i=0; i < elem_l_arr_.size(); i++)
- elem_l_arr_[i]->translate_y(y);
+ axis_admin_.remove_element (e, Y_AXIS, Y_AXIS);
}
-IMPLEMENT_STATIC_NAME(Elbement_group);
-IMPLEMENT_IS_TYPE_B1(Elbement_group, Score_elem);
-void
-Elbement_group::do_print() const
+Interval
+Vertical_group_element::do_height() const
{
-#ifndef NPRINT
- for (int i=0; i < elem_l_arr_.size(); i++)
- mtor << elem_l_arr_[i]->name() << ' ';
-#endif
+ return axis_admin_.extent (Y_AXIS);
}
-
void
-Horizontal_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
+Vertical_group_element::remove_all()
{
- int i;
-
- while ((i=elem_l_arr_.find_i(old))>=0) {
- old->x_group_element_i_--;
-
- if (new_l){
- new_l->x_group_element_i_ ++;
- elem_l_arr_[i] = new_l;
- }else {
- elem_l_arr_.del(i);
- }
- }
+ axis_admin_.remove_all (Y_AXIS,Y_AXIS);
}
+// ****************
void
-Vertical_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->y_group_element_i_--;
-
- if (new_l){
- new_l->y_group_element_i_ ++;
- elem_l_arr_[i] = new_l;
- }else {
- elem_l_arr_.del(i);
- }
- }
+ axis_admin_.remove_all (X_AXIS,X_AXIS);
}
-Vertical_group::Vertical_group(Vertical_group
- const &s)
- : Elbement_group(s)
+void
+Horizontal_group_element::add_element (Score_elem*e)
{
- for (int i=0; i < elem_l_arr_.size(); i++)
- elem_l_arr_[i]->y_group_element_i_ ++;
+ axis_admin_.add_element (e,this, X_AXIS,X_AXIS);
}
-Horizontal_group::Horizontal_group(Horizontal_group
- const &s)
- : Elbement_group(s)
+void
+Horizontal_group_element::remove_element (Score_elem*e)
{
- for (int i=0; i < elem_l_arr_.size(); i++)
- elem_l_arr_[i]->x_group_element_i_ ++;
+ axis_admin_.remove_element (e,X_AXIS,X_AXIS);
}
-Elbement_group::Elbement_group()
+
+Interval
+Horizontal_group_element::do_width()const
{
- transparent_b_ = true;
+ return axis_admin_.extent (X_AXIS);
}
-IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group, Horizontal_group, Vertical_group);
-IMPLEMENT_STATIC_NAME(Horizontal_vertical_group);
-Horizontal_vertical_group::Horizontal_vertical_group()
-{
-}
+// ****************
void
-Horizontal_vertical_group::do_substitute_dependency(Score_elem*o,Score_elem*n)
+Horizontal_vertical_group_element::remove_all()
{
- Vertical_group::do_substitute_dependency(o,n);
- Horizontal_group::do_substitute_dependency(o,n);
+ axis_admin_.remove_all (X_AXIS,Y_AXIS);
}
-
void
-Horizontal_vertical_group::add_element(Score_elem*e)
+Horizontal_vertical_group_element::add_element (Score_elem *e)
{
- Vertical_group::add_element(e);
- Horizontal_group::add_element(e);
+ axis_admin_.add_element (e, this, X_AXIS, Y_AXIS);
}
void
-Horizontal_vertical_group::do_print()const
+Horizontal_vertical_group_element::remove_element (Score_elem*e)
{
- Vertical_group::do_print();
+ axis_admin_.remove_element (e, X_AXIS, Y_AXIS);
}
-void
-Vertical_group::do_print()const
-{
- Elbement_group::do_print();
-}
-void
-Horizontal_group::do_print() const
-{
- Elbement_group::do_print();
-}
+
+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);