1 #include "staffline.hh"
2 #include "scoreline.hh"
14 String s("\\vbox to ");
15 s += print_dimen(i.length());
16 s += "{\\vskip "+print_dimen(i.right)+" ";
22 Line_of_staff::TeXstring() const
24 String s("%line_of_staff\n");
25 s+=make_vbox(height());
26 // the staff itself: eg lines, accolades
30 brew_molecule(line_of_score_->pscore_->paper_->linewidth);
32 s+=pstaff_->stafsym->TeXstring();
33 PCursor<const PCol *> cc(line_of_score_->cols);
34 Real lastpos=cc->hpos;
36 // all items in the current line & staff.
37 for (; cc.ok(); cc++) {
38 Real delta=cc->hpos - lastpos;
43 s +=String( "\\kern ") + print_dimen(delta);
45 // now output the items.
47 for (PCursor<const Item *> ic(cc->its); ic.ok(); ic++) {
48 if (ic->pstaff_ == pstaff_)
52 for (PCursor<const Spanner *> sc(cc->starters); sc.ok(); sc++)
53 if (sc->pstaff_ == pstaff_)
61 Line_of_staff::Line_of_staff(Line_of_score * sc, PStaff*st)
66 PCol *linestart = sc->cols.top();
67 PCol *linestop = sc->cols.bottom();
69 for (PCursor<const Spanner*> sp(pstaff_->spans); sp.ok(); sp++) {
71 PCol *brokenstart = &max(*linestart, *sp->left);
72 PCol *brokenstop = &min(*linestop, *sp->right);
73 if ( *brokenstart < *brokenstop) {
74 line_of_score_->pscore_-> // higghl
75 add_broken(sp->broken_at(brokenstart,brokenstop));
82 Line_of_staff::height() const
86 y = pstaff_->stafsym->extent().y;
88 PCursor<const PCol *> cc(line_of_score_->cols);
90 // all items in the current line & staff.
91 for (; cc.ok(); cc++) {
92 for (PCursor<const Item *> ic(cc->its); ic.ok(); ic++) {
93 if (ic->pstaff_ == pstaff_) {
94 y.unite(ic->height());
98 for (PCursor<const Spanner *> sc(cc->starters); sc.ok(); sc++)
99 if (sc->pstaff_ == pstaff_) {
100 y.unite(sc->height());
108 Line_of_staff::process()
110 if (!pstaff_->stafsym)
111 pstaff_->brew_molecule(line_of_score_->pscore_->