]> git.donarmstrong.com Git - lilypond.git/blob - hdr/spanner.hh
release: 0.0.18
[lilypond.git] / hdr / spanner.hh
1 /*
2   spanner.hh -- part of LilyPond
3
4   (c) 1996 Han-Wen Nienhuys
5 */
6
7 #ifndef SPANNER_HH
8 #define SPANNER_HH
9 #include "proto.hh"
10
11 /// a symbol which is attached between two columns.
12 struct Spanner {
13     PCol *left, *right;
14     PStaff * pstaff_;
15     Molecule *output ;
16
17     /****************/
18
19     String TeXstring () const ;
20     Spanner();
21     Paperdef*paper() const;
22
23     virtual Interval height()const=0;
24     /**
25       PRE:
26       processed
27       */
28     virtual Interval width()const;
29     virtual void process();
30     virtual void preprocess();
31
32
33     /// clone a piece of  this spanner.
34     virtual Spanner *broken_at( PCol *c1,  PCol *c2) const=0; 
35     /**
36  
37     PRE
38     c1 >= start, c2  <= stop
39     */
40     virtual void print() const;
41 };
42 /** Spanner should know about the items which it should consider:
43     e.g. slurs should be steep enough to "enclose" all those items. This
44     is absolutely necessary for beams, since they have to adjust the
45     length of stems of notes they encompass.
46
47     */
48 #endif