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()
32 if (prebreak_p_) prebreak_p_->clean_breakable_items();
33 if (postbreak_p_) postbreak_p_->clean_breakable_items();
39 assert(rank_i_ != -1);
48 prebreak_p_->rank_i_ = i;
50 postbreak_p_->rank_i_ = i;
59 mtor << "rank: " << rank_i_ << '\n';
61 mtor << "# symbols: " << its.size() ;
63 mtor << "\npre,post: ";
65 postbreak_p_->print();
66 } else if (daddy_l_) {
67 mtor<<'\n' << ((this == daddy_l_->prebreak_p_) ?
68 "prebreak" : "postbreak");
71 mtor << "extent: " << width().str() << "\n";
77 PCol::compare(PCol const &c1, PCol const &c2)
79 return c1.rank_i() - c2.rank_i();
86 if (prebreak_p_ || postbreak_p_ ) {
87 assert(prebreak_p_&&postbreak_p_);
88 assert(prebreak_p_->daddy_l_ == this);
89 assert(postbreak_p_->daddy_l_ == this);
100 prebreak_p_ = new PCol(this);
101 postbreak_p_ = new PCol(this);
102 prebreak_p_->pscore_l_ = pscore_l_;
103 postbreak_p_->pscore_l_ = pscore_l_;
107 PCol::breakpoint_b() const
113 PCol::breakable_b() const
115 return prebreak_p_||postbreak_p_;
118 PCol::PCol(PCol *parent)
120 error_mark_b_ = false;
146 return breakable_b() || its.size();