/*
- p-score.cc -- implement PScore
+ p-score.cc -- implement Paper_score
source file of the GNU LilyPond music typesetter
#include "word-wrap.hh"
#include "gourlay-breaking.hh"
-PScore::PScore(Paper_def*p)
+Paper_score::Paper_score(Paper_def*p)
{
paper_l_ = p;
super_elem_l_ = new Super_elem;
typeset_element(super_elem_l_);
}
-PScore::~PScore()
+Paper_score::~Paper_score()
{
super_elem_l_->unlink_all();
}
void
-PScore::typeset_element(Score_elem * elem_p)
+Paper_score::typeset_element(Score_elem * elem_p)
{
elem_p_list_.bottom().add(elem_p);
elem_p->pscore_l_ = this;
}
void
-PScore::typeset_item(Item *i, PCol *c, int breakstat)
+Paper_score::typeset_item(Item *i, PCol *c)
{
assert(c && i);
+ int breakstat = i->break_status_i_;
if (breakstat == -1) {
- typeset_item(i, c->prebreak_p_);
- return;
- }
-
- if (breakstat == 1) {
- typeset_item(i, c->postbreak_p_);
- return;
+ c = c->prebreak_p_;
+ }else if (breakstat == 1) {
+ c = c->postbreak_p_;
}
c->add(i);
}
void
-PScore::typeset_broken_spanner(Spanner*span_p)
+Paper_score::typeset_broken_spanner(Spanner*span_p)
{
span_p->left_col_l_->starters.bottom().add (span_p);
- span_p->right_col_l_->stoppers.bottom().add(span_p);
assert(span_p->left_col_l_->line_l_ == span_p->right_col_l_->line_l_);
typeset_element(span_p);
void
-PScore::typeset_unbroken_spanner(Spanner*span_p)
+Paper_score::typeset_unbroken_spanner(Spanner*span_p)
{
span_p_list_.bottom().add(span_p);
span_p->pscore_l_=this;
void
-PScore::clean_cols()
+Paper_score::clean_cols()
{
int rank_i = 0;
for (iter_top(col_p_list_,c); c.ok(); )
}
void
-PScore::add(PCol *p)
+Paper_score::add(PCol *p)
{
p->pscore_l_ = this;
if (p->breakable_b()){
}
void
-PScore::output(Tex_stream &ts)
+Paper_score::output(Tex_stream &ts)
{
ts << "\n "<< paper_l_->lookup_l()->texsetting << "%(Tex id)\n";
ts<< super_elem_l_->TeX_string();
void
-PScore::OK()const
+Paper_score::OK()const
{
#ifndef NDEBUG
for (iter_top(col_p_list_,cc); cc.ok(); cc++)
cc->OK();
+ for (PCursor<Score_elem*> i( elem_p_list_.top()); i.ok(); i++)
+ i->OK();
#endif
}
void
-PScore::print() const
+Paper_score::print() const
{
#ifndef NPRINT
if ( !check_debug)
return ;
- mtor << "PScore { ";
+ mtor << "Paper_score { ";
paper_l_->print();
mtor << "\n elements: ";
for (iter_top(elem_p_list_,cc); cc.ok(); cc++)
}
void
-PScore::preprocess()
+Paper_score::preprocess()
{
super_elem_l_->breakable_col_processing();
super_elem_l_->pre_processing();
}
void
-PScore::postprocess()
+Paper_score::postprocess()
{
super_elem_l_->post_processing();
super_elem_l_->molecule_processing();
}
PCursor<PCol *>
-PScore::find_col(PCol const *c)const
+Paper_score::find_col(PCol const *c)const
{
PCol const *what = c;
if (what->daddy_l_ )
void
-PScore::set_breaking(Array<Col_hpositions> const &breaking)
+Paper_score::set_breaking(Array<Col_hpositions> const &breaking)
{
super_elem_l_->line_of_score_l_->set_breaking( breaking);
super_elem_l_->break_processing();
}
void
-PScore::calc_breaking()
+Paper_score::calc_breaking()
{
Break_algorithm *algorithm_p;
Array<Col_hpositions> sol;
sol = algorithm_p->solve();
delete algorithm_p;
if ( ! sol.size()) {
- error ( "Can not solve this casting problem exactly; revert to Word_wrap");
+ warning( "Can not solve this casting problem exactly; revert to Word_wrap");
try_wrap = true;
}
}
}
void
-PScore::process()
+Paper_score::process()
{
clean_cols();
print();
calc_breaking();
*mlog << "\nPostprocessing elements..." << endl;
postprocess();
+
+#ifndef NDEBUGA
+ for(PCursor<Score_elem*> i(elem_p_list_.top()); i.ok(); i++)
+ assert (i->status() >= 9);
+#endif
}
/** Get all breakable columns between l and r, (not counting l and r). */
Link_array<PCol>
-PScore::breakable_col_range(PCol*l,PCol*r)const
+Paper_score::breakable_col_range(PCol*l,PCol*r)const
{
Link_array<PCol> ret;
return ret;
}
Link_array<PCol>
-PScore::col_range(PCol*l,PCol*r)const
+Paper_score::col_range(PCol*l,PCol*r)const
{
Link_array<PCol> ret;
}
Link_array<PCol>
-PScore::broken_col_range(PCol*l,PCol*r)const
+Paper_score::broken_col_range(PCol*l,PCol*r)const
{
Link_array<PCol> ret;