2 complexwalker.hh -- declare Complex_walker
4 (c) 1996,97 Han-Wen Nienhuys
7 #ifndef COMPLEXWALKER_HH
8 #define COMPLEXWALKER_HH
12 #include "staffwalker.hh"
13 #include "staffeleminfo.hh"
17 A staff walker which uses registers to decide what to print
19 class Complex_walker
: public Staff_walker
{
20 bool try_command_request(Command_req
*req_l
);
21 void do_change_group( Voice
* v
, String group_id_str
);
23 void try_request(Request
*req
);
26 Array
<Item
*> prebreak_item_p_arr_
;
27 Array
<Item
*> nobreak_item_p_arr_
;
28 Array
<Item
*> postbreak_item_p_arr_
;
32 IPointerList
<Voice_registers
*> voice_reg_list_
;
33 IPointerList
<Voice_group_registers
*> group_reg_list_
;
34 Assoc
<Voice
*, Voice_group_registers
*> voice_group_map_
;
36 Array
<Staff_elem_info
> announce_info_arr_
;
37 Walker_registers
*walk_regs_p_
;
41 Voice_registers
*find_voice_reg(Voice
*v_l
)const;
42 Voice_registers
*get_voice_reg(Voice
*v_l
);
44 /** search for voice_group containing #v_l#
47 pointer if found, 0 if not found.
49 Voice_group_registers
*find_voice_group(Voice
* v_l
)const;
51 /// search. Create if necessary
52 Voice_group_registers
*get_voice_group(Voice
* v_l
);
53 /** search for voice_group named #id#
56 pointer if found, 0 if not found.
58 Voice_group_registers
*find_voice_group(const char* id
)const;
61 search for voice_group named #id#, create if necessary
63 Voice_group_registers
*get_voice_group(const char*);
65 Array
<Voice_registers
*> get_voice_regs(Voice_group_registers
*) const;
67 void regs_process_requests();
68 void typeset_breakable_item(Item
* pre_p
,
69 Item
* nobreak_p
, Item
* post_p
);
70 void typeset_element(Staff_elem
*elem_p
);
71 void announce_element(Staff_elem_info
);
72 virtual void process_requests();
73 virtual void do_post_move();
74 virtual void do_pre_move();
76 @return the position of central c.
78 int c0_position_i() const;
81 set the position of central c.
82 @param the new position
84 void set_c0_position(int j
);
85 Complex_walker(Complex_staff
*);
88 Complex_staff
*staff();
93 #endif // COMPLEXWALKER_HH