]> git.tdb.fi Git - libs/gui.git/blobdiff - source/input/binarycontrol.cpp
Keep track of edges in Control
[libs/gui.git] / source / input / binarycontrol.cpp
index 9bf24083850630981ca75656a91af319df84827f..09efe40ac74f32500660030088b389076fdc5409 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of libmspgbase
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #include "binarycontrol.h"
 #include "device.h"
 
@@ -12,24 +5,36 @@ namespace Msp {
 namespace Input {
 
 BinaryControl::BinaryControl():
-       state(false)
+       state(false),
+       threshold(0.5)
 { }
 
 BinaryControl::BinaryControl(const ControlSource &s):
        Control(s),
-       state(false)
+       state(false),
+       threshold(0.5)
 { }
 
 BinaryControl::BinaryControl(Device &d, ControlSrcType t, unsigned i):
        Control(d, t, i),
-       state(false)
+       state(false),
+       threshold(0.5)
+{ }
+
+BinaryControl::~BinaryControl()
 { }
 
+void BinaryControl::set_threshold(float t)
+{
+       threshold = t;
+}
+
 void BinaryControl::on_press()
 {
        if(!state)
        {
-               state=true;
+               state = true;
+               rising_edge = true;
                signal_press.emit();
        }
 }
@@ -38,14 +43,15 @@ void BinaryControl::on_release()
 {
        if(state)
        {
-               state=false;
+               state = false;
+               falling_edge = true;
                signal_release.emit();
        }
 }
 
 void BinaryControl::on_motion(float value, float)
 {
-       if(value>src.dev->get_axis_threshold())
+       if(value>threshold)
                on_press();
        else
                on_release();