/*
- elem-group.cc -- implement Element_group
+ elem-group.cc -- implement Horizontal_vertical_group
source file of the GNU LilyPond music typesetter
#include "item.hh"
#include "debug.hh"
+bool
+Elbement_group::contains_b(Score_elem const*e)const
+{
+ return elem_l_arr_.find_l(e);
+}
+
Interval
-Element_group::do_height()const
+Vertical_group::do_height()const
{
Interval r;
for (int i=0; i < elem_l_arr_.size(); i++)
}
Interval
-Element_group::do_width()const
+Horizontal_group::do_width()const
{
Interval r;
for (int i=0; i < elem_l_arr_.size(); i++)
return r;
}
+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
-Element_group::add_element(Score_elem*i_l)
+Elbement_group::add_element(Score_elem*i_l)
{
- i_l->group_element_i_ ++;
-
- assert(! elem_l_arr_.find_l(i_l));
+ assert(i_l!= this);
+ assert(! contains_b(i_l));
+
elem_l_arr_.push(i_l);
add_dependency(i_l);
}
void
-Element_group::translate(Offset o)
+Horizontal_group::add_element(Score_elem*elt)
+{
+ elt->x_group_element_i_ ++;
+ Elbement_group::add_element(elt);
+}
+
+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)
+{
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ elem_l_arr_[i]->translate_x(x);
+}
+
+void
+Vertical_group::translate_y(Real y)
{
for (int i=0; i < elem_l_arr_.size(); i++)
- elem_l_arr_[i]->translate(o);
+ elem_l_arr_[i]->translate_y(y);
}
-IMPLEMENT_STATIC_NAME(Element_group);
+IMPLEMENT_STATIC_NAME(Elbement_group);
+IMPLEMENT_IS_TYPE_B1(Elbement_group, Score_elem);
void
-Element_group::do_print() const
+Elbement_group::do_print() const
{
#ifndef NPRINT
for (int i=0; i < elem_l_arr_.size(); i++)
}
void
-Element_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
+Horizontal_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
{
int i;
while ((i=elem_l_arr_.find_i(old))>=0) {
+ old->x_group_element_i_--;
- old->group_element_i_--;
if (new_l){
- new_l->group_element_i_ ++;
+ new_l->x_group_element_i_ ++;
elem_l_arr_[i] = new_l;
}else {
elem_l_arr_.del(i);
}
}
+}
+
+void
+Vertical_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
+{
+ 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);
+ }
+ }
}
-String
-Element_group::TeX_string()const
+Vertical_group::Vertical_group(Vertical_group
+ const &s)
+ : Elbement_group(s)
{
- return "";
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ elem_l_arr_[i]->y_group_element_i_ ++;
}
-Element_group::Element_group(Element_group const&s)
- :elem_l_arr_(s.elem_l_arr_)
+Horizontal_group::Horizontal_group(Horizontal_group
+ const &s)
+ : Elbement_group(s)
{
for (int i=0; i < elem_l_arr_.size(); i++)
- elem_l_arr_[i]->group_element_i_ ++;
+ elem_l_arr_[i]->x_group_element_i_ ++;
+}
+
+Elbement_group::Elbement_group()
+{
+ transparent_b_ = true;
+}
+
+IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group, Horizontal_group, Vertical_group);
+IMPLEMENT_STATIC_NAME(Horizontal_vertical_group);
+
+void
+Horizontal_vertical_group::do_substitute_dependency(Score_elem*o,Score_elem*n)
+{
+ Vertical_group::do_substitute_dependency(o,n);
+ Horizontal_group::do_substitute_dependency(o,n);
+}
+
+void
+Horizontal_vertical_group::add_element(Score_elem*e)
+{
+ Vertical_group::add_element(e);
+ Horizontal_group::add_element(e);
+}
+
+void
+Horizontal_vertical_group::do_print()const
+{
+ Vertical_group::do_print();
}
-Element_group::Element_group()
-{}
+void
+Vertical_group::do_print()const
+{
+ Elbement_group::do_print();
+}
+
+void
+Horizontal_group::do_print() const
+{
+ Elbement_group::do_print();
+}