2 spanner.hh -- part of LilyPond
4 (c) 1996,97 Han-Wen Nienhuys
11 #include "staffelem.hh"
13 /// a symbol which is attached between two columns.
14 struct Spanner:Staff_elem {
21 virtual Interval width()const;
23 const char* name()const;
24 Spanner *broken_at(PCol *c1, PCol *c2) const;
25 virtual Spanner* spanner() { return this; }
27 /// clone a piece of this spanner.
28 virtual Spanner *do_break_at( PCol *c1, PCol *c2) const=0;
32 c1 >= start, c2 <= stop
35 /** A spanner is a symbol which spans across several columns, so its
36 final appearance can only be calculated after the breaking problem
47 Spanner should know about the items which it should consider:
48 e.g. slurs should be steep enough to "enclose" all those items. This
49 is absolutely necessary for beams, since they have to adjust the
50 length of stems of notes they encompass.