[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)
{
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)
{
return leftbeams;
}
-MAKE_SCHEME_CALLBACK(Beam,brew_molecule);
+MAKE_SCHEME_CALLBACK(Beam,brew_molecule,1);
SCM
Beam::brew_molecule (SCM smob)
{
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;