X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fgesturedetector.cpp;fp=source%2Finput%2Fgesturedetector.cpp;h=cc027973fdc868a319bdce0fe5db5b312ed742a5;hb=a5be5c703808817dda8feafb03b0aec04b20afbb;hp=d626c5d08efc6dcbd909083651045c7f056c98db;hpb=2d8e49766252749ef586ffd988c9858666c01995;p=libs%2Fgui.git diff --git a/source/input/gesturedetector.cpp b/source/input/gesturedetector.cpp index d626c5d..cc02797 100644 --- a/source/input/gesturedetector.cpp +++ b/source/input/gesturedetector.cpp @@ -26,14 +26,8 @@ GestureDetector::GestureDetector(Touchscreen &ts): string GestureDetector::get_button_name(unsigned btn) const { - if(btn==GESTURE_SWIPE_DOWN) - return "Swipe down"; - else if(btn==GESTURE_SWIPE_UP) - return "Swipe up"; - else if(btn==GESTURE_SWIPE_LEFT) - return "Swipe left"; - else if(btn==GESTURE_SWIPE_RIGHT) - return "Swipe right"; + if(btn==GESTURE_DRAG) + return "Drag"; else if(btn==GESTURE_PINCH) return "Pinch"; else @@ -153,20 +147,10 @@ void GestureDetector::start_gesture() } else { - // Allow a maximum deviation of about 26° to recognize a swipe gesture. - if(abs(p.x)>2*abs(p.y)) - current_gesture = (p.x>0 ? GESTURE_SWIPE_RIGHT : GESTURE_SWIPE_LEFT); - else if(abs(p.y)>2*abs(p.x)) - current_gesture = (p.y>0 ? GESTURE_SWIPE_UP : GESTURE_SWIPE_DOWN); - else - invalid_gesture = true; - - if(current_gesture!=GESTURE_NONE) - { - active_points = 1; - set_axis_value(0, p.down_x, true); - set_axis_value(1, p.down_y, true); - } + current_gesture = GESTURE_DRAG; + active_points = 1; + set_axis_value(0, p.down_x, true); + set_axis_value(1, p.down_y, true); } update_progress(); @@ -179,14 +163,11 @@ void GestureDetector::update_progress() { TouchPoint &p = points[0]; - if(current_gesture==GESTURE_SWIPE_DOWN) - set_axis_value(2, -p.y, true); - else if(current_gesture==GESTURE_SWIPE_UP) - set_axis_value(2, p.y, true); - else if(current_gesture==GESTURE_SWIPE_LEFT) - set_axis_value(2, -p.x, true); - else if(current_gesture==GESTURE_SWIPE_RIGHT) + if(current_gesture==GESTURE_DRAG) + { set_axis_value(2, p.x, true); + set_axis_value(3, p.y, true); + } else if(current_gesture==GESTURE_PINCH) { TouchPoint &p2 = points[1]; @@ -197,6 +178,7 @@ void GestureDetector::update_progress() float dx = ddx+p.x-p2.x; float dy = ddy+p.y-p2.y; set_axis_value(2, sqrt(dx*dx+dy*dy)/sqrt(ddx*ddx+ddy*ddy)-1, true); + set_axis_value(3, 0, true); } }