5 #include "simplestaff.hh"
13 Simple_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 itemlist_width(const Array
<Item
*> &its
)
40 for (int j
=0; j
< its
.size(); j
++){
41 iv
.unite (its
[j
]->width());
48 Simple_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
= itemlist_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));
70 Simple_column::typeset_item_directional(Item
*i
, int dir
, int breakst
) // UGH!
73 PCol
* c
=score_column_l_
->pcol_l_
;
76 else if (breakst
== 2)
79 Array
<Item
*> to_move(staff_l_
->pscore_l_
->select_items(staff_l_
->theline_l_
,
81 typeset_item(i
, breakst
);
83 Interval column_wid
= itemlist_width(to_move
);
84 if (column_wid
.empty())
85 column_wid
= Interval(0,0);
86 i
->translate(Offset(column_wid
[dir
] - i
->width()[-dir
], 0));
90 Simple_staff::set_output(PScore
* ps
)
93 pscore_l_
->add(theline_l_
);
98 Simple_staff::get_rest(Rest_req
*rq
)
100 int b
= rq
->rhythmic()->balltype
;
101 int d
= rq
->rhythmic()->dots
;
102 return new Rest(b
, d
);
106 Simple_staff::get_local_key_item()