X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fmackie%2Ftypes.h;h=87676ae0f6c8fbeba640bdd3f4dbfc37823daeec;hb=d0746b8378689268c0fc09e7c9155282ae6c7c38;hp=2b47e156408bfb7e2d1e1cf9f5f4d52e73a79aa7;hpb=99904735e066804358f1d0bd138a84f1e9ecda91;p=ardour.git diff --git a/libs/surfaces/mackie/types.h b/libs/surfaces/mackie/types.h index 2b47e15640..87676ae0f6 100644 --- a/libs/surfaces/mackie/types.h +++ b/libs/surfaces/mackie/types.h @@ -18,8 +18,15 @@ #ifndef mackie_types_h #define mackie_types_h -namespace Mackie -{ +#include + +namespace ArdourSurface { +namespace Mackie { + +enum surface_type_t { + mcu, + ext, +}; /** This started off as an enum, but it got really annoying @@ -29,22 +36,24 @@ class LedState { public: enum state_t { none, off, flashing, on }; - LedState() : _state( none ) {} - LedState( bool yn ): _state( yn ? on : off ) {} - LedState( state_t state ): _state( state ) {} + LedState() : _state (none) {} + LedState (bool yn): _state (yn ? on : off) {} + LedState (state_t state): _state (state) {} + + LedState& operator= (state_t s) { _state = s; return *this; } - bool operator == ( const LedState & other ) const + bool operator == (const LedState & other) const { return state() == other.state(); } - - bool operator != ( const LedState & other ) const + + bool operator != (const LedState & other) const { return state() != other.state(); } - + state_t state() const { return _state; } - + private: state_t _state; }; @@ -62,23 +71,34 @@ enum ButtonState { neither = -1, release = 0, press = 1 }; */ struct ControlState { - ControlState(): pos(0.0), delta(0.0), button_state(neither) {} - - ControlState( LedState ls ): pos(0.0), delta(0.0), led_state(ls), button_state(neither) {} - + ControlState(): pos(0.0), sign(0), delta(0.0), ticks(0), led_state(off), button_state(neither) {} + + ControlState (LedState ls): pos(0.0), delta(0.0), led_state(ls), button_state(neither) {} + // Note that this sets both pos and delta to the flt value - ControlState( LedState ls, float flt ): pos(flt), delta(flt), ticks(0), led_state(ls), button_state(neither) {} - ControlState( float flt ): pos(flt), delta(flt), ticks(0), led_state(none), button_state(neither) {} - ControlState( float flt, int tcks ): pos(flt), delta(flt), ticks(tcks), led_state(none), button_state(neither) {} - ControlState( ButtonState bs ): pos(0.0), delta(0.0), ticks(0), led_state(none), button_state(bs) {} - + ControlState (LedState ls, float flt): pos(flt), delta(flt), ticks(0), led_state(ls), button_state(neither) {} + ControlState (float flt): pos(flt), delta(flt), ticks(0), led_state(none), button_state(neither) {} + ControlState (float flt, unsigned int tcks): pos(flt), delta(flt), ticks(tcks), led_state(none), button_state(neither) {} + ControlState (ButtonState bs): pos(0.0), delta(0.0), ticks(0), led_state(none), button_state(bs) {} + + /// For faders. Between 0 and 1. float pos; + + /// For pots. Sign. Either -1 or 1; + int sign; + + /// For pots. Signed value of total movement. Between 0 and 1 float delta; - int ticks; + + /// For pots. Unsigned number of ticks. Usually between 1 and 16. + unsigned int ticks; + LedState led_state; ButtonState button_state; }; +std::ostream & operator << (std::ostream &, const ControlState &); + class Control; class Fader; class Button; @@ -86,8 +106,8 @@ class Strip; class Group; class Pot; class Led; -class LedRing; +} } #endif