]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/beam.cc
patch::: 1.3.93.jcn2
[lilypond.git] / lily / beam.cc
index 10bf8d82e8f3e3878f0eeb3822a54c4b45ff9421..d00d460b8e27043aca52d5ba065c740a429179b0 100644 (file)
@@ -72,7 +72,7 @@ Beam::get_multiplicity (Score_element*me)
   [Alternatively, stems could set its own directions, according to
    their beam, during 'final-pre-processing'.]
  */
-MAKE_SCHEME_CALLBACK(Beam,before_line_breaking);
+MAKE_SCHEME_CALLBACK(Beam,before_line_breaking,1);
 SCM
 Beam::before_line_breaking (SCM smob)
 {
@@ -271,7 +271,7 @@ Beam::set_stem_shorten (Score_element*m)
   Set elt properties height and y-position if not set.
   Adjust stem lengths to reach beam.
  */
-MAKE_SCHEME_CALLBACK(Beam,after_line_breaking);
+MAKE_SCHEME_CALLBACK(Beam,after_line_breaking,1);
 SCM
 Beam::after_line_breaking (SCM smob)
 {
@@ -767,7 +767,7 @@ Beam::stem_beams (Score_element*me,Item *here, Item *next, Item *prev)
   return leftbeams;
 }
 
-MAKE_SCHEME_CALLBACK(Beam,brew_molecule);
+MAKE_SCHEME_CALLBACK(Beam,brew_molecule,1);
 SCM
 Beam::brew_molecule (SCM smob)
 {
@@ -891,18 +891,22 @@ Beam::last_visible_stem(Score_element*me)
     
     rest -> stem -> beam -> interpolate_y_position ()
 */
-Real
-Beam::rest_collision_callback (Score_element *rest, Axis a )
+MAKE_SCHEME_CALLBACK(Beam,rest_collision_callback,1);
+SCM
+Beam::rest_collision_callback (SCM element_smob, SCM axis)
 {
+  Score_element *rest = unsmob_element (element_smob);
+  Axis a = (Axis) gh_scm2int (axis);
+  
   assert (a == Y_AXIS);
 
   Score_element * st = unsmob_element (rest->get_elt_property ("stem"));
   Score_element * stem = st;
   if (!stem)
-    return 0.0;
+    return gh_double2scm (0.0);
   Score_element * beam = unsmob_element (stem->get_elt_property ("beam"));
   if (!beam || !Beam::has_interface (beam) || !Beam::visible_stem_count (beam))
-    return 0.0;
+    return gh_double2scm (0.0);
 
   // make callback for rest from this.
   Real beam_dy = 0;