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>
*/
#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;
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;