author | Philipp Wiesemann <philipp.wiesemann@arcor.de> |
Tue, 28 Jun 2016 21:14:11 +0200 | |
changeset 10188 | 9cf58ba2b2ad |
parent 9464 | ae7a6c8cc189 |
permissions | -rw-r--r-- |
9023 | 1 |
Dollar Gestures |
2 |
=========================================================================== |
|
9464
ae7a6c8cc189
Fixed typo in gesture README.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9066
diff
changeset
|
3 |
SDL provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures. |
9023 | 4 |
|
5 |
Gestures can be performed with any number of fingers (the centroid of the fingers must follow the path of the gesture), but the number of fingers must be constant (a finger cannot go down in the middle of a gesture). The path of a gesture is considered the path from the time when the final finger went down, to the first time any finger comes up. |
|
6 |
||
7 |
Dollar gestures are assigned an Id based on a hash function. This is guaranteed to remain constant for a given gesture. There is a (small) chance that two different gestures will be assigned the same ID. In this case, simply re-recording one of the gestures should result in a different ID. |
|
8 |
||
9 |
Recording: |
|
10 |
---------- |
|
11 |
To begin recording on a touch device call: |
|
12 |
SDL_RecordGesture(SDL_TouchID touchId), where touchId is the id of the touch device you wish to record on, or -1 to record on all connected devices. |
|
13 |
||
14 |
Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event. |
|
15 |
A SDL_DOLLARRECORD event is a dgesture with the following fields: |
|
16 |
||
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
17 |
* event.dgesture.touchId - the Id of the touch used to record the gesture. |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
18 |
* event.dgesture.gestureId - the unique id of the recorded gesture. |
9023 | 19 |
|
20 |
||
21 |
Performing: |
|
22 |
----------- |
|
23 |
As long as there is a dollar gesture assigned to a touch, every finger-up event will also cause an SDL_DOLLARGESTURE event with the following fields: |
|
24 |
||
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
25 |
* event.dgesture.touchId - the Id of the touch which performed the gesture. |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
26 |
* event.dgesture.gestureId - the unique id of the closest gesture to the performed stroke. |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
27 |
* event.dgesture.error - the difference between the gesture template and the actual performed gesture. Lower error is a better match. |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
28 |
* event.dgesture.numFingers - the number of fingers used to draw the stroke. |
9023 | 29 |
|
30 |
Most programs will want to define an appropriate error threshold and check to be sure that the error of a gesture is not abnormally high (an indicator that no gesture was performed). |
|
31 |
||
32 |
||
33 |
||
34 |
Saving: |
|
35 |
------- |
|
36 |
To save a template, call SDL_SaveDollarTemplate(gestureId, dst) where gestureId is the id of the gesture you want to save, and dst is an SDL_RWops pointer to the file where the gesture will be stored. |
|
37 |
||
38 |
To save all currently loaded templates, call SDL_SaveAllDollarTemplates(dst) where dst is an SDL_RWops pointer to the file where the gesture will be stored. |
|
39 |
||
40 |
Both functions return the number of gestures successfully saved. |
|
41 |
||
42 |
||
43 |
Loading: |
|
44 |
-------- |
|
45 |
To load templates from a file, call SDL_LoadDollarTemplates(touchId,src) where touchId is the id of the touch to load to (or -1 to load to all touch devices), and src is an SDL_RWops pointer to a gesture save file. |
|
46 |
||
47 |
SDL_LoadDollarTemplates returns the number of templates successfully loaded. |
|
48 |
||
49 |
||
50 |
||
51 |
=========================================================================== |
|
52 |
Multi Gestures |
|
53 |
=========================================================================== |
|
54 |
SDL provides simple support for pinch/rotate/swipe gestures. |
|
55 |
Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields: |
|
56 |
||
9066
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
57 |
* event.mgesture.touchId - the Id of the touch on which the gesture was performed. |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
58 |
* event.mgesture.x - the normalized x coordinate of the gesture. (0..1) |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
59 |
* event.mgesture.y - the normalized y coordinate of the gesture. (0..1) |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
60 |
* event.mgesture.dTheta - the amount that the fingers rotated during this motion. |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
61 |
* event.mgesture.dDist - the amount that the fingers pinched during this motion. |
c2af3ff967cc
Fixed markdown formatting in READMEs.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
9025
diff
changeset
|
62 |
* event.mgesture.numFingers - the number of fingers used in the gesture. |
9023 | 63 |
|
64 |
||
65 |
=========================================================================== |
|
66 |
Notes |
|
67 |
=========================================================================== |
|
68 |
For a complete example see test/testgesture.c |
|
69 |
||
70 |
Please direct questions/comments to: |
|
71 |
jim.tla+sdl_touch@gmail.com |