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()
30 for(iter(its.top(), j); j.ok(); ) {
35 if (prebreak_p_) prebreak_p_->clean_breakable_items();
36 if (postbreak_p_) postbreak_p_->clean_breakable_items();
42 assert(rank_i_ != -1);
51 prebreak_p_->rank_i_ = i;
53 postbreak_p_->rank_i_ = i;
62 mtor << "rank: " << rank_i_ << '\n';
64 mtor << "# symbols: " << its.size() ;
66 mtor << "\npre,post: ";
68 postbreak_p_->print();
69 } else if (daddy_l_) {
70 mtor<<'\n' << ((this == daddy_l_->prebreak_p_) ?
71 "prebreak" : "postbreak");
74 mtor << "extent: " << width().str() << "\n";
80 PCol::compare(PCol const &c1, PCol const &c2)
82 return c1.rank_i() - c2.rank_i();
89 if (prebreak_p_ || postbreak_p_ ) {
90 assert(prebreak_p_&&postbreak_p_);
91 assert(prebreak_p_->daddy_l_ == this);
92 assert(postbreak_p_->daddy_l_ == this);
103 prebreak_p_ = new PCol(this);
104 postbreak_p_ = new PCol(this);
105 prebreak_p_->pscore_l_ = pscore_l_;
106 postbreak_p_->pscore_l_ = pscore_l_;
110 PCol::breakpoint_b() const
116 PCol::breakable_b() const
118 return prebreak_p_||postbreak_p_;
121 PCol::PCol(PCol *parent)
123 error_mark_b_ = false;
149 return breakable_b() || its.size();