lilypond-0.0.5
[lilypond.git] / score.hh
blobc6af97c7a10d77fb395fe086961ca9f2fd07292e
1 #ifndef SCORE_HH
2 #define SCORE_HH
4 #include "vray.hh"
5 #include "mtime.hh"
6 #include "scommands.hh"
8 /// the total music def of one movement
9 struct Score {
10 Paperdef *paper;
11 /// staffs_ and commands_ form the problem definition.
12 PointerList<Staff *> staffs_;
13 Score_commands commands_;
15 /// "runtime" fields for setting up spacing
16 PointerList<Score_column*> cols_;
17 PScore *pscore_;
19 /****************************************************************/
21 Score();
22 void process();
24 /// construction
25 void add_staff(Staff *st);
27 void OK() const;
28 Score_column *find_col(Mtime,bool);
29 void do_pcols();
31 void add(Staff*);
32 void output(String fn);
33 PCursor<Score_column*> create_cols(Mtime);
34 void print() const;
36 Mtime last() const;
38 void add(Command*);
40 private:
42 void clean_cols();
43 void distribute_commands();
44 void do_connect(PCol *c1, PCol *c2, Real d);
45 void connect_nonmus(PCol* c1, PCol *c2, Real d);
46 /// add #Idealspacings# to #pscore_#
47 void calc_idealspacing();
48 /** add the score wide commands (bars, breaks) to each staff so
49 they can process (typeset) them if needed */
51 /**
54 #endif