/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
LilyPond is free software: you can redistribute it and/or modify
#include "beam.hh"
+#include "beam-scoring-problem.hh"
#include "beaming-pattern.hh"
#include "directional-element-interface.hh"
-#include "main.hh"
+#include "grob-array.hh"
#include "international.hh"
#include "interval-set.hh"
#include "item.hh"
#include "least-squares.hh"
#include "lookup.hh"
+#include "main.hh"
#include "misc.hh"
#include "output-def.hh"
#include "pointer-group-interface.hh"
#include "staff-symbol-referencer.hh"
#include "stem.hh"
#include "warn.hh"
-#include "grob-array.hh"
#if DEBUG_BEAM_SCORING
#include "text-interface.hh" // debug output.
if (normal_stem_count (me) <= 1)
return posns;
-
SCM s = me->get_property ("damping");
Real damping = scm_to_double (s);
Real concaveness = robust_scm2double (me->get_property ("concaveness"), 0.0);
return ly_interval2scm (pos);
}
+
+MAKE_SCHEME_CALLBACK (Beam, quanting, 2);
+SCM
+Beam::quanting (SCM smob, SCM posns)
+{
+ Grob *me = unsmob_grob (smob);
+ Drul_array<Real> ys(0, 0);
+ ys = robust_scm2drul (posns, ys);
+ Beam_scoring_problem problem (me, ys);
+
+ ys = problem.solve ();
+ return ly_interval2scm (ys);
+}
+
+
/*
Report slice containing the numbers that are both in (car BEAMING)
and (cdr BEAMING)
Grob *common_y = rest->common_refpoint (beam, Y_AXIS);
- /*
- TODO: this is dubious, because this call needs the info we're
- computing right now.
- */
- Interval rest_extent = rest->extent (common_y, Y_AXIS);
- rest_extent.translate (offset);
+ Interval rest_extent = rest->extent (rest, Y_AXIS);
+ rest_extent.translate (offset + rest->get_parent (Y_AXIS)->relative_coordinate (common_y, Y_AXIS));
Real rest_dim = rest_extent[d];
Real minimum_distance