summaryrefslogtreecommitdiff
path: root/libs/surfaces/mackie/mackie_jog_wheel.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-04-10 14:27:44 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-04-10 14:27:44 +0000
commit5ace191bff634c0b09eca5e69065afcb7d0cb183 (patch)
tree26c7a337e87c2f3e419923016342b1b1b06dbcd6 /libs/surfaces/mackie/mackie_jog_wheel.cc
parentac7ade93bda207d60a5276f8fea5a1f01567095b (diff)
drastic, fundamental redesign of MCP code
git-svn-id: svn://localhost/ardour2/branches/3.0@11861 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/mackie/mackie_jog_wheel.cc')
-rw-r--r--libs/surfaces/mackie/mackie_jog_wheel.cc70
1 files changed, 35 insertions, 35 deletions
diff --git a/libs/surfaces/mackie/mackie_jog_wheel.cc b/libs/surfaces/mackie/mackie_jog_wheel.cc
index 95ab97c5f7..8439c68fe7 100644
--- a/libs/surfaces/mackie/mackie_jog_wheel.cc
+++ b/libs/surfaces/mackie/mackie_jog_wheel.cc
@@ -14,17 +14,17 @@
using namespace Mackie;
using std::isnan;
-JogWheel::JogWheel( MackieControlProtocol & mcp )
-: _mcp( mcp )
-, _transport_speed( 4.0 )
-, _transport_direction( 0 )
-, _shuttle_speed( 0.0 )
+JogWheel::JogWheel (MackieControlProtocol & mcp)
+: _mcp (mcp)
+, _transport_speed (4.0)
+, _transport_direction (0)
+, _shuttle_speed (0.0)
{
}
JogWheel::State JogWheel::jog_wheel_state() const
{
- if ( !_jog_wheel_states.empty() )
+ if (!_jog_wheel_states.empty())
return _jog_wheel_states.top();
else
return scroll;
@@ -49,28 +49,28 @@ void JogWheel::scroll_event (SurfacePort &, Control &, const ControlState &)
void JogWheel::jog_event (SurfacePort &, Control &, const ControlState & state)
{
// TODO use current snap-to setting?
- switch ( jog_wheel_state() )
+ switch (jog_wheel_state())
{
case scroll:
- _mcp.ScrollTimeline( state.delta * state.sign );
+ _mcp.ScrollTimeline (state.delta * state.sign);
break;
case zoom:
// Chunky Zoom.
// TODO implement something similar to ScrollTimeline which
// ends up in Editor::control_scroll for smoother zooming.
- if ( state.sign > 0 )
- for ( unsigned int i = 0; i < state.ticks; ++i ) _mcp.ZoomIn();
+ if (state.sign > 0)
+ for (unsigned int i = 0; i < state.ticks; ++i) _mcp.ZoomIn();
else
- for ( unsigned int i = 0; i < state.ticks; ++i ) _mcp.ZoomOut();
+ for (unsigned int i = 0; i < state.ticks; ++i) _mcp.ZoomOut();
break;
case speed:
// locally, _transport_speed is an positive value
- _transport_speed += _mcp.surface().scaled_delta( state, _mcp.get_session().transport_speed() );
+ _transport_speed += _mcp.surfaces.front()->scaled_delta (state, _mcp.get_session().transport_speed());
// make sure no weirdness gets to the session
- if ( _transport_speed < 0 || isnan( _transport_speed ) )
+ if (_transport_speed < 0 || isnan (_transport_speed))
{
_transport_speed = 0.0;
}
@@ -81,11 +81,11 @@ void JogWheel::jog_event (SurfacePort &, Control &, const ControlState & state)
case scrub:
{
- if ( state.sign != 0 )
+ if (state.sign != 0)
{
- add_scrub_interval( _scrub_timer.restart() );
+ add_scrub_interval (_scrub_timer.restart());
// x clicks per second => speed == 1.0
- float speed = _mcp.surface().scrub_scaling_factor() / average_scrub_interval() * state.ticks;
+ float speed = _mcp.surfaces.front()->scrub_scaling_factor() / average_scrub_interval() * state.ticks;
_mcp.get_session().request_transport_speed_nonzero (speed * state.sign);
}
else
@@ -98,7 +98,7 @@ void JogWheel::jog_event (SurfacePort &, Control &, const ControlState & state)
case shuttle:
_shuttle_speed = _mcp.get_session().transport_speed();
- _shuttle_speed += _mcp.surface().scaled_delta( state, _mcp.get_session().transport_speed() );
+ _shuttle_speed += _mcp.surfaces.front()->scaled_delta (state, _mcp.get_session().transport_speed());
_mcp.get_session().request_transport_speed_nonzero (_shuttle_speed);
break;
@@ -111,21 +111,21 @@ void JogWheel::jog_event (SurfacePort &, Control &, const ControlState & state)
void JogWheel::check_scrubbing()
{
// if the last elapsed is greater than the average + std deviation, then stop
- if ( !_scrub_intervals.empty() && _scrub_timer.elapsed() > average_scrub_interval() + std_dev_scrub_interval() )
+ if (!_scrub_intervals.empty() && _scrub_timer.elapsed() > average_scrub_interval() + std_dev_scrub_interval())
{
- _mcp.get_session().request_transport_speed( 0.0 );
+ _mcp.get_session().request_transport_speed (0.0);
_scrub_intervals.clear();
}
}
-void JogWheel::push( State state )
+void JogWheel::push (State state)
{
- _jog_wheel_states.push( state );
+ _jog_wheel_states.push (state);
}
void JogWheel::pop()
{
- if ( _jog_wheel_states.size() > 0 )
+ if (_jog_wheel_states.size() > 0)
{
_jog_wheel_states.pop();
}
@@ -133,23 +133,23 @@ void JogWheel::pop()
void JogWheel::zoom_state_toggle()
{
- if ( jog_wheel_state() == zoom )
+ if (jog_wheel_state() == zoom)
pop();
else
- push( zoom );
+ push (zoom);
}
JogWheel::State JogWheel::scrub_state_cycle()
{
State top = jog_wheel_state();
- if ( top == scrub )
+ if (top == scrub)
{
// stop scrubbing and go to shuttle
pop();
- push( shuttle );
+ push (shuttle);
_shuttle_speed = 0.0;
}
- else if ( top == shuttle )
+ else if (top == shuttle)
{
// default to scroll, or the last selected
pop();
@@ -157,25 +157,25 @@ JogWheel::State JogWheel::scrub_state_cycle()
else
{
// start with scrub
- push( scrub );
+ push (scrub);
}
return jog_wheel_state();
}
-void JogWheel::add_scrub_interval( unsigned long elapsed )
+void JogWheel::add_scrub_interval (unsigned long elapsed)
{
- if ( _scrub_intervals.size() > 5 )
+ if (_scrub_intervals.size() > 5)
{
_scrub_intervals.pop_front();
}
- _scrub_intervals.push_back( elapsed );
+ _scrub_intervals.push_back (elapsed);
}
float JogWheel::average_scrub_interval()
{
float sum = 0.0;
- for ( std::deque<unsigned long>::iterator it = _scrub_intervals.begin(); it != _scrub_intervals.end(); ++it )
+ for (std::deque<unsigned long>::iterator it = _scrub_intervals.begin(); it != _scrub_intervals.end(); ++it)
{
sum += *it;
}
@@ -188,9 +188,9 @@ float JogWheel::std_dev_scrub_interval()
// calculate standard deviation
float sum = 0.0;
- for ( std::deque<unsigned long>::iterator it = _scrub_intervals.begin(); it != _scrub_intervals.end(); ++it )
+ for (std::deque<unsigned long>::iterator it = _scrub_intervals.begin(); it != _scrub_intervals.end(); ++it)
{
- sum += pow( *it - average, 2 );
+ sum += pow (*it - average, 2);
}
- return sqrt( sum / _scrub_intervals.size() -1 );
+ return sqrt (sum / _scrub_intervals.size() -1);
}