aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2017-01-14 20:25:07 +0100
committerGitHub <noreply@github.com>2017-01-14 20:25:07 +0100
commit4ea8494f3e03440d0d67db8a3fa77ac50a4b1a36 (patch)
tree44cb303478c891d6e78908f37668e2d186566f48 /src
parent1ca445a9b94674e6c583211af0b0465232b22157 (diff)
parent07a2c00e842723970ace9eb0154e838b47d3fe82 (diff)
downloadraylib-4ea8494f3e03440d0d67db8a3fa77ac50a4b1a36.tar.gz
raylib-4ea8494f3e03440d0d67db8a3fa77ac50a4b1a36.zip
Merge pull request #216 from AudioMorphology/develop
modified: core.c
Diffstat (limited to 'src')
-rw-r--r--src/core.c77
1 files changed, 66 insertions, 11 deletions
diff --git a/src/core.c b/src/core.c
index fdf5d48d..424e5725 100644
--- a/src/core.c
+++ b/src/core.c
@@ -2910,24 +2910,79 @@ static void InitTouch(void)
static void *TouchThread(void *arg)
{
struct input_event ev;
+ GestureEvent gestureEvent;
while (!windowShouldClose)
{
if (read(touchStream, &ev, sizeof(ev)) == (int)sizeof(ev))
{
-
// if pressure > 0 then simulate left mouse button click
- if (ev.type == EV_ABS && ev.code == 24 && ev.value == 0) currentMouseState[0] = 0;
- if (ev.type == EV_ABS && ev.code == 24 && ev.value > 0) currentMouseState[0] = 1;
+ if (ev.type == EV_ABS && ev.code == 24 && ev.value == 0 && currentMouseState[0] == 1)
+ {
+ currentMouseState[0] = 0;
+ gestureEvent.touchAction = TOUCH_UP;
+ gestureEvent.pointCount = 1;
+ gestureEvent.pointerId[0] = 0;
+ gestureEvent.pointerId[1] = 1;
+ gestureEvent.position[0] = (Vector2){ mousePosition.x, mousePosition.y };
+ gestureEvent.position[1] = (Vector2){ mousePosition.x, mousePosition.y };
+ gestureEvent.position[0].x /= (float)GetScreenWidth();
+ gestureEvent.position[0].y /= (float)GetScreenHeight();
+ gestureEvent.position[1].x /= (float)GetScreenWidth();
+ gestureEvent.position[1].y /= (float)GetScreenHeight();
+ ProcessGestureEvent(gestureEvent);
+ }
+ if (ev.type == EV_ABS && ev.code == 24 && ev.value > 0 && currentMouseState[0] == 0)
+ {
+ currentMouseState[0] = 1;
+ gestureEvent.touchAction = TOUCH_DOWN;
+ gestureEvent.pointCount = 1;
+ gestureEvent.pointerId[0] = 0;
+ gestureEvent.pointerId[1] = 1;
+ gestureEvent.position[0] = (Vector2){ mousePosition.x, mousePosition.y };
+ gestureEvent.position[1] = (Vector2){ mousePosition.x, mousePosition.y };
+ gestureEvent.position[0].x /= (float)GetScreenWidth();
+ gestureEvent.position[0].y /= (float)GetScreenHeight();
+ gestureEvent.position[1].x /= (float)GetScreenWidth();
+ gestureEvent.position[1].y /= (float)GetScreenHeight();
+ ProcessGestureEvent(gestureEvent);
+ }
// x & y values supplied by event4 have been scaled & de-jittered using tslib calibration data
- if (ev.type == EV_ABS && ev.code == 0) mousePosition.x = ev.value;
- if (ev.type == EV_ABS && ev.code == 1) mousePosition.y = ev.value;
-
- if (mousePosition.x < 0) mousePosition.x = 0;
- if (mousePosition.y < 0) mousePosition.y = 0;
-
- if (mousePosition.x > screenWidth) mousePosition.x = screenWidth;
- if (mousePosition.y > screenHeight) mousePosition.y = screenHeight;
+ if (ev.type == EV_ABS && ev.code == 0)
+ {
+ mousePosition.x = ev.value;
+ if (mousePosition.x < 0) mousePosition.x = 0;
+ if (mousePosition.x > screenWidth) mousePosition.x = screenWidth;
+ gestureEvent.touchAction = TOUCH_MOVE;
+ gestureEvent.pointCount = 1;
+ gestureEvent.pointerId[0] = 0;
+ gestureEvent.pointerId[1] = 1;
+ gestureEvent.position[0] = (Vector2){ mousePosition.x, mousePosition.y };
+ gestureEvent.position[1] = (Vector2){ mousePosition.x, mousePosition.y };
+ gestureEvent.position[0].x /= (float)GetScreenWidth();
+ gestureEvent.position[0].y /= (float)GetScreenHeight();
+ gestureEvent.position[1].x /= (float)GetScreenWidth();
+ gestureEvent.position[1].y /= (float)GetScreenHeight();
+ ProcessGestureEvent(gestureEvent);
+ }
+ if (ev.type == EV_ABS && ev.code == 1)
+ {
+ mousePosition.y = ev.value;
+ if (mousePosition.y < 0) mousePosition.y = 0;
+ if (mousePosition.y > screenHeight) mousePosition.y = screenHeight;
+ gestureEvent.touchAction = TOUCH_MOVE;
+ gestureEvent.pointCount = 1;
+ gestureEvent.pointerId[0] = 0;
+ gestureEvent.pointerId[1] = 1;
+ gestureEvent.position[0] = (Vector2){ mousePosition.x, mousePosition.y };
+ gestureEvent.position[1] = (Vector2){ mousePosition.x, mousePosition.y };
+ gestureEvent.position[0].x /= (float)GetScreenWidth();
+ gestureEvent.position[0].y /= (float)GetScreenHeight();
+ gestureEvent.position[1].x /= (float)GetScreenWidth();
+ gestureEvent.position[1].y /= (float)GetScreenHeight();
+ ProcessGestureEvent(gestureEvent);
+ }
+
}
}
return NULL;