4 #include "staffwalker.hh"
7 #include "staffcommands.hh"
9 #include "inputcommands.hh"
10 #include "inputcommand.hh"
14 Staff::do_commands(PointerList<Input_command*> score_wide,
15 PointerList<Input_command*> staff_wide)
17 Input_commands commands;
19 // bring in commands from voices.
20 for (iter_top(voices, i); i.ok(); i++) {
21 Moment here = i->start;
22 for (iter_top(i->elts, j); j.ok(); j++) {
23 for (iter_top(j->reqs, k); k.ok(); k++) {
25 commands.find_moment(here);
26 commands.add(*k->command()->com_p_,
27 score_l_->markers_assoc_);
33 for (iter_top(score_wide,i); i.ok(); i++)
34 commands.add(**i, score_l_->markers_assoc_);
35 for (iter_top(staff_wide,i); i.ok(); i++)
36 commands.add(**i, score_l_->markers_assoc_);
42 Staff::add(PointerList<Voice*> &l)
44 for (iter_top(l,i); i.ok(); i++)
45 voices.bottom().add(i);
49 Staff::truncate_cols(Moment l)
52 for (; i->when() > l; i=cols.bottom()) {
53 Staff_column * col_p = i.get();
54 assert(col_p->when() > l);
62 return score_l_->paper_p_;
70 if (!i->score_column_l_->used())
78 Staff::get_col(Moment w, bool mus)
80 Score_column* sccol_l = score_l_->find_col(w,mus);
85 if (*i->score_column_l_ > *sccol_l) // too far
87 if (sccol_l == i->score_column_l_)
91 /* post: *sc > *->score_column_l_ || !i.ok() */
92 Staff_column* newst = create_col(sccol_l);
95 cols.bottom().add(newst);
105 // making a fix at 2:30 am, with several beers drunk.
107 if ((i-1).ok()&& (i-1)->when() == newst->when()) {
117 Staff::get_marks(Array<String>&s_arr, Array<Moment>&m_arr)
119 for (iter_top(voices,i); i.ok(); i++) {
120 Moment now = i->start;
121 for (iter_top(i->elts,j); j.ok(); j++) {
122 for (iter_top(j->reqs, k); k.ok(); k++) {
123 if (k->mark()) { // ugh. 4 levels
124 s_arr.push(k->mark()->mark_str_);
133 put all stuff grouped vertically in the Staff_cols
136 Staff::setup_staffcols()
138 for (iter_top(voices,i); i.ok(); i++) {
139 Moment now = i->start;
140 for (iter_top(i->elts,j); j.ok(); j++) {
142 Staff_column *s_l=get_col(now,true);
147 set_time_descriptions();
151 Staff::set_time_descriptions()
153 Time_description t(0,0);
154 for (iter_top(cols,i); i.ok(); i++) {
155 if (i->staff_commands_p_)
156 t = i->staff_commands_p_->tdescription_;
157 else if (i->tdescription_)
158 t = *i->tdescription_;
159 if(!i->tdescription_) {
160 i->tdescription_ = new Time_description(i->when() - t.when ,&t);
182 for (; i.ok(); j++,i++) {
183 if ( j->when() == i->when())
184 assert(!j->mus() && i->mus());
186 assert(j->when () < i->when() );
197 for (iter_top(voices,i); i.ok(); i++) {
209 for (iter_top(voices,i); i.ok(); i++) {