1 #ifndef __ardour_mackie_control_protocol_strip_h__
2 #define __ardour_mackie_control_protocol_strip_h__
7 #include "control_group.h"
18 struct StripControlDefinition {
21 Control* (*factory)(Surface&, int index, int ordinal, const char* name, Group&);
24 struct GlobalControlDefinition {
27 Control* (*factory)(Surface&, int index, int ordinal, const char* name, Group&);
28 const char* group_name;
32 This is the set of controls that make up a strip.
34 class Strip : public Group
37 Strip (const std::string& name, int index); /* master strip only */
38 Strip (Surface&, const std::string & name, int index, int unit_index, StripControlDefinition* ctls);
40 virtual bool is_strip() const { return true; }
41 virtual void add (Control & control);
42 int index() const { return _index; } // zero based
49 Button & fader_touch();
54 bool has_solo() const { return _solo != 0; }
55 bool has_recenable() const { return _recenable != 0; }
56 bool has_mute() const { return _mute != 0; }
57 bool has_select() const { return _select != 0; }
58 bool has_vselect() const { return _vselect != 0; }
59 bool has_fader_touch() const { return _fader_touch != 0; }
60 bool has_vpot() const { return _vpot != 0; }
61 bool has_gain() const { return _gain != 0; }
62 bool has_meter() const { return _meter != 0; }
76 std::ostream & operator << (std::ostream &, const Strip &);
78 class MasterStrip : public Strip
81 MasterStrip (const std::string & name, int index)
82 : Strip (name, index) {}
84 virtual bool is_master() const { return true; }
89 #endif /* __ardour_mackie_control_protocol_strip_h__ */