summaryrefslogtreecommitdiff
path: root/include/grail.h
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@bitmath.org>2010-07-26 13:51:34 +0200
committerHenrik Rydberg <rydberg@euromail.se>2010-08-05 22:48:38 +0200
commitb76660d71e2ea77752025089bd71deffad64e325 (patch)
treec19adf132087edcdc1e721446d4975f37899239e /include/grail.h
parenteb896e11aacab5f53e3915a8d19ffffd92ce8e10 (diff)
Test implementation of grail api
This patch introduces the grail API, and a program to test it (evlink). Signed-off-by: Henrik Rydberg <rydberg@bitmath.org>
Diffstat (limited to 'include/grail.h')
-rw-r--r--include/grail.h80
1 files changed, 29 insertions, 51 deletions
diff --git a/include/grail.h b/include/grail.h
index 087cf0c..c390e22 100644
--- a/include/grail.h
+++ b/include/grail.h
@@ -25,66 +25,44 @@
25#ifndef _GRAIL_H 25#ifndef _GRAIL_H
26#define _GRAIL_H 26#define _GRAIL_H
27 27
28#include <grail-touch.h> 28#include <linux/input.h>
29 29
30#define DIM_GESTURE_PROP 8 30#define DIM_GRAIL_PROP 8
31typedef int gesture_prop_t; 31#define DIM_GRAIL_TYPE 64
32 32
33enum gesture_type { 33typedef int grail_prop_t;
34 GE_MOVE, 34typedef __u64 grail_time_t;
35 GE_VSCROLL, 35typedef unsigned long grail_clientid_t;
36 DIM_GESTURE_TYPE
37};
38
39enum gesture_state {
40 GS_CANCEL,
41 GS_BEGIN,
42 GS_END
43};
44
45struct gesture_flag {
46 enum gesture_type type;
47 touch_time_t time;
48 enum gesture_state state;
49};
50 36
51struct gesture_event { 37struct grail_event {
52 enum gesture_type type; 38 int type;
53 touch_time_t time; 39 int id;
54 gesture_prop_t prop[DIM_GESTURE_PROP]; 40 int x;
41 int y;
42 int status;
43 grail_time_t time;
44 grail_prop_t prop[DIM_GRAIL_PROP];
55}; 45};
56 46
57struct gesture_dev { 47struct grail {
58 struct gedev_impl *impl; 48 int (*get_clients)(int x, int y, int screen,
49 grail_clientid_t *clients, int nclients);
50 void (*event)(struct grail *ge,
51 const struct input_event *ev);
52 void (*gesture)(struct grail *ge,
53 const struct grail_event *ev);
54 struct grail_impl *impl;
59 void *priv; 55 void *priv;
60}; 56};
61 57
62struct gesture_client { 58int grail_open(struct grail *ge, int fd);
63 void (*gesture)(struct gesture_client *client, 59int grail_idle(struct grail *ge, int fd, int ms);
64 const struct gesture_event *ev); 60int grail_pull(struct grail *ge, int fd);
65 int priority[DIM_GESTURE_TYPE]; 61void grail_close(struct grail *ge, int fd);
66 struct client_impl *impl;
67 void *priv;
68};
69
70int client_init(struct gesture_client *client, void *priv);
71void client_flag(struct gesture_client *client,
72 const struct gesture_flag *flag);
73void client_event(struct gesture_client *client,
74 const struct gesture_event *ev);
75void client_sync(struct gesture_client *client);
76void client_destroy(struct gesture_client *client);
77
78int gedev_init(struct gesture_dev *dev, void *priv);
79int gedev_attach_client(struct gesture_dev *dev,
80 struct gesture_client *client);
81 62
82void gedev_flag(struct gesture_dev *dev, const struct gesture_flag *flag); 63void grail_add_client(struct grail *ge, grail_clientid_t id,
83void gedev_event(struct gesture_dev *dev, const struct gesture_event *ev); 64 const int *types, const int *priority, int ntypes);
84void gedev_sync(struct gesture_dev *dev); 65void grail_remove_client(struct grail *ge, grail_clientid_t id);
85 66
86void gedev_detach_client(struct gesture_dev *dev,
87 struct gesture_client *client);
88void gedev_destroy(struct gesture_dev *dev);
89 67
90#endif 68#endif