2 staff-symbol-referencer.cc -- implement Staff_symbol_referencer
4 source file of the GNU LilyPond music typesetter
6 (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
11 #include "staff-symbol-referencer.hh"
12 #include "staff-symbol.hh"
13 #include "paper-def.hh"
14 #include "dimension-cache.hh"
16 Staff_symbol_referencer::Staff_symbol_referencer ()
23 Staff_symbol_referencer::do_substitute_element_pointer (Score_element *o,
26 if (staff_symbol_l_ == o)
28 staff_symbol_l_ = dynamic_cast<Staff_symbol*> (n);
33 Staff_symbol_referencer::lines_i () const
35 return (staff_symbol_l_) ? staff_symbol_l_->no_lines_i_ : 5;
39 Staff_symbol_referencer::set_staff_symbol (Staff_symbol*s)
46 Staff_symbol_referencer::staff_symbol_l () const
48 return staff_symbol_l_;
52 Staff_symbol_referencer::staff_line_leading_f () const
55 return staff_symbol_l_->staff_line_leading_f_;
56 else if (pscore_l_ && paper_l ())
57 paper_l ()->get_var ("interline");
63 Staff_symbol_referencer::position_f () const
68 Graphical_element * c = common_refpoint (staff_symbol_l_, Y_AXIS);
69 Real y = relative_coordinate (c, Y_AXIS) - staff_symbol_l_->relative_coordinate (c, Y_AXIS);
71 p += 2.0 * y / staff_line_leading_f ();
79 should use offset callback!
82 Staff_symbol_referencer::do_pre_processing ()
84 translate_axis (position_f_ * staff_line_leading_f () /2.0, Y_AXIS);
90 Staff_symbol_referencer::set_position (Real p)
92 Real halfspace = staff_line_leading_f ()* 0.5;
94 translate_axis (- halfspace * position_f (), Y_AXIS);
96 translate_axis (halfspace * p, Y_AXIS);