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
);