#include "interval.hh"
#include "lily-proto.hh"
+#include "lily-guile.hh"
#include "std-vector.hh"
#include "stem-info.hh"
#include "main.hh" // DEBUG_BEAM_SCORING
-// Unused for now.
enum Scorers {
// Should be ordered by increasing expensiveness.
ORIGINAL_DISTANCE,
{
Interval y;
Real demerits;
-
#if DEBUG_BEAM_SCORING
string score_card_;
#endif
// Comparator for a queue of Beam_configuration*.
class Beam_configuration_less
{
+public:
bool operator() (Beam_configuration* const& l, Beam_configuration* const& r)
{
- return l->demerits < r->demerits;
+ // Invert
+ return l->demerits > r->demerits;
}
};
Real staff_radius;
Drul_array<int> edge_beam_counts;
Drul_array<Direction> edge_dirs;
+
+ // Half-open intervals, representing allowed positions for the beam,
+ // starting from close to the notehead to the direction of the stem
+ // end. This is used for quickly weeding out invalid
+ // Beam_configurations.
+ Drul_array<Interval> quant_range;
Real beam_translation;
void init_stems ();
+ void one_scorer (Beam_configuration* config) const;
+ Beam_configuration *force_score (SCM inspect_quants,
+ const vector<Beam_configuration*> &configs) const;
+
// Scoring functions:
void score_forbidden_quants (Beam_configuration *config) const;
void score_slopes_dy (Beam_configuration *config) const;