Tizen 2.0 Release
[framework/uifw/xorg/proto/x11proto-gesture.git] / gestureproto.h
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Permission to use, copy, modify, distribute, and sell this software
5  * and its documentation for any purpose is hereby granted without
6  * fee, provided that the above copyright notice appear in all copies
7  * and that both that copyright notice and this permission notice
8  * appear in supporting documentation, and that the name of Red Hat
9  * not be used in advertising or publicity pertaining to distribution
10  * of the software without specific, written prior permission.  Red
11  * Hat makes no representations about the suitability of this software
12  * for any purpose.  It is provided "as is" without express or implied
13  * warranty.
14  *
15  * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
17  * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
18  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
19  * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
20  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
21  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22  *
23  */
24
25 #ifndef _GESTUREPROTO_H_
26 #define _GESTUREPROTO_H_
27
28 #include <X11/extensions/gestureconst.h>
29 #include <X11/X.h>
30 #include <X11/Xmd.h>
31
32 #define Fixed       INT32
33
34 #define GESTURE_EXT_NAME "X Gesture Extension"
35
36 #define GESTURE_MAJOR   0       /* current version numbers */
37 #define GESTURE_MINOR   1
38 #define GESTURE_PATCH   0
39
40 // Requests
41 #define X_GestureQueryVersion           0
42 #define X_GestureSelectEvents           1
43 #define X_GestureGetSelectedEvents      2
44 #define X_GestureGrabEvent                      3
45 #define X_GestureUngrabEvent            4
46
47 //requests
48 typedef struct _GestureSelectEvents {
49     CARD8 reqType;                      /* always GestureReqCode */
50     CARD8 gestureReqType;       /* always X_GestureSelectEvents */
51     CARD16 length B16;
52     CARD32 window B32;
53     CARD32 mask B32;
54 } xGestureSelectEventsReq;
55 #define sz_xGestureSelectEventsReq      12
56
57 typedef struct _GestureGetSelectedEvents {
58     CARD8 reqType;                      /* always GestureReqCode */
59     CARD8 gestureReqType;       /* always X_GestureGetSelectedEvents */
60     CARD16 length B16;
61     CARD32 window B32;
62 } xGestureGetSelectedEventsReq;
63 #define sz_xGestureGetSelectedEventsReq 8
64
65 typedef struct _GestureGrabEvent {
66     CARD8 reqType;                      /* always GestureReqCode */
67     CARD8 gestureReqType;       /* always X_GestureGrabEvent */
68     CARD16 length B16;
69     CARD32 window B32;
70     CARD32 eventType B32;               /* gesture event type such as "GestureNotifyFlick" */
71     CARD8 num_finger;           /* number of fingers in a gesture event */
72     CARD8 pad1;
73     CARD16 pad2 B16;
74     Time time B32;                              /* client request timestamp */
75 } xGestureGrabEventReq;
76 #define sz_xGestureGrabEventReq 20
77
78 typedef struct _GestureUngrabEvent {
79     CARD8 reqType;                      /* always GestureReqCode */
80     CARD8 gestureReqType;       /* always X_GestureUngrabEvent */
81     CARD16 length B16;
82     CARD32 window B32;
83     CARD32 eventType B32;               /* gesture event type such as "GestureNotifyFlick" */
84     CARD8 num_finger;           /* number of fingers in a gesture event */
85     CARD8 pad1;
86     CARD16 pad2 B16;
87     Time time B32;                              /* client request timestamp */
88 } xGestureUngrabEventReq;
89 #define sz_xGestureUngrabEventReq       20
90
91 typedef struct _GestureQueryVersion {
92     CARD8 reqType;                      /* always GestureReqCode */
93     CARD8 gestureReqType;       /* always X_GestureQueryVersion */
94     CARD16 length B16;
95 } xGestureQueryVersionReq;
96 #define sz_xGestureQueryVersionReq      4
97
98 //replys for synchronous reqs
99 typedef struct {
100     BYTE type;                                  /* X_Reply */
101     BOOL pad1;
102     CARD16 sequenceNumber B16;
103     CARD32 length B32;
104     CARD32 mask;
105     CARD32 pad2 B32;
106     CARD32 pad3 B32;
107     CARD32 pad4 B32;
108     CARD32 pad5 B32;
109     CARD32 pad6 B32;
110 } xGestureGetSelectedEventsReply;
111 #define sz_xGestureGetSelectedEventsReply       32
112
113 typedef struct {
114     BYTE type;                                  /* X_Reply */
115     BYTE status;
116     CARD16 sequenceNumber B16;
117     CARD32 length B32;
118     CARD32 pad1 B32;
119     CARD32 pad2 B32;
120     CARD32 pad3 B32;
121     CARD32 pad4 B32;
122     CARD32 pad5 B32;
123     CARD32 pad6 B32;
124 } xGestureGrabEventReply;
125 #define sz_xGestureGrabEventReply       32
126
127 typedef struct {
128     BYTE type;                                  /* X_Reply */
129     BYTE status;
130     CARD16 sequenceNumber B16;
131     CARD32 length B32;
132     CARD32 pad1 B32;
133     CARD32 pad2 B32;
134     CARD32 pad3 B32;
135     CARD32 pad4 B32;
136     CARD32 pad5 B32;
137     CARD32 pad6 B32;
138 } xGestureUngrabEventReply;
139 #define sz_xGestureUngrabEventReply     32
140
141 typedef struct {
142     BYTE type;                                  /* X_Reply */
143     BOOL pad1;
144     CARD16 sequenceNumber B16;
145     CARD32 length B32;
146     CARD16 majorVersion B16;    /* major version of Gesture extension protocol */
147     CARD16 minorVersion B16;    /* minor version of Gesture extension protocol */
148     CARD32 patchVersion B32;     /* patch version of Gesture extension protocol */
149     CARD32 pad3 B32;
150     CARD32 pad4 B32;
151     CARD32 pad5 B32;
152     CARD32 pad6 B32;
153 } xGestureQueryVersionReply;
154 #define sz_xGestureQueryVersionReply    32
155
156 //events
157 typedef struct _GestureNotifyGroup {
158         BYTE type;                      /* always GestureEventBase + event type */
159         BYTE kind;                      /* subevent type : GestureNotifyGroup */
160         CARD16  sequenceNumber B16;
161         Window window B32;
162         Time time B32;          /* server timestamp when event happened */
163         CARD8 groupid;
164         CARD8 num_group;
165         CARD16 pad1 B16;
166         CARD32 pad2 B32;
167         CARD32 pad3 B32;
168         CARD32 pad4 B32;
169         CARD32 pad5 B32;
170 } xGestureNotifyGroupEvent;
171 #define sz_xGestureNotifyGroupEvent     32
172
173 typedef struct _GestureNotifyFlick {
174         BYTE type;                      /* always GestureEventBase + event type */
175         BYTE kind;                      /* subevent type : GestureNotifyFlick */
176         CARD16 sequenceNumber B16;
177         Window window B32;
178         Time time B32;          /* server timestamp when event happened */
179         CARD8 num_finger;
180         CARD8 direction;                /* 8 way direction (0 ~ 7) */
181         CARD16 distance B16;    /* distance between first point and last point (pixel) */
182         Time duration B32;      /* time difference between press and release (ms) */
183         Fixed angle B32;                /* angel difference between horizontal line and flick line (radian) */
184         CARD32 pad1 B32;
185         CARD32 pad2 B32;
186 } xGestureNotifyFlickEvent;
187 #define sz_xGestureNotifyFlickEvent     32
188
189 typedef struct _GestureNotifyPan {
190         BYTE type;                      /* always GestureEventBase + event type */
191         BYTE kind;                      /* subevent type : GestureNotifyPan */
192         CARD16  sequenceNumber B16;
193         Window window B32;
194         Time time B32;          /* server timestamp when event happened */
195         CARD8 num_finger;
196         CARD8 direction;                /* 8 way direction (0 ~ 7) */
197         CARD16 distance B16;    /* distance between first point and last point (pixel)*/
198         Time duration B32;      /* time difference between press and release (ms) */
199         CARD16 dx B16;          /* x coordinate delta */
200         CARD16 dy B16;          /* y coordinate delta */
201         CARD32 pad1 B32;
202         CARD32 pad2 B32;
203 } xGestureNotifyPanEvent;
204 #define sz_xGestureNotifyPanEvent       32
205
206 typedef struct _GestureNotifyPinchRotation {
207         BYTE type;                      /* always GestureEventBase + event type */
208         BYTE kind;                      /* subevent type : GestureNotifyPinchRotation */
209         CARD16 sequenceNumber B16;
210         Window window B32;
211         Time time B32;          /* server timestamp when event happened */
212         CARD8 num_finger;
213         CARD8 pad1;
214         CARD16 distance B16;    /* distance from center (pixel) */
215         CARD16 cx B16;          /* center x coordinate */
216         CARD16 cy B16;          /* center y coordinate */
217         Fixed zoom B32;         /* zoom factor (base : 1.0) */
218         Fixed angle B32;                /* angel difference between first line and current line (radian) */
219         CARD32  pad2 B32;
220 } xGestureNotifyPinchRotationEvent;
221 #define sz_xGestureNotifyPinchRotationEvent     32
222
223 typedef struct _GestureNotifyTap {
224         BYTE type;                      /* always GestureEventBase + event type */
225         BYTE kind;                      /* subevent type : GestureNotifyTap */
226         CARD16 sequenceNumber B16;
227         Window window B32;
228         Time time B32;          /* server timestamp when event happened */
229         CARD8 num_finger;
230         CARD8 pad1;
231         CARD16 cx B16;          /* center x coordinate */
232         CARD16 cy B16;          /* center y coordinate */
233         CARD8 tap_repeat;       /* tap repeats such as SINGLE_TAP, DBL_TAP and so on */
234         CARD8 pad2;
235         CARD32 interval;                /* time difference between tap and previous tap (ms) */
236         CARD32 pad3 B32;
237         CARD32 pad4 B32;
238 } xGestureNotifyTapEvent;
239 #define sz_xGestureNotifyTapEvent       32
240
241 typedef struct _GestureNotifyTapNHold {
242         BYTE type;                      /* always GestureEventBase + event type */
243         BYTE kind;                      /* subevent type : GestureNotifyTapNHold */
244         CARD16 sequenceNumber B16;
245         Window window B32;
246         Time time B32;          /* server timestamp when event happened */
247         CARD8 num_finger;
248         CARD8 pad1;
249         CARD16 cx B16;          /* center x coordinate */
250         CARD16 cy B16;          /* center y coordinate */
251         CARD16 pad2 B16;
252         Time interval B32;              /* time difference between tap and hold (ms) */
253         Time holdtime B32;      /* hold time (ms) */
254         CARD32 pad3 B32;
255 } xGestureNotifyTapNHoldEvent;
256 #define sz_xGestureNotifyTapNHoldEvent  32
257
258 typedef struct _GestureNotifyHold {
259         BYTE type;                      /* always GestureEventBase + event type */
260         BYTE kind;                      /* subevent type : GestureNotifyHold */
261         CARD16 sequenceNumber B16;
262         Window window B32;
263         Time time B32;          /* server timestamp when event happened */
264         CARD8 num_finger;
265         CARD8 pad1;
266         CARD16 cx B16;          /* center x coordinate */
267         CARD16 cy B16;          /* center y coordinate */
268         CARD16 pad2 B16;
269         Time holdtime B32;      /* hold time (ms) */
270         CARD32 pad3 B32;
271         CARD32 pad4 B32;
272 } xGestureNotifyHoldEvent;
273 #define sz_xGestureNotifyHoldEvent      32
274
275 union _xGestureCommonEvent {
276         struct {
277                 BYTE type;
278                 BYTE kind;
279                 CARD16  sequenceNumber B16;
280                 Window window B32;
281                 Time time B32;
282         } any;
283         xGestureNotifyGroupEvent gev;
284         xGestureNotifyFlickEvent fev;
285         xGestureNotifyPanEvent pev;
286         xGestureNotifyPinchRotationEvent pcrev;
287         xGestureNotifyTapEvent tev;
288         xGestureNotifyTapNHoldEvent thev;
289         xGestureNotifyHoldEvent hev;
290 };
291
292 typedef union _xGestureCommonEvent xGestureCommonEvent;
293
294 #endif//_GESTUREPROTO_H_
295