X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fp-col.cc;h=8378a68f7a069c69a02f8f278c22697877d46007;hb=refs%2Ftags%2Frelease%2F1.1.43;hp=06fae0d37fb468d15f2e512400f58f651a62f024;hpb=2181534bd94587fcac8f1769f2dda7bece693649;p=lilypond.git diff --git a/lily/p-col.cc b/lily/p-col.cc index 06fae0d37f..8378a68f7a 100644 --- a/lily/p-col.cc +++ b/lily/p-col.cc @@ -3,13 +3,40 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--1999 Han-Wen Nienhuys */ #include "p-col.hh" #include "p-score.hh" #include "debug.hh" +void +Paper_column::add_rod (Paper_column * p, Real d) +{ + Direction dir = Direction (sign (p->rank_i () - rank_i ())); + + if (!dir) + { + warning ("Must set minimum distance between differing columns."); + return; + } + + for (int i=0; i < minimal_dists_arr_drul_[dir].size (); i++) + { + Column_rod &rod = minimal_dists_arr_drul_[dir][i]; + if (rod.other_l_ == p) + { + rod.distance_f_ = rod.distance_f_ >? d; + return ; + } + } + + Column_rod cr; + cr.distance_f_ = d; + cr.other_l_ = p; + + minimal_dists_arr_drul_[dir].push (cr); +} int Paper_column::rank_i() const @@ -21,10 +48,6 @@ void Paper_column::set_rank (int i) { rank_i_ = i; - if (prebreak_l()) - prebreak_l()->rank_i_ = i; - if (postbreak_l()) - postbreak_l()->rank_i_ = i; } void @@ -32,42 +55,19 @@ Paper_column::do_print() const { #ifndef NPRINT DOUT << "rank: " << rank_i_ << '\n'; - if (prebreak_l()) + for (int i=0; i < minimal_dists_arr_drul_[LEFT].size (); i++) { - DOUT << "\npre: "; - prebreak_l()->print(); + minimal_dists_arr_drul_[LEFT][i].print (); } - if (postbreak_l()) - { - DOUT << "post: "; - postbreak_l()->print(); - } - if (break_status_i_) + DOUT << "Right: "; + for (int i=0; i < minimal_dists_arr_drul_[RIGHT].size (); i++) { - DOUT <<'\n' << ((break_status_i_ == -1)? "prebreak" : "postbreak"); - DOUT << '\n'; + minimal_dists_arr_drul_[RIGHT][i].print (); } - // DOUT << "extent: " << width().str () << "\n"; + Item::do_print (); #endif } -int -Paper_column::compare (Paper_column const &c1, Paper_column const &c2) -{ - return c1.rank_i() - c2.rank_i (); -} - -Paper_column* -Paper_column::prebreak_l() const -{ - return (Paper_column*)broken_to_drul_[LEFT]; -} - -Paper_column* -Paper_column::postbreak_l() const -{ - return(Paper_column*) broken_to_drul_[RIGHT]; -} bool Paper_column::breakpoint_b() const { @@ -76,8 +76,8 @@ Paper_column::breakpoint_b() const Paper_column::Paper_column() { - used_b_ = false; - error_mark_b_ = false; + set_axes (X_AXIS, X_AXIS); + line_l_=0; rank_i_ = -1; } @@ -88,11 +88,19 @@ Paper_column::line_l() const return line_l_; } -bool -Paper_column::used_b() const + + + +Paper_column* +Paper_column::column_l () const { - return linked_b(); + return (Paper_column*)(this); } -IMPLEMENT_IS_TYPE_B1(Paper_column, Horizontal_group_item); +void +Paper_column::preprocess () +{ + minimal_dists_arr_drul_[LEFT].sort (Column_rod::compare); + minimal_dists_arr_drul_[RIGHT].sort (Column_rod::compare); +}