Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Upgraded touchId/fingerId to long. Changed position variables to floats.
Browse files Browse the repository at this point in the history
  • Loading branch information
jimtla committed Jul 30, 2010
1 parent 15e0ee7 commit 2677e0b
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 78 deletions.
24 changes: 10 additions & 14 deletions include/SDL_events.h
Expand Up @@ -288,12 +288,14 @@ typedef struct SDL_TouchFingerEvent
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;

Expand All @@ -305,11 +307,11 @@ typedef struct SDL_TouchButtonEvent
{
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;


Expand All @@ -321,10 +323,7 @@ typedef struct SDL_MultiGestureEvent
{
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?
Expand All @@ -336,10 +335,7 @@ typedef struct SDL_DollarGestureEvent
{
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;
/*
Expand Down
33 changes: 16 additions & 17 deletions include/SDL_touch.h
Expand Up @@ -43,15 +43,14 @@ extern "C" {


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;
Expand All @@ -64,15 +63,15 @@ struct SDL_Touch {
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;
Expand All @@ -96,7 +95,7 @@ struct SDL_Touch {
*
*
*/
extern DECLSPEC SDL_Touch* SDLCALL SDL_GetTouch(int id);
extern DECLSPEC SDL_Touch* SDLCALL SDL_GetTouch(long id);



Expand All @@ -105,7 +104,7 @@ struct SDL_Touch {
*
*
*/
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
Expand Down
56 changes: 28 additions & 28 deletions src/events/SDL_touch.c
Expand Up @@ -42,7 +42,7 @@ SDL_TouchInit(void)
}

SDL_Touch *
SDL_GetTouch(int id)
SDL_GetTouch(long id)
{
int index = SDL_GetTouchIndexId(id);
if (index < 0 || index >= SDL_num_touch) {
Expand All @@ -61,7 +61,7 @@ SDL_GetTouchIndex(int index)
}

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++)
Expand All @@ -72,7 +72,7 @@ SDL_GetFingerIndexId(SDL_Touch* touch,int fingerid)


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)
Expand All @@ -82,7 +82,7 @@ SDL_GetFinger(SDL_Touch* touch,int id)


int
SDL_GetTouchIndexId(int id)
SDL_GetTouchIndexId(long id)
{
int index;
SDL_Touch *touch;
Expand Down Expand Up @@ -146,7 +146,7 @@ SDL_AddTouch(const SDL_Touch * touch, char *name)
}

void
SDL_DelTouch(int id)
SDL_DelTouch(long id)
{
int index = SDL_GetTouchIndexId(id);
SDL_Touch *touch = SDL_GetTouch(id);
Expand Down Expand Up @@ -189,7 +189,7 @@ SDL_GetNumTouch(void)
return SDL_num_touch;
}
SDL_Window *
SDL_GetTouchFocusWindow(int id)
SDL_GetTouchFocusWindow(long id)
{
SDL_Touch *touch = SDL_GetTouch(id);

Expand All @@ -200,7 +200,7 @@ SDL_GetTouchFocusWindow(int id)
}

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);
Expand Down Expand Up @@ -250,12 +250,12 @@ SDL_SetTouchFocus(int id, SDL_Window * window)
}

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");
}

Expand All @@ -282,14 +282,14 @@ SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger)
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);
Expand All @@ -307,7 +307,7 @@ SDL_DelFinger(SDL_Touch* touch,int fingerid)


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);
Expand All @@ -330,7 +330,7 @@ SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressu
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;
Expand All @@ -339,7 +339,7 @@ SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressu
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;
Expand All @@ -356,7 +356,7 @@ SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressu
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;
Expand All @@ -367,16 +367,16 @@ SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressu
}

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);
Expand Down Expand Up @@ -444,8 +444,8 @@ SDL_SendTouchMotion(int id, int fingerid, int relative,
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;
Expand All @@ -460,7 +460,7 @@ SDL_SendTouchMotion(int id, int fingerid, int relative,
}
}
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;
Expand Down Expand Up @@ -499,7 +499,7 @@ SDL_SendTouchButton(int id, Uint8 state, Uint8 button)
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;
Expand All @@ -509,7 +509,7 @@ SDL_SendTouchButton(int id, Uint8 state, Uint8 button)
}

char *
SDL_GetTouchName(int id)
SDL_GetTouchName(long id)
{
SDL_Touch *touch = SDL_GetTouch(id);
if (!touch) {
Expand All @@ -518,12 +518,12 @@ SDL_GetTouchName(int id)
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;
}
Expand Down
19 changes: 8 additions & 11 deletions src/events/SDL_touch_c.h
Expand Up @@ -34,13 +34,13 @@ extern int SDL_TouchInit(void);
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),
Expand All @@ -49,26 +49,23 @@ extern int SDL_AddTouch(const SDL_Touch * touch, char *name);


/* 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 */

Expand Down

0 comments on commit 2677e0b

Please sign in to comment.