#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
{
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;
};
*/
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;
class Group;
class Pot;
class Led;
-class LedRing;
+}
}
#endif