summaryrefslogtreecommitdiff
path: root/src/grail-inserter.h
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@bitmath.org>2010-07-29 15:54:31 +0200
committerHenrik Rydberg <rydberg@euromail.se>2010-08-05 22:48:38 +0200
commite0eb1015bf30fd0913db571b000ba6a83ea22660 (patch)
treea3d62152066cfb8521c80806596a4fb0fe322014 /src/grail-inserter.h
parentb76660d71e2ea77752025089bd71deffad64e325 (diff)
Split the code into recognizer and inserter
Refactor code to make more room for gesture recognition. Also simplify public headers. Signed-off-by: Henrik Rydberg <rydberg@bitmath.org>
Diffstat (limited to 'src/grail-inserter.h')
-rw-r--r--src/grail-inserter.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/grail-inserter.h b/src/grail-inserter.h
new file mode 100644
index 0000000..1e02d5f
--- /dev/null
+++ b/src/grail-inserter.h
@@ -0,0 +1,69 @@
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#include <grail.h>
30#include "gebuf.h"
31
32#define DIM_EV_TYPE EV_CNT
33#define DIM_EV_TYPE_BYTES (DIM_EV_TYPE >> 3)
34
35#define DIM_SLOT 32
36#define DIM_SLOT_BYTES (DIM_SLOT >> 3)
37
38#define DIM_CLIENT 32
39
40struct slot_state {
41 int type, id, status, x, y, nclient;
42 struct grail_client_id client_id[DIM_CLIENT];
43 grail_mask_t span[DIM_SLOT_BYTES];
44 struct gebuf buf;
45};
46
47struct gesture_inserter {
48 struct slot_state state[DIM_SLOT];
49 grail_mask_t used[DIM_SLOT_BYTES];
50 grail_time_t time;
51 int gestureid;
52};
53
54int gin_init(struct grail *ge);
55void gin_destroy(struct grail *ge);
56
57void gin_frame_begin(struct grail *ge, grail_time_t time);
58void gin_frame_end(struct grail *ge, grail_mask_t *filtered);
59
60int gin_gesture_begin(struct grail *ge, const struct touch_frame *frame,
61 int type, int x, int y, const grail_mask_t *span);
62void gin_gesture_discard(struct gesture_inserter *gin, int slot);
63void gin_gesture_end(struct gesture_inserter *gin, int slot);
64void gin_gesture_end_all(struct gesture_inserter *gin);
65
66void gin_gesture_event(struct gesture_inserter *gin, int slot,
67 const grail_prop_t *prop);
68
69#endif