From 7db9d8d76ff61c4802ac15559dcea6fa54ff567a Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Fri, 6 Aug 2010 21:11:17 +0200 Subject: initial bzr repo at rev 27 --- include/grail.h | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 include/grail.h (limited to 'include/grail.h') diff --git a/include/grail.h b/include/grail.h new file mode 100644 index 0000000..0fa4473 --- /dev/null +++ b/include/grail.h @@ -0,0 +1,94 @@ +/***************************************************************************** + * + * grail - Gesture Recognition And Instantiation Library + * + * Copyright (C) 2010 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Authors: + * Henrik Rydberg + * + ****************************************************************************/ + +#ifndef _GRAIL_H +#define _GRAIL_H + +#include +#include +#include + +#define DIM_GRAIL_TYPE 64 +#define DIM_GRAIL_TYPE_BYTES ((DIM_GRAIL_TYPE + 7) >> 3) + +#define DIM_GRAIL_PROP 16 +#define DIM_GRAIL_PROP_BYTES ((DIM_GRAIL_PROP + 7) >> 3) + +#define GRAIL_STATUS_BEGIN 0 +#define GRAIL_STATUS_UPDATE 1 +#define GRAIL_STATUS_END 2 + +typedef float grail_prop_t; +typedef __u64 grail_time_t; + +struct grail_coord { + float x, y; +}; + +struct grail_client_id { + int client; + int root, event, child; +}; + +struct grail_client_info { + struct grail_client_id id; + grail_mask_t mask[DIM_GRAIL_TYPE_BYTES]; +}; + +struct grail_event { + int type; + int id; + int status; + int ntouch; + int nprop; + struct grail_coord pos; + struct grail_client_id client_id; + grail_time_t time; + grail_prop_t prop[DIM_GRAIL_PROP]; +}; + +struct grail { + int (*get_clients)(struct grail *ge, + struct grail_client_info *client, int max_clients, + const struct grail_coord *coords, int num_coords, + const grail_mask_t *types, int type_bytes); + void (*event)(struct grail *ge, + const struct input_event *ev); + void (*gesture)(struct grail *ge, + const struct grail_event *ev); + struct grail_impl *impl; + struct gesture_inserter *gin; + struct gesture_recognizer *gru; + void *priv; +}; + +int grail_open(struct grail *ge, int fd); +int grail_idle(struct grail *ge, int fd, int ms); +int grail_pull(struct grail *ge, int fd); +void grail_close(struct grail *ge, int fd); + +void grail_get_units(struct grail_coord *min, struct grail_coord *max, + const struct grail *ge); + +#endif -- cgit v1.2.3