changeset 4676:99b4560b7aa1

Upgraded touchId/fingerId to long. Changed position variables to floats.
author jimtla
date Fri, 30 Jul 2010 23:18:35 +0400
parents 641c13b0ce5f
children 31607094315c
files include/SDL_events.h include/SDL_touch.h src/events/SDL_touch.c src/events/SDL_touch_c.h src/video/cocoa/SDL_cocoawindow.m src/video/uikit/SDL_uikitview.h touchTest/gestureSDLTest.c
diffstat 7 files changed, 69 insertions(+), 78 deletions(-) [+]
line wrap: on
line diff
--- a/include/SDL_events.h	Thu Jul 29 12:26:59 2010 -0400
+++ b/include/SDL_events.h	Fri Jul 30 23:18:35 2010 +0400
@@ -288,12 +288,14 @@
     Uint32 type;        /**< ::SDL_FINGERMOTION OR 
 			   SDL_FINGERDOWN OR SDL_FINGERUP*/
     Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint8 touchId;        /**< The touch device id */
+    long touchId;        /**< The touch device id */
+    long fingerId;
     Uint8 state;        /**< The current button state */
-    Uint8 fingerId;
     Uint8 padding1;
-    int x;
-    int y;
+    Uint8 padding2;
+    Uint8 padding3;
+    float x;
+    float y;
     int pressure;
 } SDL_TouchFingerEvent;
 
@@ -305,11 +307,11 @@
 {
     Uint32 type;        /**< ::SDL_TOUCHBUTTONUP OR SDL_TOUCHBUTTONDOWN */
     Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint8 touchId;        /**< The touch device index */
+    long touchId;        /**< The touch device index */
     Uint8 state;        /**< The current button state */
     Uint8 button;        /**< The button changing state */
     Uint8 padding1;
-
+    Uint8 padding2;
 } SDL_TouchButtonEvent;
 
 
@@ -321,10 +323,7 @@
 {
     Uint32 type;        /**< ::SDL_MULTIGESTURE */
     Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint8 touchId;        /**< The touch device index */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
+    long touchId;        /**< The touch device index */
     float dTheta;
     float dDist;
     float x;  //currently 0...1. Change to screen coords?
@@ -336,10 +335,7 @@
 {
     Uint32 type;        /**< ::SDL_DOLLARGESTURE */
     Uint32 windowID;    /**< The window with mouse focus, if any */
-    Uint8 touchId;        /**< The touch device index */
-    Uint8 padding1;
-    Uint8 padding2;
-    Uint8 padding3;
+    long touchId;        /**< The touch device index */
     unsigned long gestureId;
     float error;
   /*
--- a/include/SDL_touch.h	Thu Jul 29 12:26:59 2010 -0400
+++ b/include/SDL_touch.h	Fri Jul 30 23:18:35 2010 +0400
@@ -43,15 +43,14 @@
 
 
 struct SDL_Finger {
-  int id;
-  int x;
-  int y;
-  int z;                      /* for future use */
-  int xdelta;
-  int ydelta;
-  int last_x, last_y,last_pressure;  /* the last reported coordinates */
+  long id;
+  float x;
+  float y;
+  float xdelta;
+  float ydelta;
+  float last_x, last_y,last_pressure;  /* the last reported coordinates */
   SDL_bool down;
-  int pressure;
+  float pressure;
 };
 
 typedef struct SDL_Touch SDL_Touch;
@@ -64,15 +63,15 @@
   void (*FreeTouch) (SDL_Touch * touch);
   
   /* data common for tablets */
-  int pressure_max, pressure_min;
-  int x_max,x_min;
-  int y_max,y_min;
-  int xres,yres,pressureres;
-  int tilt;                   /* for future use */
-  int rotation;               /* for future use */
+  float pressure_max, pressure_min;
+  float x_max,x_min;
+  float y_max,y_min;
+  float xres,yres,pressureres;
+  float tilt;                   /* for future use */
+  float rotation;               /* for future use */
   
   /* Data common to all touch */
-  int id;
+  long id;
   SDL_Window *focus;
   
   char *name;
@@ -96,7 +95,7 @@
  *
  *
  */
-  extern DECLSPEC SDL_Touch* SDLCALL SDL_GetTouch(int id);
+  extern DECLSPEC SDL_Touch* SDLCALL SDL_GetTouch(long id);
 
 
 
@@ -105,7 +104,7 @@
  *
  *
  */
-  extern DECLSPEC SDL_Finger* SDLCALL SDL_GetFinger(SDL_Touch *touch, int id);
+  extern DECLSPEC SDL_Finger* SDLCALL SDL_GetFinger(SDL_Touch *touch, long id);
 
 /* Ends C function definitions when using C++ */
 #ifdef __cplusplus
--- a/src/events/SDL_touch.c	Thu Jul 29 12:26:59 2010 -0400
+++ b/src/events/SDL_touch.c	Fri Jul 30 23:18:35 2010 +0400
@@ -42,7 +42,7 @@
 }
 
 SDL_Touch *
-SDL_GetTouch(int id)
+SDL_GetTouch(long id)
 {
     int index = SDL_GetTouchIndexId(id);
     if (index < 0 || index >= SDL_num_touch) {
@@ -61,7 +61,7 @@
 }
 
 int
-SDL_GetFingerIndexId(SDL_Touch* touch,int fingerid)
+SDL_GetFingerIndexId(SDL_Touch* touch,long fingerid)
 {
     int i;
     for(i = 0;i < touch->num_fingers;i++)
@@ -72,7 +72,7 @@
 
 
 SDL_Finger *
-SDL_GetFinger(SDL_Touch* touch,int id)
+SDL_GetFinger(SDL_Touch* touch,long id)
 {
     int index = SDL_GetFingerIndexId(touch,id);
     if(index < 0 || index >= touch->num_fingers)
@@ -82,7 +82,7 @@
 
 
 int
-SDL_GetTouchIndexId(int id)
+SDL_GetTouchIndexId(long id)
 {
     int index;
     SDL_Touch *touch;
@@ -146,7 +146,7 @@
 }
 
 void
-SDL_DelTouch(int id)
+SDL_DelTouch(long id)
 {
     int index = SDL_GetTouchIndexId(id);
     SDL_Touch *touch = SDL_GetTouch(id);
@@ -189,7 +189,7 @@
     return SDL_num_touch;
 }
 SDL_Window *
-SDL_GetTouchFocusWindow(int id)
+SDL_GetTouchFocusWindow(long id)
 {
     SDL_Touch *touch = SDL_GetTouch(id);
 
@@ -200,7 +200,7 @@
 }
 
 void
-SDL_SetTouchFocus(int id, SDL_Window * window)
+SDL_SetTouchFocus(long id, SDL_Window * window)
 {
     int index = SDL_GetTouchIndexId(id);
     SDL_Touch *touch = SDL_GetTouch(id);
@@ -250,12 +250,12 @@
 }
 
 int 
-SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger)
+SDL_AddFinger(SDL_Touch* touch,SDL_Finger finger)
 {
     int index;
     SDL_Finger **fingers;
     //printf("Adding Finger...\n");
-    if (SDL_GetFingerIndexId(touch,finger->id) != -1) {
+    if (SDL_GetFingerIndexId(touch,finger.id) != -1) {
         SDL_SetError("Finger ID already in use");
 	}
 
@@ -282,14 +282,14 @@
         SDL_OutOfMemory();
         return -1;
     }
-    *(touch->fingers[index]) = *finger;
+    *(touch->fingers[index]) = finger;
     touch->num_fingers++;
 
     return index;
 }
 
 int
-SDL_DelFinger(SDL_Touch* touch,int fingerid)
+SDL_DelFinger(SDL_Touch* touch,long fingerid)
 {
     int index = SDL_GetFingerIndexId(touch,fingerid);
     SDL_Finger* finger = SDL_GetFinger(touch,fingerid);
@@ -307,7 +307,7 @@
 
 
 int
-SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressure)
+SDL_SendFingerDown(long id, long fingerid, SDL_bool down, float x, float y, float pressure)
 {
     int posted;
     SDL_Touch* touch = SDL_GetTouch(id);
@@ -330,7 +330,7 @@
 	    nf.last_y = y;
 	    nf.last_pressure = pressure;
 	    nf.down = SDL_FALSE;
-	    SDL_AddFinger(touch,&nf);
+	    SDL_AddFinger(touch,nf);
 	    finger = &nf;
 	}
 	else if(finger->down) return 0;
@@ -339,7 +339,7 @@
 	if (SDL_GetEventState(SDL_FINGERDOWN) == SDL_ENABLE) {
 	    SDL_Event event;
 	    event.tfinger.type = SDL_FINGERDOWN;
-	    event.tfinger.touchId = (Uint8) id;
+	    event.tfinger.touchId = id;
 	    event.tfinger.x = x;
 	    event.tfinger.y = y;
 	    event.tfinger.state = touch->buttonstate;
@@ -356,7 +356,7 @@
 	if (SDL_GetEventState(SDL_FINGERUP) == SDL_ENABLE) {
 	    SDL_Event event;
 	    event.tfinger.type = SDL_FINGERUP;
-	    event.tfinger.touchId = (Uint8) id;
+	    event.tfinger.touchId =  id;
 	    event.tfinger.state = touch->buttonstate;
 	    event.tfinger.windowID = touch->focus ? touch->focus->id : 0;
 	    event.tfinger.fingerId = fingerid;
@@ -367,16 +367,16 @@
 }
 
 int
-SDL_SendTouchMotion(int id, int fingerid, int relative, 
-		    int x, int y, int pressure)
+SDL_SendTouchMotion(long id, long fingerid, int relative, 
+		    float x, float y, float pressure)
 {
     int index = SDL_GetTouchIndexId(id);
     SDL_Touch *touch = SDL_GetTouch(id);
     SDL_Finger *finger = SDL_GetFinger(touch,fingerid);
     int posted;
-    int xrel;
-    int yrel;
-    int x_max = 0, y_max = 0;
+    float xrel;
+    float yrel;
+    float x_max = 0, y_max = 0;
     
     if (!touch) {
       return SDL_TouchNotFoundError(id);
@@ -444,8 +444,8 @@
 	if (SDL_GetEventState(SDL_FINGERMOTION) == SDL_ENABLE) {
 	    SDL_Event event;
 	    event.tfinger.type = SDL_FINGERMOTION;
-	    event.tfinger.touchId = (Uint8) id;
-	    event.tfinger.fingerId = (Uint8) fingerid;
+	    event.tfinger.touchId = id;
+	    event.tfinger.fingerId = fingerid;
 	    event.tfinger.x = x;
 	    event.tfinger.y = y;
 	    event.tfinger.pressure = pressure;
@@ -460,7 +460,7 @@
     }
 }
 int
-SDL_SendTouchButton(int id, Uint8 state, Uint8 button)
+SDL_SendTouchButton(long id, Uint8 state, Uint8 button)
 {
     SDL_Touch *touch = SDL_GetTouch(id);
     int posted;
@@ -499,7 +499,7 @@
     if (SDL_GetEventState(type) == SDL_ENABLE) {
         SDL_Event event;
         event.type = type;
-        event.tbutton.touchId = (Uint8) touch->id;
+        event.tbutton.touchId = touch->id;
         event.tbutton.state = state;
         event.tbutton.button = button;
         event.tbutton.windowID = touch->focus ? touch->focus->id : 0;
@@ -509,7 +509,7 @@
 }
 
 char *
-SDL_GetTouchName(int id)
+SDL_GetTouchName(long id)
 {
     SDL_Touch *touch = SDL_GetTouch(id);
     if (!touch) {
@@ -518,12 +518,12 @@
     return touch->name;
 }
 
-int SDL_TouchNotFoundError(int id) {
-  printf("ERROR: Cannot send touch on non-existent device with id: %i make sure SDL_AddTouch has been called\n",id);
+int SDL_TouchNotFoundError(long id) {
+  printf("ERROR: Cannot send touch on non-existent device with id: %li make sure SDL_AddTouch has been called\n",id);
   printf("ERROR: There are %i touches installed with Id's:\n",SDL_num_touch);
   int i;
   for(i=0;i < SDL_num_touch;i++) {
-    printf("ERROR: %i\n",SDL_touchPads[i]->id);
+    printf("ERROR: %li\n",SDL_touchPads[i]->id);
   }
   return 0;
 }
--- a/src/events/SDL_touch_c.h	Thu Jul 29 12:26:59 2010 -0400
+++ b/src/events/SDL_touch_c.h	Fri Jul 30 23:18:35 2010 +0400
@@ -34,13 +34,13 @@
 extern SDL_Touch *SDL_GetTouchIndex(int index);
 
 /* Get the touch with id = id */
-extern SDL_Touch *SDL_GetTouch(int id);
+extern SDL_Touch *SDL_GetTouch(long id);
 
 /*Get the finger at an index */
 extern SDL_Finger *SDL_GetFingerIndex(SDL_Touch *touch, int index);
 
 /* Get the finger with id = id */
-extern SDL_Finger *SDL_GetFinger(SDL_Touch *touch,int id);
+extern SDL_Finger *SDL_GetFinger(SDL_Touch *touch,long id);
 
 
 /* Add a touch, possibly reattaching at a particular index (or -1),
@@ -49,26 +49,23 @@
                      
 
 /* Remove a touch at an index, clearing the slot for later */
-extern void SDL_DelTouch(int index);
+extern void SDL_DelTouch(long id);
 
 /* Set the touch focus window */
-extern void SDL_SetTouchFocus(int id, SDL_Window * window);
+extern void SDL_SetTouchFocus(long id, SDL_Window * window);
 
 /* Send a touch motion event for a touch */
-extern int SDL_SendTouchMotion(int id, int fingerid,
-			       int relative, int x, int y, int z);
+extern int SDL_SendTouchMotion(long id, long fingerid,
+			       int relative, float x, float y, float z);
 
 /* Send a touch button event for a touch */
-extern int SDL_SendTouchButton(int id, Uint8 state, Uint8 button);
+extern int SDL_SendTouchButton(long id, Uint8 state, Uint8 button);
 
 /* Shutdown the touch subsystem */
 extern void SDL_TouchQuit(void);
 
 /* Get the index of a touch device */
-extern int SDL_GetTouchIndexId(int id);
-
-
-
+extern int SDL_GetTouchIndexId(long id);
 
 #endif /* _SDL_touch_c_h */
 
--- a/src/video/cocoa/SDL_cocoawindow.m	Thu Jul 29 12:26:59 2010 -0400
+++ b/src/video/cocoa/SDL_cocoawindow.m	Fri Jul 30 23:18:35 2010 +0400
@@ -27,7 +27,6 @@
 #include "../../events/SDL_mouse_c.h"
 #include "../../events/SDL_touch_c.h"
 #include "../../events/SDL_windowevents_c.h"
-
 #include "SDL_cocoavideo.h"
 
 static __inline__ void ConvertNSRect(NSRect *r)
@@ -299,7 +298,7 @@
     while (touch) {
         long touchId = (long)[touch device];
         if (!SDL_GetTouch(touchId)) {
-	  printf("Adding touch: %i\n",touchId)
+	  printf("Adding touch: %li\n",touchId);
             SDL_Touch touch;
 
             touch.id = touchId;
@@ -316,7 +315,7 @@
             if (SDL_AddTouch(&touch, "") < 0) {
                 continue;
             }
-	    printf("Success, added touch: %i\n",touchId)
+	    printf("Success, added touch: %lin",touchId);
         } 
         float x = [touch normalizedPosition].x;
         float y = [touch normalizedPosition].y;
--- a/src/video/uikit/SDL_uikitview.h	Thu Jul 29 12:26:59 2010 -0400
+++ b/src/video/uikit/SDL_uikitview.h	Fri Jul 30 23:18:35 2010 +0400
@@ -35,7 +35,7 @@
 #endif
 
 #if FIXED_MULTITOUCH
-	int touchId;
+	long touchId;
 #ifndef IPHONE_TOUCH_EFFICIENT_DANGEROUS
 	UITouch *finger[MAX_SIMULTANEOUS_TOUCHES];
 #endif
--- a/touchTest/gestureSDLTest.c	Thu Jul 29 12:26:59 2010 -0400
+++ b/touchTest/gestureSDLTest.c	Fri Jul 30 23:18:35 2010 +0400
@@ -28,7 +28,7 @@
 
 int colors[7] = {0xFF,0xFF00,0xFF0000,0xFFFF00,0x00FFFF,0xFF00FF,0xFFFFFF};
 
-int index2fingerid[MAXFINGERS];
+long index2fingerid[MAXFINGERS];
 int fingersDown;
 
 typedef struct {
@@ -38,7 +38,7 @@
 typedef struct {
   Point p;
   float pressure;
-  int id;
+  long id;
 } Finger;
 
 typedef struct {
@@ -378,7 +378,7 @@
 	    
 	    break;	    
 	  case SDL_FINGERDOWN:
-	    printf("Finger: %i down - x: %i, y: %i\n",event.tfinger.fingerId,
+	    printf("Finger: %li down - x: %f, y: %f\n",event.tfinger.fingerId,
 		   event.tfinger.x,event.tfinger.y);
 
 	    for(i = 0;i<MAXFINGERS;i++) 
@@ -390,7 +390,7 @@
 	    finger[i].p.y = event.tfinger.y;
 	    break;
 	  case SDL_FINGERUP:
-	    printf("Figner: %i up - x: %i, y: %i\n",event.tfinger.fingerId,
+	    printf("Figner: %li up - x: %f, y: %f\n",event.tfinger.fingerId,
 	           event.tfinger.x,event.tfinger.y);
 	    for(i = 0;i<MAXFINGERS;i++) 
 	      if(index2fingerid[i] == event.tfinger.fingerId) {