# HG changeset patch # User jimtla # Date 1280517515 -14400 # Node ID 99b4560b7aa1a2882e04dd5d1ecf5cb4f453ef42 # Parent 641c13b0ce5f380ef01ac57442fa77d195454731 Upgraded touchId/fingerId to long. Changed position variables to floats. diff -r 641c13b0ce5f -r 99b4560b7aa1 include/SDL_events.h --- 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; /* diff -r 641c13b0ce5f -r 99b4560b7aa1 include/SDL_touch.h --- 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 diff -r 641c13b0ce5f -r 99b4560b7aa1 src/events/SDL_touch.c --- 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; } diff -r 641c13b0ce5f -r 99b4560b7aa1 src/events/SDL_touch_c.h --- 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 */ diff -r 641c13b0ce5f -r 99b4560b7aa1 src/video/cocoa/SDL_cocoawindow.m --- 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; diff -r 641c13b0ce5f -r 99b4560b7aa1 src/video/uikit/SDL_uikitview.h --- 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 diff -r 641c13b0ce5f -r 99b4560b7aa1 touchTest/gestureSDLTest.c --- 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