int
-Staff_symbol_referencer_interface::lines_i () const
+Staff_symbol_referencer_interface::line_count () const
{
Staff_symbol *st = staff_symbol_l ();
- return st ? st->no_lines_i_ : 5;
+ return st ? st->line_count () : 0;
}
Staff_symbol*
}
Real
-Staff_symbol_referencer_interface::staff_line_leading_f () const
+Staff_symbol_referencer_interface::staff_space () const
{
Staff_symbol * st = staff_symbol_l ();
if (st)
- return st->staff_line_leading_f_;
+ return st->staff_space ();
else if (elt_l_->pscore_l_ && elt_l_->paper_l ())
- elt_l_->paper_l ()->get_var ("interline");
+ return elt_l_->paper_l ()->get_var ("interline");
return 0.0;
}
Staff_symbol_referencer_interface::position_f () const
{
Real p =0.0;
- SCM pos = elt_l_->get_elt_property ("staff-position");
- if (gh_number_p (pos))
- p = gh_scm2double (pos);
-
Staff_symbol * st = staff_symbol_l ();
- if (st)
+ Score_element * c = st ? elt_l_->common_refpoint (st, Y_AXIS) : 0;
+ if (st && c)
{
- Score_element * c = elt_l_->common_refpoint (st, Y_AXIS);
Real y = elt_l_->relative_coordinate (c, Y_AXIS)
- st->relative_coordinate (c, Y_AXIS);
- p += 2.0 * y / st->staff_line_leading_f ();
+ p += 2.0 * y / st->staff_space ();
+ }
+ else
+ {
+ SCM pos = elt_l_->get_elt_property ("staff-position");
+ if (gh_number_p (pos))
+ return gh_scm2double (pos);
}
+
return p;
}
Real off =0.0;
if (gh_number_p (pos))
{
- Real space = staff_symbol_referencer_interface (sc).staff_line_leading_f ();
+ Real space = staff_symbol_referencer (sc).staff_space ();
off = gh_scm2double (pos) * space/2.0;
}
sc->set_elt_property ("staff-position", gh_double2scm (0.0));
return off;
}
-
+/*
+ Huh? -- jcn
+ */
void
Staff_symbol_referencer_interface::set_position (Real p)
{
if (st && elt_l_->common_refpoint(st, Y_AXIS))
{
Real oldpos = position_f ();
+ // Aargh!
elt_l_->set_elt_property ("staff-position", gh_double2scm (p - oldpos));
}
else
}
Staff_symbol_referencer_interface
-staff_symbol_referencer_interface (Score_element const*e)
+staff_symbol_referencer (Score_element const*e)
{
return e; // gee, I'm so smart!
}
+
+int
+compare_position (Score_element *const &a, Score_element * const &b)
+{
+ Staff_symbol_referencer_interface s1(a);
+ Staff_symbol_referencer_interface s2(b);
+
+ return sign(s1.position_f () - s2.position_f ());
+}