2 p-col.cc -- implement PCol
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
19 for (iter_top (its,i); i.ok(); i++)
22 w.unite (Interval (0,0));
27 PCol::clean_breakable_items()
34 prebreak_p_->clean_breakable_items();
36 postbreak_p_->clean_breakable_items();
46 PCol::set_rank (int i)
50 prebreak_p_->rank_i_ = i;
52 postbreak_p_->rank_i_ = i;
61 DOUT << "rank: " << rank_i_ << '\n';
63 DOUT << "# symbols: " << its.size() ;
70 postbreak_p_->print();
74 DOUT <<'\n' << ((this == daddy_l_->prebreak_p_) ?
75 "prebreak" : "postbreak");
78 DOUT << "extent: " << width().str () << "\n";
84 PCol::compare (PCol const &c1, PCol const &c2)
86 return c1.rank_i() - c2.rank_i ();
93 if (prebreak_p_ || postbreak_p_)
95 assert (prebreak_p_&&postbreak_p_);
96 assert (prebreak_p_->daddy_l_ == this);
97 assert (postbreak_p_->daddy_l_ == this);
103 PCol::set_breakable()
109 prebreak_p_->pscore_l_ = pscore_l_;
110 postbreak_p_->pscore_l_ = pscore_l_;
112 prebreak_p_->daddy_l_ = postbreak_p_->daddy_l_ = this;
115 PCol::do_set_breakable()
117 prebreak_p_ = new PCol;
118 postbreak_p_ = new PCol;
123 PCol::breakpoint_b() const
129 PCol::breakable_b() const
131 return prebreak_p_||postbreak_p_||daddy_l_;
137 error_mark_b_ = false;
156 its.bottom().add (i);
163 return daddy_l_ || breakable_b() || its.size ()|| used_b_;