]> git.donarmstrong.com Git - lilypond.git/blob - hdr/simplestaff.hh
release: 0.0.11
[lilypond.git] / hdr / simplestaff.hh
1 /*
2   simplestaff.hh -- part of LilyPond
3
4   (c) 1996 Han-Wen Nienhuys
5 */
6
7 #ifndef SIMPLESTAFF_HH
8 #define SIMPLESTAFF_HH
9
10 #include "key.hh"
11 #include "stcol.hh"
12 #include "staff.hh"
13 #include "swalker.hh"
14
15 /*
16    mega-stupido staffs and cols: they do notes one at each moment.   
17    */
18
19 struct Simple_staff;
20
21 /// column of Simple_staff: store one request
22 struct Simple_column : Staff_column {
23
24     svec<Rhythmic_req *> notes;
25     svec<Slur_req *> slurs;
26     Stem_req *stem_;
27     Beam_req *beam_;
28     Simple_staff* staff_;
29
30     
31     /****************/
32     Slur_req  * find_slur(Voice *);
33     void typeset_item(Item *, int=1);
34     void typeset_item_directional(Item *, int dir, int=1);
35
36     Molecule *create_command_mol(Command *com);
37
38     void take_request(Request *rq);   
39     virtual void process_requests();
40
41     Simple_column(Score_column*s,Simple_staff*rs);
42 };
43
44
45 /// Simple  staff: one voicegroup  at a time
46 struct Simple_staff : Staff {
47     /// indirection to the PStaff.
48     PStaff *theline;
49
50     /****************/
51     Staff_column*create_col(Score_column*);
52     
53     virtual Item *get_TYPESET_item(Command*);
54     virtual Stem *get_stem(Stem_req *rq)=0;
55     virtual Notehead *get_notehead(Note_req *rq, int b)=0;
56     virtual Rest *get_rest(Rest_req *rq);
57     virtual void set_output(PScore *);
58     virtual Local_key_item* get_local_key_item();
59
60     void process_commands( PCursor<Command*> &where);
61     virtual void walk();
62
63     Simple_staff();
64 };
65
66 #endif // SIMPLESTAFF_HH
67
68
69
70