lilypond-1.3.28
[lilypond.git] / lily / staff-symbol.cc
blob10d7927201b4aaffa53b71754734aaf6487e9cb6
1 /*
2 staffsym.cc -- implement Staff_symbol
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8 #include "staff-symbol.hh"
9 #include "lookup.hh"
10 #include "dimensions.hh"
11 #include "paper-def.hh"
12 #include "molecule.hh"
13 #include "debug.hh"
14 #include "item.hh"
18 Molecule*
19 Staff_symbol::do_brew_molecule_p() const
21 Score_element * common
22 = spanned_drul_[LEFT]->common_refpoint (spanned_drul_[RIGHT], X_AXIS);
24 Real width =
25 // right_shift - left_shift
26 + spanned_drul_[RIGHT]->relative_coordinate (common , X_AXIS)
27 - spanned_drul_[LEFT]->relative_coordinate (common, X_AXIS)
30 Real t = paper_l ()->get_var ("stafflinethickness");
31 Molecule rule = lookup_l ()->filledbox (Box (Interval (0,width),
32 Interval (-t/2, t/2)));
34 int l = line_count ();
36 Real height = (l-1) * staff_space () /2;
37 Molecule * m = new Molecule;
38 for (int i=0; i < l; i++)
40 Molecule a (rule);
41 a.translate_axis (height - i * staff_space (), Y_AXIS);
42 m->add_molecule (a);
45 return m;
48 int
49 Staff_symbol::steps_i() const
51 return line_count () * 2;
54 int
55 Staff_symbol::line_count () const
57 return gh_scm2int (get_elt_property ("line-count"));
60 Real
61 Staff_symbol::staff_space ()const
63 return gh_scm2double (get_elt_property ("staff-space"));