From 3b9c20f869a2f55bd9953665c9e7fd713db4ff43 Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Tue, 20 Jul 2010 12:01:32 +0200 Subject: Merge in fix of dev package. This patch moves header files around, and does not contain any logic changes. Signed-off-by: Henrik Rydberg --- include/grail-touch.h | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 include/grail-touch.h (limited to 'include/grail-touch.h') diff --git a/include/grail-touch.h b/include/grail-touch.h new file mode 100644 index 0000000..d6c9bf5 --- /dev/null +++ b/include/grail-touch.h @@ -0,0 +1,100 @@ +/***************************************************************************** + * + * 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_TOUCH_H +#define _GRAIL_TOUCH_H + +#include + +#define DIM_TOUCHES 32 + +typedef int touch_prop_t; +typedef unsigned touch_prop_mask_t; +typedef __u64 touch_time_t; + +enum touch_prop_list { + TP_POS_X, + TP_POS_Y, + TP_TOUCH_MAJOR, + TP_TOUCH_MINOR, + TP_WIDTH_MAJOR, + TP_WIDTH_MINOR, + TP_ORIENTATION, + TP_PRESSURE, + DIM_TOUCH_PROP +}; + +struct touch { + int active; + int slot; + int next; + touch_prop_t prop[DIM_TOUCH_PROP]; +}; + +struct touch_dev { + void (*event)(struct touch_dev *dev, const struct input_event *ev); + void (*create)(struct touch_dev *dev, int slot, + const touch_prop_mask_t *mask, const touch_prop_t *prop); + void (*modify)(struct touch_dev *dev, int slot, + const touch_prop_mask_t *mask, const touch_prop_t *prop); + void (*destroy)(struct touch_dev *dev, int slot); + void (*sync)(struct touch_dev *dev, touch_time_t time); + struct touch_dev_impl *impl; + void *priv; +}; + +struct touch_frame { + int ntouch; + int slot; + struct touch touch[DIM_TOUCHES]; +}; + +struct touch_engine { + void (*sync)(struct touch_engine *engine, touch_time_t time); + struct touch_frame frame; + void *priv; +}; + +static inline int has_prop(const touch_prop_mask_t *mask, int code) +{ + return (mask[code >> 5] >> (code & 31)) & 1; +} + +static inline int next_slot(const struct touch_frame *frame, int slot) +{ + return frame->touch[slot].next; +} + +int touch_dev_open(struct touch_dev *dev, int fd); +int touch_dev_idle(struct touch_dev *dev, int fd, int ms); +int touch_dev_pull(struct touch_dev *dev, int fd); +void touch_dev_close(struct touch_dev *dev, int fd); + +void touch_engine_init(struct touch_engine *engine, + void (*sync)(struct touch_engine *engine, + touch_time_t time), + void *priv); +void touch_engine_attach(struct touch_engine *engine, struct touch_dev *dev); + +#endif -- cgit v1.2.3