#include "pcol.hh"
+#include "pscore.hh"
#include "pstaff.hh"
#include "debug.hh"
-void
-Idealspacing::print() const
-{
-#ifndef NPRINT
- mtor << "idealspacing {" ;
- mtor << "distance "<<space<< " strength " << hooke << "}\n";
-#endif
-}
-
-Idealspacing::Idealspacing(const PCol * l,const PCol * r)
-{
- space = 0.0;
- hooke = 0.0;
- left = l;
- right = r;
-}
-
-void
-Idealspacing::OK() const
-{
-#ifndef NDEBUG
- assert(hooke >= 0 && left && right);
-#endif
-}
-
-/****************************************************************/
-
Interval
PCol::width() const
{
Interval w;
- for (PCursor<const Item *> ic(its); ic.ok(); ic++)
- w.unite(ic->width());
+ for (iter_top(its,i); i.ok(); i++)
+ w.unite(i->width());
if (w.empty())
w.unite(Interval(0,0));
return w;
}
+int
+PCol::rank() const
+{
+ if(!pscore_)
+ return -1;
+ PCursor<PCol*> me=pscore_->find_col( (PCol*)this);
+ if (!me.ok())
+ return -1;
+ PCursor<PCol*> bot(pscore_->cols.top());
+ return me - bot;
+}
+
void
PCol::print() const
{
- #ifndef NPRINT
+#ifndef NPRINT
mtor << "PCol {";
+
+ if (rank() >= 0)
+ mtor << "rank: " << rank() << '\n';
+
mtor << "# symbols: " << its.size() ;
if (breakable()){
- mtor << "pre,post: ";
+ mtor << "\npre,post: ";
prebreak->print();
postbreak->print();
+ } else if (daddy) {
+ mtor<<'\n' << ((this == daddy->prebreak) ? "prebreak" : "postbreak");
}
- mtor << "extent: " << width().min << ", " << width().max << "\n";
+ mtor << "extent: " << width().str() << "\n";
mtor << "}\n";
- #endif
+#endif
}
int
-PCol::compare(const PCol &, const PCol &)
+PCol::compare(const PCol &c1, const PCol &c2)
{
- assert(false);
- return 0 ;
+ return c1.pscore_->compare_pcols((PCol*)&c1,(PCol*)&c2);
}
void
assert(prebreak&&postbreak);
assert(prebreak->daddy == this);
assert(postbreak->daddy == this);
- }
-
+ }
}
void
prebreak = new PCol(this);
postbreak = new PCol(this);
- used = true;
+ prebreak->pscore_ = pscore_;
+ postbreak->pscore_ = pscore_;
+
+
}
bool
prebreak=0;
postbreak=0;
line=0;
- used = false;
+
+ pscore_ = 0;
}
PCol::~PCol()
{
its.bottom().add(i);
i->pcol_ = this;
- used = true;
+
+}
+
+bool
+PCol::used()const
+{
+ return breakable() || its.size();
}