/***************************************************************************** * * 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_GESTURE_H #define _GRAIL_GESTURE_H #include #define DIM_GESTURE_PROP 8 typedef int gesture_prop_t; enum gesture_type { GE_MOVE, GE_VSCROLL, DIM_GESTURE_TYPE }; enum gesture_state { GS_CANCEL, GS_BEGIN, GS_END }; struct gesture_flag { enum gesture_type type; touch_time_t time; enum gesture_state state; }; struct gesture_event { enum gesture_type type; touch_time_t time; gesture_prop_t prop[DIM_GESTURE_PROP]; }; struct gesture_dev { struct gedev_impl *impl; void *priv; }; struct gesture_client { void (*gesture)(struct gesture_client *client, const struct gesture_event *ev); int priority[DIM_GESTURE_TYPE]; struct client_impl *impl; void *priv; }; int client_init(struct gesture_client *client, void *priv); void client_flag(struct gesture_client *client, const struct gesture_flag *flag); void client_event(struct gesture_client *client, const struct gesture_event *ev); void client_sync(struct gesture_client *client); void client_destroy(struct gesture_client *client); int gedev_init(struct gesture_dev *dev, void *priv); int gedev_attach_client(struct gesture_dev *dev, struct gesture_client *client); void gedev_flag(struct gesture_dev *dev, const struct gesture_flag *flag); void gedev_event(struct gesture_dev *dev, const struct gesture_event *ev); void gedev_sync(struct gesture_dev *dev); void gedev_detach_client(struct gesture_dev *dev, struct gesture_client *client); void gedev_destroy(struct gesture_dev *dev); #endif