lilypond-0.1.56
[lilypond.git] / lily / staff-sym.cc
blobb22a36592fbedacdf08d94b486c875f44d2d6e41
1 /*
2 staffsym.cc -- implement Staff_symbol
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8 #include "staff-sym.hh"
9 #include "lookup.hh"
10 #include "paper-def.hh"
11 #include "molecule.hh"
12 #include "debug.hh"
13 #include "dimen.hh"
16 Staff_symbol::Staff_symbol ()
18 no_lines_i_ = 5;
19 interline_f_ = 0 PT;
23 IMPLEMENT_IS_TYPE_B1(Staff_symbol,Spanner);
25 void
26 Staff_symbol::do_print() const
28 #ifndef NPRINT
29 Spanner::do_print();
30 DOUT << "lines: " << no_lines_i_;
31 #endif
34 Interval
35 Staff_symbol::do_height() const
37 int n = no_lines_i_ -1;
38 // return 2* inter_note_f () * Interval (-n, n);
39 return inter_note_f () * Interval (-n, n);
42 Molecule*
43 Staff_symbol::brew_molecule_p() const
45 Paper_def * p = paper();
46 Atom rule = p->lookup_l ()->rule_symbol (p->get_var ("rulethickness"),
47 width ().length ());
48 Real height = (no_lines_i_-1) * inter_note_f();
49 Molecule * m = new Molecule;
50 for (int i=0; i < no_lines_i_; i++)
52 Atom a (rule);
53 a.translate_axis (height - i * inter_note_f()*2, Y_AXIS);
54 m->add (a);
57 return m;
60 Real
61 Staff_symbol::inter_note_f() const
63 if (interline_f_)
64 return interline_f_/2;
66 return paper()->internote_f ();
69 int
70 Staff_symbol::steps_i() const
72 return no_lines_i_*2;