--- /dev/null
+/*
+ axis-group.cc -- implement Axis_group_administration
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+#include "interval.hh"
+#include "axis-group-administration.hh"
+#include "graphical-element.hh"
+#include "debug.hh"
+
+/** don't copy anything: an element can only be in one
+ Axis_group_element at one time. */
+Axis_group_administration::Axis_group_administration (Axis_group_administration const&)
+{
+}
+
+bool
+Axis_group_administration::contains_b (Graphical_element const *e) const
+{
+ return elem_l_arr_.find_l (e);
+}
+
+Interval
+Axis_group_administration::extent (Axis axis) const
+{
+ Interval r;
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ r.unite (elem_l_arr_[i]->extent (axis));
+ return r;
+}
+
+void
+Axis_group_administration::add_element (Graphical_element*e,
+ Axis_group_element*g, Axis a1, Axis a2)
+{
+ Axis_group_element *& g1 = e->axis_group_l_a_[a1];
+ Axis_group_element *& g2 = e->axis_group_l_a_[a2];
+
+ assert (!g1 || g1 == g);
+ assert (!g2 || g2 == g);
+ g1 = g;
+ g2 = g;
+ elem_l_arr_.push (e);
+}
+
+
+
+void
+Axis_group_administration::remove_element (Graphical_element*e, Axis a1, Axis a2)
+{
+ assert (contains_b (e));
+ elem_l_arr_.unordered_substitute (e,0);
+
+ e->axis_group_l_a_[a1] = 0;
+ e->axis_group_l_a_[a2] = 0;
+}
+
+void
+Axis_group_administration::remove_all (Axis a1, Axis a2)
+{
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ {
+ Graphical_element*e=elem_l_arr_[i];
+ e->axis_group_l_a_[a1] = 0;
+ e->axis_group_l_a_[a2] = 0;
+ }
+ elem_l_arr_.clear ();
+}
+
+
+void
+Axis_group_administration::print() const
+{
+#ifndef NPRINT
+ for (int i=0; i < elem_l_arr_.size(); i++)
+ DOUT << elem_l_arr_[i]->name () << ' ';
+#endif
+}
#include "item.hh"
#include "debug.hh"
-void
-Axis_group_element::do_unlink()
-{
- remove_all();
-}
-
-void
-Axis_group_element::do_junk_links()
-{
- axis_admin_.elem_l_arr_.set_size (0);
-}
-
-
-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
-{
- return axis_admin_.elem_l_arr_;
-}
-
-void
-Axis_group_element::do_print() const
-{
- axis_admin_.print();
-}
-
-
-Axis_group_element::Axis_group_element()
-{
- transparent_b_ = true;
-}
-
-// ****************
-
void
-Vertical_group_element::add_element (Score_elem*e)
+Vertical_group_element::add_element (Graphical_element*e)
{
axis_admin_.add_element (e, this, Y_AXIS, Y_AXIS);
}
void
-Vertical_group_element::remove_element (Score_elem*e)
+Vertical_group_element::remove_element (Graphical_element*e)
{
axis_admin_.remove_element (e, Y_AXIS, Y_AXIS);
}
}
void
-Horizontal_group_element::add_element (Score_elem*e)
+Horizontal_group_element::add_element (Graphical_element*e)
{
axis_admin_.add_element (e,this, X_AXIS,X_AXIS);
}
void
-Horizontal_group_element::remove_element (Score_elem*e)
+Horizontal_group_element::remove_element (Graphical_element*e)
{
axis_admin_.remove_element (e,X_AXIS,X_AXIS);
}
axis_admin_.remove_all (X_AXIS,Y_AXIS);
}
void
-Horizontal_vertical_group_element::add_element (Score_elem *e)
+Horizontal_vertical_group_element::add_element (Graphical_element *e)
{
axis_admin_.add_element (e, this, X_AXIS, Y_AXIS);
}
void
-Horizontal_vertical_group_element::remove_element (Score_elem*e)
+Horizontal_vertical_group_element::remove_element (Graphical_element*e)
{
axis_admin_.remove_element (e, X_AXIS, Y_AXIS);
}
--- /dev/null
+/*
+ offset.cc -- implement Offset
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+#include "string.hh"
+#include "offset.hh"
+
+String
+Offset::str () const
+{
+ String s;
+ s = String("(") + coordinate_a_[X_AXIS] + ", " + coordinate_a_[Y_AXIS] + ")";
+ return s;
+}