Mackie Control, Fix sends after monitor not showing.
[ardour.git] / libs / surfaces / mackie / types.h
index 2b47e156408bfb7e2d1e1cf9f5f4d52e73a79aa7..87676ae0f6c8fbeba640bdd3f4dbfc37823daeec 100644 (file)
 #ifndef mackie_types_h
 #define mackie_types_h
 
-namespace Mackie
-{
+#include <iostream>
+
+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