]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/breathing-sign.cc
release commit
[lilypond.git] / lily / breathing-sign.cc
index cc743c5a28be79faf0d74f243bc12c716c18c650..730a3f496485574b2a8a33e826708be9de3a506d 100644 (file)
 #include "molecule.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
-#include "debug.hh"
+
 #include "dimensions.hh"
 #include "direction.hh"
 
-
-Breathing_sign::Breathing_sign (SCM  s)
-  : Item (s)
-{
-}
-
-
-
-MAKE_SCHEME_SCORE_ELEMENT_CALLBACK(Breathing_sign,brew_molecule);
-
+MAKE_SCHEME_CALLBACK (Breathing_sign,brew_molecule,1);
 SCM 
 Breathing_sign::brew_molecule (SCM smob)
 {
-  Score_element * sc = unsmob_element (smob);
-  Staff_symbol_referencer_interface si (sc);
-  
-  Real space = si.staff_space();
+  Grob * me = unsmob_grob (smob);
+  Real space = Staff_symbol_referencer::staff_space (me);
 
   // todo: cfg'able.
-  Interval i1(0, space / 6), i2(-space / 2, space / 2);
-  Box b(i1, i2);
+  Interval i1 (0, space / 6), i2 (-space / 2, space / 2);
+  Box b (i1, i2);
 
-  return sc->lookup_l()->filledbox(b).create_scheme ();
+  return Lookup::filledbox (b).smobbed_copy ();
 }
 
-GLUE_SCORE_ELEMENT(Breathing_sign,after_line_breaking);
+MAKE_SCHEME_CALLBACK (Breathing_sign,offset_callback,2);
 SCM
-Breathing_sign::member_after_line_breaking ()
+Breathing_sign::offset_callback (SCM element_smob, SCM)
 {
-  Real space = Staff_symbol_referencer_interface (this).staff_space();
-  Direction d = Directional_element_interface (this). get ();
+  Grob *me = unsmob_grob (element_smob);
+  
+  Direction d = Directional_element_interface::get (me);
   if (!d)
     {
       d = UP;
-      Directional_element_interface (this).set (d);
+      Directional_element_interface::set (me, d);
     }
 
-  translate_axis(2.0 * space * d, Y_AXIS);
-
-  return SCM_UNDEFINED;
+  Real inter_f = Staff_symbol_referencer::staff_space (me)/2;
+  int sz = Staff_symbol_referencer::line_count (me)-1;
+  return gh_double2scm (inter_f * sz * d);
 }
 
+
+ADD_INTERFACE(Breathing_sign, "breathing-sign-interface",
+             "A breathing sign.",
+             "direction");