]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/slur-scoring.hh
* lily/instrument-name-engraver.cc (stop_translation_timestep):
[lilypond.git] / lily / include / slur-scoring.hh
index 5b4634115eaab57b05ec54fa172dd4cf1e99e6c3..51be36672cb1a224a071587061fe273cfc6ac126 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 2004--2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
 #ifndef SLUR_SCORING_HH
@@ -11,7 +11,7 @@
 
 #include "box.hh"
 #include "lily-proto.hh"
-#include "parray.hh"
+#include "std-vector.hh"
 #include "lily-guile.hh"
 
 struct Slur_score_parameters
@@ -26,7 +26,7 @@ struct Slur_score_parameters
   Real non_horizontal_penalty_;
   Real max_slope_;
   Real max_slope_factor_;
-  Real extra_object_collision_;
+  Real extra_object_collision_penalty_;
   Real accidental_collision_;
   Real free_slur_distance_;
   Real free_head_distance_;
@@ -45,21 +45,11 @@ struct Extra_collision_info
   Box extents_;
   Real penalty_;
   Grob *grob_;
+  SCM type_;
+  
+  Extra_collision_info (Grob *g, Real idx, Interval x, Interval y, Real p);
+  Extra_collision_info ();
 
-  Extra_collision_info (Grob *g, Real idx, Interval x, Interval y, Real p)
-  {
-    idx_ = idx;
-    extents_[X_AXIS] = x;
-    extents_[Y_AXIS] = y;
-    penalty_ = p;
-    grob_ = g;
-  }
-  Extra_collision_info ()
-  {
-    idx_ = 0.0;
-    penalty_ = 0.;
-    grob_ = 0;
-  }
 };
 
 struct Encompass_info
@@ -91,7 +81,7 @@ struct Bound_info
   Grob *slur_head_;
   Grob *staff_;
   Grob *stem_;
-  Interval slur_head_extent_;
+  Interval slur_head_x_extent_;
   Real staff_space_;
 
   Bound_info ()
@@ -114,15 +104,15 @@ struct Slur_score_state
   bool has_same_beam_;
 
   Real musical_dy_;
-  Link_array<Grob> columns_;
-  Array<Encompass_info> encompass_infos_;
-  Array<Extra_collision_info> extra_encompass_infos_;
+  Link_array__Grob_ columns_;
+  std::vector<Encompass_info> encompass_infos_;
+  std::vector<Extra_collision_info> extra_encompass_infos_;
 
   Direction dir_;
   Slur_score_parameters parameters_;
   Drul_array<Bound_info> extremes_;
   Drul_array<Offset> base_attachments_;
-  Link_array<Slur_configuration> configurations_;
+  Link_array__Slur_configuration_ configurations_;
   Real staff_space_;
   Real thickness_;
 
@@ -133,13 +123,14 @@ struct Slur_score_state
   void fill (Grob *);
   void set_next_direction ();
 
+  std::vector<Offset> generate_avoid_offsets () const;
   Drul_array<Bound_info> get_bound_info () const;
   void generate_curves () const;
-  Link_array<Slur_configuration> enumerate_attachments (Drul_array<Real> end_ys) const;
+  Link_array__Slur_configuration_ enumerate_attachments (Drul_array<Real> end_ys) const;
   Drul_array<Offset> get_base_attachments () const;
   Drul_array<Real> get_y_attachment_range () const;
   Encompass_info get_encompass_info (Grob *col) const;
-  Array<Extra_collision_info> get_extra_encompass_infos () const;
+  std::vector<Extra_collision_info> get_extra_encompass_infos () const;
   Real move_away_from_staffline (Real y, Grob *on_staff) const;
   int get_closest_index (SCM inspect_quants) const;
 };