]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/beam-scoring-problem.hh
Run grand-replace (issue 3765)
[lilypond.git] / lily / include / beam-scoring-problem.hh
index 1603a6244470e1956905a860c87a88de9d2b1588..fc6e2c6942ea28cc3fa81ca875dc4d605db1f433 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -111,28 +111,26 @@ struct Beam_collision
   Parameters for a single beam.  Precomputed to save time in
   scoring individual configurations.
 
-  TODO - use trailing _ on data members.
-
   */
 class Beam_scoring_problem
 {
 public:
-  Beam_scoring_problem (Grob *me, Drul_array<Real> ys);
+  Beam_scoring_problem (Grob *me, Drul_array<Real> ys, bool);
   Drul_array<Real> solve () const;
 
 private:
-  Grob *beam_;
+  Spanner *beam_;
 
   Interval unquanted_y_;
+  bool align_broken_intos_;
+  bool do_initial_slope_calculations_;
 
   Real staff_space_;
   Real beam_thickness_;
   Real line_thickness_;
   Real musical_dy_;
-
-  Interval x_span_;
-
-  vector<Stem_info> stem_infos_;
+  int normal_stem_count_;
+  Real x_span_;
 
   /*
     Do stem computations.  These depend on YL and YR linearly, so we can
@@ -142,10 +140,15 @@ private:
     affine linear in YL and YR. If YL == YR == 0, then we might have
     stem_y != 0.0, when we're cross staff.
   */
+  vector<Stem_info> stem_infos_;
+  vector<Real> chord_start_y_;
+  vector<Interval> head_positions_;
+  vector<Slice> beam_multiplicity_;
+  vector<bool> is_normal_;
   vector<Real> base_lengths_;
   vector<Real> stem_xpositions_;
+  vector<Real> stem_ypositions_;
 
-  Grob *common_[2];
   bool is_xstaff_;
   bool is_knee_;
 
@@ -164,9 +167,16 @@ private:
   vector<Beam_collision> collisions_;
   vector<Beam_segment> segments_;
 
-  void init_stems ();
-  void init_collisions (vector<Grob *> grobs);
+  vsize first_normal_index ();
+  vsize last_normal_index ();
+
+  void init_instance_variables (Grob *me, Drul_array<Real> ys, bool align_broken_intos);
   void add_collision (Real x, Interval y, Real factor);
+  void no_visible_stem_positions ();
+  void least_squares_positions ();
+  Real calc_concaveness ();
+  void slope_damping ();
+  void shift_region_to_valid ();
 
   void one_scorer (Beam_configuration *config) const;
   Beam_configuration *force_score (SCM inspect_quants,
@@ -180,7 +190,7 @@ private:
   void score_slope_direction (Beam_configuration *config) const;
   void score_slope_musical (Beam_configuration *config) const;
   void score_stem_lengths (Beam_configuration *config) const;
-  void generate_quants (vector<Beam_configuration *>scores) const;
+  void generate_quants (vector<Beam_configuration *> *scores) const;
   void score_collisions (Beam_configuration *config) const;
 };