Browse Source

Added touch event generation.

woollybah 10 years ago
parent
commit
156e1d4536
2 changed files with 13 additions and 0 deletions
  1. 10 0
      sdlsystem.mod/glue.c
  2. 3 0
      sdlsystem.mod/sdlsystem.bmx

+ 10 - 0
sdlsystem.mod/glue.c

@@ -48,6 +48,7 @@ int bmx_SDL_GetDisplayhertz(int display) {
 void bmx_SDL_EmitSDLEvent( SDL_Event *event, BBObject *source ) {
 void bmx_SDL_EmitSDLEvent( SDL_Event *event, BBObject *source ) {
 	int data;
 	int data;
 	int mods;
 	int mods;
+	SDL_DisplayMode mode;
 	switch (event->type) {
 	switch (event->type) {
 		case SDL_QUIT:
 		case SDL_QUIT:
 			bbSDLSystemEmitEvent(BBEVENT_APPTERMINATE, source, 0, 0, 0, 0, &bbNullObject);
 			bbSDLSystemEmitEvent(BBEVENT_APPTERMINATE, source, 0, 0, 0, 0, &bbNullObject);
@@ -82,6 +83,15 @@ void bmx_SDL_EmitSDLEvent( SDL_Event *event, BBObject *source ) {
 					brl_event_EmitEvent( event->user.data1 );
 					brl_event_EmitEvent( event->user.data1 );
 					return;
 					return;
 			}
 			}
+		case SDL_FINGERMOTION:
+			SDL_GetWindowDisplayMode(SDL_GL_GetCurrentWindow(), &mode);
+			bbSDLSystemEmitEvent( BBEVENT_TOUCHMOVE, source, event->tfinger.fingerId, 0, event->tfinger.x * mode.w, event->tfinger.y * mode.h, &bbNullObject);
+			return;
+		case SDL_FINGERDOWN:
+		case SDL_FINGERUP:
+			SDL_GetWindowDisplayMode(SDL_GL_GetCurrentWindow(), &mode);
+			bbSDLSystemEmitEvent( (event->type == SDL_FINGERDOWN) ? BBEVENT_TOUCHDOWN : BBEVENT_TOUCHUP, source, event->tfinger.fingerId, 0, event->tfinger.x * mode.w, event->tfinger.y * mode.h, &bbNullObject );
+			return;
 	}	
 	}	
 	
 	
 }
 }

+ 3 - 0
sdlsystem.mod/sdlsystem.bmx

@@ -21,6 +21,9 @@
 '
 '
 Strict
 Strict
 
 
+Rem
+bbdoc: SDL System driver
+End Rem
 Module SDL.SDLSystem
 Module SDL.SDLSystem