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
12 #include "staff-symbol-referencer.hh"
13 #include "directional-element-interface.hh"
14 #include "breathing-sign.hh"
16 #include "molecule.hh"
17 #include "paper-def.hh"
20 #include "dimensions.hh"
21 #include "direction.hh"
25 MAKE_SCHEME_CALLBACK(Breathing_sign,brew_molecule);
28 Breathing_sign::brew_molecule (SCM smob)
30 Score_element * me = unsmob_element (smob);
31 Real space = Staff_symbol_referencer::staff_space (me);
34 Interval i1(0, space / 6), i2(-space / 2, space / 2);
37 return me->lookup_l()->filledbox(b).create_scheme ();
41 Breathing_sign::offset_callback (Score_element * b, Axis a)
43 Score_element * me = (Score_element*)b;
45 Direction d = Directional_element_interface::get (b);
49 Directional_element_interface::set (me, d);
52 Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
53 int sz = Staff_symbol_referencer::line_count (me)-1;
54 return inter_f * sz * d;
58 Breathing_sign::set_interface (Score_element *b)
60 Staff_symbol_referencer::set_interface (b);
61 b->add_offset_callback (Breathing_sign::offset_callback,Y_AXIS);