]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/spring-spacer.hh
release: 1.1.1
[lilypond.git] / lily / include / spring-spacer.hh
index e8dc25db3be5c260e83b0782093eb0f85652ca3b..33390810ced06f6ccc14a3d4d6facd1edd7ba044 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -16,6 +16,8 @@
 #include "colhpos.hh"
 #include "moment.hh"
 
+
+
 /** 
   Determine positions of columns connected by springs and held apart by rods.
   
 
 class Spring_spacer : public Line_spacer {
   friend class Durations_iter;
-    
+
   Pointer_list<Idealspacing *> ideal_p_list_;
-  Array<Colinfo> cols;
-  Array<Colinfo> loose_col_arr_;
-    
+  Array<Column_info> cols_;
+  Array<Column_info> loose_col_arr_;
+
+  
   /// mark column #i# as being loose.
   void loosen_column (int i);
   /// the index of #c# in #cols#
-  int col_id (PCol const *c) const;
+  int col_id (Paper_column const *c) const;
 
   /// generate an (nonoptimal) solution
   Vector find_initial_solution() const;
 
-  /// check if problem is too tight
-  bool check_feasible() const;
-
   /// does #this# contain the column #w#? 
-  bool contains (PCol const *w);
+  bool contains_b (Paper_column const *w);
 
   /// make the energy function
   void make_matrices (Matrix &quad, Vector &lin,Real&) const;
@@ -72,27 +72,22 @@ class Spring_spacer : public Line_spacer {
 
   void handle_loose_cols();
   void position_loose_cols (Vector &) const;
-  /**
-    add a idealspacing to the problem.
-      
-    One pair of columns can have no, one or more idealspacings,
-    since they can be "summed" if the columns to which #i# refers are
-    not in this problem, the spacing is ignored.
-    */
-  void add_ideal (Idealspacing const *i);
+  bool try_initial_solution_and_tell (Vector&)const;
   Vector try_initial_solution() const;
   void calc_idealspacing();
-  void set_fixed_cols (Mixed_qp&)const;
+  void set_fixed_cols (Mixed_qp&) const;
 
   Score_column* scol_l (int);
   void connect (int i,int j, Real,Real);
-  Line_of_cols error_pcol_l_arr()const;
+  Line_of_cols error_pcol_l_arr() const;
+  Real calculate_energy_f (Vector) const;
 public:
   static Line_spacer *constructor();
-
-  virtual void solve (Col_hpositions*) const;
-  virtual void lower_bound_solution (Col_hpositions*) const;
-  virtual void add_column (PCol  *, bool fixed=false, Real fixpos=0.0);
+  Real energy_normalisation_f_;
+  Spring_spacer ();
+  virtual void solve (Column_x_positions*) const;
+  virtual void lower_bound_solution (Column_x_positions*) const;
+  virtual void add_column (Paper_column  *, bool fixed=false, Real fixpos=0.0);
  
 
   virtual Vector default_solution() const;