2 complexwalker.hh -- declare Complex_walker
4 (c) 1996,97 Han-Wen Nienhuys
7 #ifndef COMPLEXWALKER_HH
8 #define COMPLEXWALKER_HH
11 #include "voicegroup.hh"
13 #include "staffwalker.hh"
14 #include "staffeleminfo.hh"
18 A staff walker which uses registers to decide what to print
20 class Complex_walker: public Staff_walker {
21 bool try_command_request(Nonmusical_req *req_l);
22 void do_change_group( Voice * v, String group_id_str);
24 void try_request(Request*req);
27 Array<Item*> prebreak_item_p_arr_;
28 Array<Item*> nobreak_item_p_arr_;
29 Array<Item*> postbreak_item_p_arr_;
33 IPointerList<Voice_registers *> voice_reg_list_;
34 IPointerList<Voice_group_registers*> group_reg_list_;
35 Assoc<Voice *, Voice_group_registers *> voice_group_map_;
37 Clef_register *clef_reg_p_;
38 Local_key_register *local_key_reg_p_;
39 Key_register *key_reg_p_;
40 Bar_register *bar_reg_p_;
41 Meter_register *meter_reg_p_;
43 Array<Staff_elem_info> announce_info_arr_;
47 Voice_registers *find_voice_reg(Voice*v_l)const;
48 Voice_registers *get_voice_reg(Voice*v_l);
50 /** search for voice_group containing #v_l#
53 pointer if found, 0 if not found.
55 Voice_group_registers *find_voice_group(Voice* v_l)const;
57 /// search. Create if necessary
58 Voice_group_registers *get_voice_group(Voice* v_l);
59 /** search for voice_group named #id#
62 pointer if found, 0 if not found.
64 Voice_group_registers *find_voice_group(const char* id)const;
67 search for voice_group named #id#, create if necessary
69 Voice_group_registers *get_voice_group(const char*);
71 Array<Voice_registers *> get_voice_regs(Voice_group_registers *) const;
73 void regs_process_requests();
74 void typeset_breakable_item(Item * pre_p ,
75 Item * nobreak_p, Item * post_p);
76 void typeset_element(Staff_elem *elem_p);
77 void announce_element(Staff_elem_info);
78 virtual void process_requests();
79 virtual void do_post_move();
80 virtual void do_pre_move();
82 @return the position of central c.
84 int c0_position_i() const;
87 set the position of central c.
88 @param the new position
90 void set_c0_position(int j);
91 Complex_walker(Complex_staff*);
94 Complex_staff *staff();
99 #endif // COMPLEXWALKER_HH