2 paper-column.cc -- implement Paper_column
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "paper-column.hh"
10 #include "paper-score.hh"
14 Paper_column::add_rod (Paper_column * p, Real d)
16 Direction dir = Direction (sign (p->rank_i () - rank_i ()));
20 programming_error ("Must set minimum distance between differing columns.");
24 for (int i=0; i < minimal_dists_arr_drul_[dir].size (); i++)
26 Column_rod &rod = minimal_dists_arr_drul_[dir][i];
27 if (rod.other_l_ == p)
29 rod.distance_f_ = rod.distance_f_ >? d;
38 minimal_dists_arr_drul_[dir].push (cr);
42 Paper_column::add_spring (Paper_column * p, Real d, Real s)
44 Direction dir = Direction (sign (p->rank_i () - rank_i ()));
48 warning ("Must set spring between differing columns.");
52 for (int i=0; i < spring_arr_drul_[dir].size (); i++)
54 Column_spring &spring = spring_arr_drul_[dir][i];
55 if (spring.other_l_ == p)
57 spring.distance_f_ = spring.distance_f_ >? d;
67 spring_arr_drul_[dir].push (cr);
71 Paper_column::rank_i() const
77 Paper_column::set_rank (int i)
83 Paper_column::do_print() const
86 DOUT << "rank: " << rank_i_ << '\n';
90 for (int i=0; i < minimal_dists_arr_drul_[d].size (); i++)
92 minimal_dists_arr_drul_[d][i].print ();
94 for (int i=0; i < spring_arr_drul_[d].size (); i++)
96 spring_arr_drul_[d][i].print ();
100 while ((flip (&d))!=LEFT);
106 Paper_column::breakpoint_b() const
111 Paper_column::Paper_column()
113 set_axes (X_AXIS, X_AXIS);
120 Paper_column::line_l() const
129 Paper_column::column_l () const
131 return (Paper_column*)(this);
138 Paper_column::preprocess ()
140 minimal_dists_arr_drul_[LEFT].sort (Column_rod::compare);
141 minimal_dists_arr_drul_[RIGHT].sort (Column_rod::compare);
142 spring_arr_drul_[LEFT].sort (Column_spring::compare);
143 spring_arr_drul_[RIGHT].sort (Column_spring::compare);