4 #include "complexstaff.hh"
13 Complex_staff::get_TYPESET_item(Command *com)
16 Array<Scalar> arg( com->args);
20 s = new Bar(com->args[1]);
21 } else if (type == "METER") {
23 } else if (type == "CLEF" || type == "CURRENTCLEF") {
24 Clef_item * c = new Clef_item;
26 c->change = (type == "CLEF");
28 WARN << "ignoring TYPESET command for " << type << '\n';
35 citemlist_width(const Array<Item*> &its)
40 for (int j =0; j < its.size(); j++){
41 iv.unite (its[j]->width());
48 Complex_column::typeset_item(Item *i, int breakst)
52 staff_l_->pscore_l_->typeset_item(i, score_column_l_->pcol_l_,
53 staff_l_->theline_l_,breakst);
55 if (breakst == BREAK_PRE - BREAK_PRE) {
58 staff_l_->pscore_l_->select_items(staff_l_->theline_l_,
59 score_column_l_->pcol_l_->prebreak_p_));
60 Interval column_wid = citemlist_width(to_move);
61 assert(!column_wid.empty());
63 for (int j=0; j < to_move.size(); j++) {
64 to_move[j]->translate(Offset(-column_wid.right, 0));
72 Complex_column::typeset_item_directional(Item *i, int dir, int breakst) // UGH!
75 PCol * c=score_column_l_->pcol_l_;
78 else if (breakst == 2)
81 Array<Item*> to_move(staff_l_->pscore_l_->select_items(staff_l_->theline_l_,
83 typeset_item(i, breakst);
85 Interval column_wid = citemlist_width(to_move);
86 if (column_wid.empty())
87 column_wid = Interval(0,0);
88 i->translate(Offset(column_wid[dir] - i->width()[-dir], 0));
92 Complex_staff::set_output(PScore* ps )
95 pscore_l_->add(theline_l_);