X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fsurfaces%2Fmackie%2Fbutton.h;h=e9cbdd7b4be517765425e4ffb8080856c8248681;hb=3b1d1675de4a73d144ec3e895e542abf9a4e06e1;hp=61f09d7a038bad5dfe54827224248dbeb8fd99c3;hpb=72416e94322107d98ab651c33af6c11940e7095e;p=ardour.git diff --git a/libs/surfaces/mackie/button.h b/libs/surfaces/mackie/button.h index 61f09d7a03..e9cbdd7b4b 100644 --- a/libs/surfaces/mackie/button.h +++ b/libs/surfaces/mackie/button.h @@ -20,6 +20,8 @@ #ifndef __ardour_mackie_control_protocol_button_h__ #define __ardour_mackie_control_protocol_button_h__ +#include "ardour/types.h" + #include "controls.h" #include "led.h" @@ -39,7 +41,7 @@ public: enum ID { /* Global Buttons */ - + Track, Send, Pan, @@ -111,7 +113,7 @@ public: CmdAlt, /* Strip buttons */ - + RecEnable, Solo, Mute, @@ -125,23 +127,34 @@ public: }; - Button (ID bid, int did, std::string name, Group & group) + Button (Surface& s, ID bid, int did, std::string name, Group & group) : Control (did, name, group) + , _surface (s) , _bid (bid) - , _led (did, name + "_led", group) {} - + , _led (did, name + "_led", group) + , press_time (0) {} + MidiByteArray zero() { return _led.zero (); } MidiByteArray set_state (LedState ls) { return _led.set_state (ls); } - + ID bid() const { return _bid; } - + static Control* factory (Surface& surface, Button::ID bid, int id, const std::string&, Group& group); static int name_to_id (const std::string& name); static std::string id_to_name (Button::ID); + Surface& surface() const { return _surface; } + + void pressed (); + void released (); + + int32_t long_press_count (); + private: + Surface& _surface; ID _bid; /* device independent button ID */ Led _led; + ARDOUR::microseconds_t press_time; }; } // Mackie namespace