lilypond-1.3.28
[lilypond.git] / lily / breathing-sign.cc
blobf6672d2059a962620c6f3301afd765e6585914c0
1 /*
2 breathing_sign.cc -- implement Breathing_sign
4 Copyright (C) 1999 Michael Krause
6 written for the GNU LilyPond music typesetter
8 TODO: --> see breathing-sign-engraver.cc
11 #include "staff-symbol-referencer.hh"
12 #include "directional-element-interface.hh"
14 #include "breathing-sign.hh"
15 #include "string.hh"
16 #include "molecule.hh"
17 #include "paper-def.hh"
18 #include "lookup.hh"
19 #include "debug.hh"
20 #include "dimensions.hh"
21 #include "direction.hh"
24 Breathing_sign::Breathing_sign ()
26 set_elt_property ("breakable", SCM_BOOL_T);
29 Molecule*
30 Breathing_sign::do_brew_molecule_p () const
32 Staff_symbol_referencer_interface si (this);
34 Real space = si.staff_space();
35 Interval i1(0, space / 6), i2(-space / 2, space / 2);
36 Box b(i1, i2);
38 Molecule *output = new Molecule (lookup_l()->filledbox(b));
40 return output;
43 void
44 Breathing_sign::do_post_processing()
46 Real space = staff_symbol_referencer (this).staff_space();
47 Direction d = directional_element (this). get ();
48 if (!d)
50 d = UP;
51 directional_element(this).set (d);
54 translate_axis(2.0 * space * d, Y_AXIS);