summaryrefslogtreecommitdiff
path: root/include
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
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')
-rw-r--r--include/grail-gesture.h90
-rw-r--r--include/grail-touch.h8
-rw-r--r--include/grail.h80
3 files changed, 124 insertions, 54 deletions
diff --git a/include/grail-gesture.h b/include/grail-gesture.h
new file mode 100644
index 0000000..fe62b95
--- /dev/null
+++ b/include/grail-gesture.h
@@ -0,0 +1,90 @@
1/*****************************************************************************
2 *
3 * grail - Gesture Recognition And Instantiation Library
4 *
5 * Copyright (C) 2010 Canonical Ltd.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 * Authors:
21 * Henrik Rydberg <rydberg@bitmath.org>
22 *
23 ****************************************************************************/
24
25#ifndef _GRAIL_GESTURE_H
26#define _GRAIL_GESTURE_H
27
28#include <grail-touch.h>
29
30#define DIM_GESTURE_PROP 8
31typedef int gesture_prop_t;
32
33enum gesture_type {
34 GE_MOVE,
35 GE_VSCROLL,
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
51struct gesture_event {
52 enum gesture_type type;
53 touch_time_t time;
54 gesture_prop_t prop[DIM_GESTURE_PROP];
55};
56
57struct gesture_dev {
58 struct gedev_impl *impl;
59 void *priv;
60};
61
62struct gesture_client {
63 void (*gesture)(struct gesture_client *client,
64 const struct gesture_event *ev);
65 int priority[DIM_GESTURE_TYPE];
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
82void gedev_flag(struct gesture_dev *dev, const struct gesture_flag *flag);
83void gedev_event(struct gesture_dev *dev, const struct gesture_event *ev);
84void gedev_sync(struct gesture_dev *dev);
85
86void gedev_detach_client(struct gesture_dev *dev,
87 struct gesture_client *client);
88void gedev_destroy(struct gesture_dev *dev);
89
90#endif
diff --git a/include/grail-touch.h b/include/grail-touch.h
index 9e8572b..e4bfd7b 100644
--- a/include/grail-touch.h
+++ b/include/grail-touch.h
@@ -67,7 +67,7 @@ struct touch_dev {
67 void (*modify)(struct touch_dev *dev, int slot, 67 void (*modify)(struct touch_dev *dev, int slot,
68 const touch_prop_mask_t *mask, const touch_prop_t *prop); 68 const touch_prop_mask_t *mask, const touch_prop_t *prop);
69 void (*destroy)(struct touch_dev *dev, int slot); 69 void (*destroy)(struct touch_dev *dev, int slot);
70 void (*sync)(struct touch_dev *dev, touch_time_t time); 70 void (*sync)(struct touch_dev *dev, const struct input_event *syn);
71 struct touch_dev_impl *impl; 71 struct touch_dev_impl *impl;
72 void *priv; 72 void *priv;
73}; 73};
@@ -75,7 +75,8 @@ struct touch_dev {
75struct touch_engine { 75struct touch_engine {
76 void (*event)(struct touch_engine *engine, 76 void (*event)(struct touch_engine *engine,
77 const struct input_event *ev); 77 const struct input_event *ev);
78 void (*sync)(struct touch_engine *engine); 78 void (*sync)(struct touch_engine *engine,
79 const struct input_event *syn);
79 struct touch_frame frame; 80 struct touch_frame frame;
80 void *priv; 81 void *priv;
81}; 82};
@@ -98,7 +99,8 @@ void touch_dev_close(struct touch_dev *dev, int fd);
98void touch_engine_init(struct touch_engine *engine, 99void touch_engine_init(struct touch_engine *engine,
99 void (*event)(struct touch_engine *engine, 100 void (*event)(struct touch_engine *engine,
100 const struct input_event *ev), 101 const struct input_event *ev),
101 void (*sync)(struct touch_engine *engine), 102 void (*sync)(struct touch_engine *engine,
103 const struct input_event *ev),
102 void *priv); 104 void *priv);
103void touch_engine_attach(struct touch_engine *engine, struct touch_dev *dev); 105void touch_engine_attach(struct touch_engine *engine, struct touch_dev *dev);
104void touch_engine_detach(struct touch_engine *engine, struct touch_dev *dev); 106void touch_engine_detach(struct touch_engine *engine, struct touch_dev *dev);
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