13 *mlog << "\nProcessing music ... ";
17 /// distribute commands to disciples
18 pscore_p_ = new PScore(paper_p_);
19 for (iter_top(staffs_,i); i.ok(); i++) {
20 i->truncate_cols(last());
21 i->set_output(pscore_p_);
25 // do this after processing, staffs first have to generate PCols.
26 find_col(last(), false)->set_breakable();
40 for (iter_top(staffs_,i); i.ok(); i++)
43 for (iter_top(cols_,c); c.ok(); ) {
44 if (!c->pcol_l_->used()) {
53 this sux. We should have Score_column create the appropriate PCol.
54 Unfortunately, PCols don't know about their position.
57 PCursor<Score_column*>
58 Score::create_cols(Moment w)
60 Score_column* c1 = new Score_column(w);
61 Score_column* c2 = new Score_column(w);
69 assert(i->when() != w);
75 cols_.bottom().add(c1);
76 cols_.bottom().add(c2);
87 PCursor<Score_column*>
88 Score::find_col(Moment w,bool mus)
92 if (i->when() == w && i->musical_ == mus)
107 for (; i.ok(); i++) {
108 pscore_p_->add(i->pcol_l_);
110 clean_cols(); // can't move clean_cols() farther up.
116 for (iter_top(staffs_,i); i.ok(); i++) {
126 for (iter_top(staffs_,i); i.ok(); i++) {
128 assert(i->score_l_ == this);
132 for (iter_top(cols_,cc); cc.ok() && (cc+1).ok(); cc++) {
133 assert(cc->when() <= (cc+1)->when());
144 for (iter_top(staffs_,i); i.ok(); i++) {
147 for (iter_top(cols_,i); i.ok(); i++) {
157 Score::Score(Paperdef*p)
160 paper_p_ = p; // ?? safe?
170 Score::output(String s)
173 if (paper_p_->outfile=="")
174 paper_p_->outfile = s;
176 *mlog << "output to " << paper_p_->outfile << "...\n";
177 Tex_stream the_output(paper_p_->outfile);
178 pscore_p_->output(the_output);
187 staffs_.bottom().add(s);