|
1 =========================================================================== |
|
2 Events |
|
3 =========================================================================== |
|
4 SDL_FINGERDOWN: |
|
5 Sent when a finger (or stylus) is placed on a touch device. |
|
6 Fields: |
|
7 event.tfinger.touchId - the Id of the touch device. |
|
8 event.tfinger.fingerId - the Id of the finger which just went down. |
|
9 event.tfinger.x - the x coordinate of the touch (0..touch.xres) |
|
10 event.tfinger.y - the y coordinate of the touch (0..touch.yres) |
|
11 event.tfinger.pressure - the pressure of the touch (0..touch.pressureres) |
|
12 |
|
13 SDL_FINGERMOTION: |
|
14 Sent when a finger (or stylus) is moved on the touch device. |
|
15 Fields: |
|
16 Same as FINGERDOWN but with additional: |
|
17 event.tfginer.dx - chagne in x coordinate during this motion event. |
|
18 event.tfginer.dy - chagne in y coordinate during this motion event. |
|
19 |
|
20 SDL_FINGERMOTION: |
|
21 Sent when a finger (or stylus) is lifted from the touch device. |
|
22 Fields: |
|
23 Same as FINGERDOWN. |
|
24 |
|
25 |
|
26 =========================================================================== |
|
27 Functions |
|
28 =========================================================================== |
|
29 SDL provides the ability to access the underlying Touch and Finger structures. |
|
30 These structures should _never_ be modified. |
|
31 |
|
32 The following functions are included from SDL_Touch.h |
|
33 |
|
34 To get a SDL_Touch device call SDL_GetTouch(touchId). |
|
35 This returns an SDL_Touch*. |
|
36 IMPORTANT: If the touch has been removed, or there is no touch with the given ID, SDL_GetTouch will return null. Be sure to check for this! |
|
37 |
|
38 An SDL_Touch has the following fields: |
|
39 >pressure_max, pressure_min, x_max, x_min, y_max, y_min |
|
40 Which give, respectively, the maximum and minumum values that the touch digitizer can return for pressure, x coordiniate, and y coordinate AS REPORTED BY THE OPERATING SYSTEM. |
|
41 On Mac/iPhone systems _max will always be 0, and _min will always be 1. |
|
42 |
|
43 >xres,yres,pressures: |
|
44 The resolution at which x,y, and pressure values are reported. Currently these will always be equal to 2^15, but this may not always be the case. |
|
45 |
|
46 >native_xres,native_yres,native_pressureres: |
|
47 The native resolution of the touch device AS REPORTED BY THE OPERATING SYSTEM. |
|
48 On Mac/iPhone systems these will always be 1. |
|
49 |
|
50 >num_fingers: |
|
51 The number of fingers currently down on the device. |
|
52 |
|
53 >fingers: |
|
54 An array of pointers to the fingers which are on the device. |
|
55 |
|
56 |
|
57 The most common reason to get a touch device is to normalize inputs. This would look something like: |
|
58 |
|
59 SDL_Touch* inTouch = SDL_GetTouch(event.tfinger.touchId); |
|
60 if(inTouch == NULL) continue; |
|
61 |
|
62 float x = ((float)event.tfinger.x)/inTouch->xres; |
|
63 float y = ((float)event.tfinger.y)/inTouch->yres; |
|
64 |
|
65 |
|
66 To get an SDL_Finger, call SDL_GetFinger(touch,fingerId), where touch is a pointer to an SDL_Touch device, and fingerId is the id of the requested finger. |
|
67 This returns an SDL_Finger*, or null if the finger does not exist, or has been removed. |
|
68 An SDL_Finger is guaranteed to be persistent for the duration of a touch, but it will be de-allocated as soon as the finger is removed. This occurs when the SDL_FINGERUP event is _added_ to the event queue, and thus BEFORE the FINGERUP event is seen. |
|
69 As a result, be very careful to check for null return values. |
|
70 |
|
71 An SDL_Finger has the following fields: |
|
72 >x,y,pressure: |
|
73 The current coordinates of the touch. |
|
74 >xdelta,ydelta: |
|
75 The change in position resulting from the last finger motion. |
|
76 >last_x, last_y, last_pressure: |
|
77 The previous coordinates of the touch. |