7 Idealspacing::print() const
10 mtor << "idealspacing {" ;
11 mtor << "distance "<<space<< " strength " << hooke << "}\n";
15 Idealspacing::Idealspacing(const PCol * l,const PCol * r)
24 Idealspacing::OK() const
27 assert(hooke >= 0 && left && right);
31 /****************************************************************/
38 for (PCursor<const Item *> ic(its); ic.ok(); ic++)
41 w.unite(Interval(0,0));
51 PCursor<PCol*> me=pscore_->find_col(this);
52 PCursor<PCol*> bot(pscore_->cols.top());
54 mtor << "rank: " << me - bot << '\n';
57 mtor << "# symbols: " << its.size() ;
59 mtor << "\npre,post: ";
63 mtor<<'\n' << ((this == daddy->prebreak) ? "prebreak" : "postbreak");
65 mtor << "extent: " << width().min << ", " << width().max << "\n";
71 PCol::compare(const PCol &c1, const PCol &c2)
73 return c1.pscore_->compare_pcols(&c1,&c2);
79 if (prebreak || postbreak ) {
80 assert(prebreak&&postbreak);
81 assert(prebreak->daddy == this);
82 assert(postbreak->daddy == this);
92 prebreak = new PCol(this);
93 postbreak = new PCol(this);
94 prebreak->pscore_ = pscore_;
95 postbreak->pscore_ = pscore_;
101 PCol::breakable() const
103 return prebreak||postbreak;
106 PCol::PCol(PCol *parent)
133 return breakable() || its.size();