fully tear down Mackie GUI when disabling mackie
[ardour.git] / libs / surfaces / mackie / jog_wheel.cc
1 #include <cmath>
2
3 #include "ardour/session.h"
4
5 #include "jog_wheel.h"
6 #include "mackie_control_protocol.h"
7 #include "surface_port.h"
8 #include "controls.h"
9 #include "surface.h"
10
11 #include <algorithm>
12
13 using namespace Mackie;
14
15 JogWheel::JogWheel (MackieControlProtocol & mcp)
16   : _mcp (mcp)
17   , _mode (scroll)
18 {
19 }
20
21 void
22 JogWheel::set_mode (Mode m)
23 {
24         _mode = m;
25 }
26
27 void JogWheel::jog_event (float delta)
28 {
29         if (_mcp.zoom_mode()) {
30                 if  (delta > 0) {
31                         for  (unsigned int i = 0; i < fabs (delta); ++i) {
32                                 _mcp.ZoomIn();
33                         }
34                 } else {
35                         for  (unsigned int i = 0; i < fabs (delta); ++i) {
36                                 _mcp.ZoomOut();
37                         }
38                 }
39                 return;
40         }
41
42         switch  (_mode) {
43         case scroll:
44                 _mcp.ScrollTimeline (delta/4.0);
45                 break;
46         default:
47                 break;
48         }
49 }
50