diff options
| author | Henrik Rydberg <rydberg@euromail.se> | 2010-08-19 20:03:15 +0200 |
|---|---|---|
| committer | Henrik Rydberg <rydberg@euromail.se> | 2010-08-19 20:03:15 +0200 |
| commit | a704984e03d28b4be40e12c43be1b163bc9e09e2 (patch) | |
| tree | c4720a59aa77918ffef742d7ec7ef2a7e2eda16e /include | |
| parent | cb2cad3b8c506a08a6bdad548a10ff47f85ef38b (diff) | |
Simplify touch machinery
To be able to model touch information uniformly across all supported
devices, the semantics of the touch attributes has to be treated
explicitly. Drop the generic touch property array and replace it
by an actual structure. In addition, the touch-engine abstraction
turned out to not be needed, so drop it as well.
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'include')
| -rw-r--r-- | include/grail-touch.h | 65 |
1 files changed, 22 insertions, 43 deletions
diff --git a/include/grail-touch.h b/include/grail-touch.h index 9d96cc3..acfc779 100644 --- a/include/grail-touch.h +++ b/include/grail-touch.h | |||
| @@ -29,27 +29,20 @@ | |||
| 29 | #define DIM_TOUCH 32 | 29 | #define DIM_TOUCH 32 |
| 30 | #define DIM_TOUCH_BYTES ((DIM_TOUCH + 7) >> 3) | 30 | #define DIM_TOUCH_BYTES ((DIM_TOUCH + 7) >> 3) |
| 31 | 31 | ||
| 32 | typedef int touch_prop_t; | ||
| 33 | typedef __u64 touch_time_t; | 32 | typedef __u64 touch_time_t; |
| 34 | 33 | ||
| 35 | enum touch_prop_list { | ||
| 36 | TP_POS_X, | ||
| 37 | TP_POS_Y, | ||
| 38 | TP_TOUCH_MAJOR, | ||
| 39 | TP_TOUCH_MINOR, | ||
| 40 | TP_WIDTH_MAJOR, | ||
| 41 | TP_WIDTH_MINOR, | ||
| 42 | TP_ORIENTATION, | ||
| 43 | TP_PRESSURE, | ||
| 44 | DIM_TOUCH_PROP | ||
| 45 | }; | ||
| 46 | |||
| 47 | #define DIM_TOUCH_PROP_BYTES ((DIM_TOUCH_PROP + 7) >> 3) | ||
| 48 | |||
| 49 | struct touch { | 34 | struct touch { |
| 50 | int active; | 35 | int active; |
| 51 | int slot; | 36 | int slot; |
| 52 | touch_prop_t prop[DIM_TOUCH_PROP]; | 37 | int id; |
| 38 | int tool_type; | ||
| 39 | int x, y; | ||
| 40 | int touch_major; | ||
| 41 | int touch_minor; | ||
| 42 | int width_major; | ||
| 43 | int width_minor; | ||
| 44 | int orientation; | ||
| 45 | int pressure; | ||
| 53 | }; | 46 | }; |
| 54 | 47 | ||
| 55 | struct touch_frame { | 48 | struct touch_frame { |
| @@ -61,45 +54,31 @@ struct touch_frame { | |||
| 61 | struct touch touch[DIM_TOUCH]; | 54 | struct touch touch[DIM_TOUCH]; |
| 62 | }; | 55 | }; |
| 63 | 56 | ||
| 64 | struct touch_dev_caps { | 57 | struct touch_caps { |
| 65 | grail_mask_t mask[DIM_TOUCH_PROP_BYTES]; | 58 | float min_x, max_x; |
| 66 | struct input_absinfo info[DIM_TOUCH_PROP]; | 59 | float min_y, max_y; |
| 60 | float min_orient, max_orient; | ||
| 61 | float min_press, max_press; | ||
| 67 | }; | 62 | }; |
| 68 | 63 | ||
| 69 | struct touch_dev { | 64 | struct touch_dev { |
| 70 | void (*event)(struct touch_dev *dev, const struct input_event *ev); | 65 | void (*event)(struct touch_dev *dev, const struct input_event *ev); |
| 71 | void (*create)(struct touch_dev *dev, int slot, | ||
| 72 | const grail_mask_t *mask, const touch_prop_t *prop); | ||
| 73 | void (*modify)(struct touch_dev *dev, int slot, | ||
| 74 | const grail_mask_t *mask, const touch_prop_t *prop); | ||
| 75 | void (*destroy)(struct touch_dev *dev, int slot); | ||
| 76 | void (*sync)(struct touch_dev *dev, const struct input_event *syn); | 66 | void (*sync)(struct touch_dev *dev, const struct input_event *syn); |
| 77 | struct touch_dev_caps caps; | ||
| 78 | struct touch_dev_impl *impl; | ||
| 79 | void *priv; | 67 | void *priv; |
| 80 | }; | 68 | struct mtdev mtdev; |
| 81 | |||
| 82 | struct touch_engine { | ||
| 83 | void (*event)(struct touch_engine *engine, | ||
| 84 | const struct input_event *ev); | ||
| 85 | void (*sync)(struct touch_engine *engine, | ||
| 86 | const struct input_event *syn); | ||
| 87 | struct touch_frame frame; | 69 | struct touch_frame frame; |
| 88 | void *priv; | 70 | struct touch_caps caps; |
| 71 | int slot; | ||
| 72 | int state; | ||
| 89 | }; | 73 | }; |
| 90 | 74 | ||
| 75 | void touch_caps_init(struct touch_dev *dev); | ||
| 76 | float touch_angle(const struct touch_dev *dev, int orientation); | ||
| 77 | float touch_pressure(const struct touch_dev *dev, int pressure); | ||
| 78 | |||
| 91 | int touch_dev_open(struct touch_dev *dev, int fd); | 79 | int touch_dev_open(struct touch_dev *dev, int fd); |
| 92 | int touch_dev_idle(struct touch_dev *dev, int fd, int ms); | 80 | int touch_dev_idle(struct touch_dev *dev, int fd, int ms); |
| 93 | int touch_dev_pull(struct touch_dev *dev, int fd); | 81 | int touch_dev_pull(struct touch_dev *dev, int fd); |
| 94 | void touch_dev_close(struct touch_dev *dev, int fd); | 82 | void touch_dev_close(struct touch_dev *dev, int fd); |
| 95 | 83 | ||
| 96 | void touch_engine_init(struct touch_engine *engine, | ||
| 97 | void (*event)(struct touch_engine *engine, | ||
| 98 | const struct input_event *ev), | ||
| 99 | void (*sync)(struct touch_engine *engine, | ||
| 100 | const struct input_event *ev), | ||
| 101 | void *priv); | ||
| 102 | void touch_engine_attach(struct touch_engine *engine, struct touch_dev *dev); | ||
| 103 | void touch_engine_detach(struct touch_engine *engine, struct touch_dev *dev); | ||
| 104 | |||
| 105 | #endif | 84 | #endif |
