summaryrefslogtreecommitdiff
path: root/libs/surfaces/mackie/types.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/surfaces/mackie/types.h')
-rw-r--r--libs/surfaces/mackie/types.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/libs/surfaces/mackie/types.h b/libs/surfaces/mackie/types.h
new file mode 100644
index 0000000000..2b47e15640
--- /dev/null
+++ b/libs/surfaces/mackie/types.h
@@ -0,0 +1,93 @@
+/*
+ Copyright (C) 2006,2007 John Anderson
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+#ifndef mackie_types_h
+#define mackie_types_h
+
+namespace Mackie
+{
+
+/**
+ This started off as an enum, but it got really annoying
+ typing ? on : off
+*/
+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 ) {}
+
+ bool operator == ( const LedState & other ) const
+ {
+ return state() == other.state();
+ }
+
+ bool operator != ( const LedState & other ) const
+ {
+ return state() != other.state();
+ }
+
+ state_t state() const { return _state; }
+
+private:
+ state_t _state;
+};
+
+extern LedState on;
+extern LedState off;
+extern LedState flashing;
+extern LedState none;
+
+enum ButtonState { neither = -1, release = 0, press = 1 };
+
+/**
+ Contains the state for a control, with some convenience
+ constructors
+*/
+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) {}
+
+ // 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) {}
+
+ float pos;
+ float delta;
+ int ticks;
+ LedState led_state;
+ ButtonState button_state;
+};
+
+class Control;
+class Fader;
+class Button;
+class Strip;
+class Group;
+class Pot;
+class Led;
+class LedRing;
+
+}
+
+#endif