From bb964fa8bcebee82093cec8da8081eb1366aea96 Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Thu, 19 Aug 2010 21:01:29 +0200 Subject: Make gesture inserter visible to all local files Also remove the transformed flag in favor of a unit transformation. Signed-off-by: Henrik Rydberg --- src/grail-inserter.c | 30 +++++++++--------------------- src/grail-inserter.h | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/src/grail-inserter.c b/src/grail-inserter.c index 9769d94..36ab570 100644 --- a/src/grail-inserter.c +++ b/src/grail-inserter.c @@ -28,18 +28,6 @@ static const int MAX_GESTURE_ID = 0xfff; -struct gesture_inserter { - struct slot_state state[DIM_INSTANCE]; - grail_mask_t unused[DIM_INSTANCE_BYTES]; - grail_mask_t fresh[DIM_INSTANCE_BYTES]; - grail_mask_t used[DIM_INSTANCE_BYTES]; - grail_time_t time; - int gestureid; - int transformed; - float scale_x, scale_y, scale_r; - float trans_x, trans_y; -}; - static const int grail_main_type[DIM_GRAIL_TYPE] = { GRAIL_MAIN_DRAG, GRAIL_MAIN_PINCH, @@ -72,19 +60,15 @@ static const int grail_main_type[DIM_GRAIL_TYPE] = { static void transform_pos(const struct gesture_inserter *gin, struct grail_coord *pos) { - if (gin->transformed) { - pos->x *= gin->scale_x; - pos->x += gin->trans_x; - pos->y *= gin->scale_y; - pos->y += gin->trans_y; - } + pos->x *= gin->scale_x; + pos->x += gin->trans_x; + pos->y *= gin->scale_y; + pos->y += gin->trans_y; } static void transform_prop(const struct gesture_inserter *gin, int type, grail_prop_t *prop, int nprop) { - if (!gin->transformed) - return; switch (grail_main_type[type]) { case GRAIL_MAIN_DRAG: prop[GRAIL_PROP_DRAG_DX] *= gin->scale_x; @@ -218,6 +202,11 @@ int gin_init(struct grail *ge) return -ENOMEM; for (i = 0; i < DIM_INSTANCE; i++) grail_mask_set(gin->unused, i); + gin->scale_x = 1; + gin->scale_y = 1; + gin->scale_r = 1; + gin->trans_x = 1; + gin->trans_y = 1; ge->gin = gin; return 0; } @@ -395,5 +384,4 @@ void grail_set_bbox(struct grail *ge, gin->scale_r = sqrt((sx * sx + sy * sy) / 2); gin->trans_x = tmin->x - dmin.x * sx; gin->trans_y = tmin->y - dmin.y * sy; - gin->transformed = 1; } diff --git a/src/grail-inserter.h b/src/grail-inserter.h index a81e431..f8ec5ca 100644 --- a/src/grail-inserter.h +++ b/src/grail-inserter.h @@ -46,6 +46,27 @@ struct slot_state { struct gebuf buf; }; +struct gesture_inserter { + struct slot_state state[DIM_INSTANCE]; + grail_mask_t unused[DIM_INSTANCE_BYTES]; + grail_mask_t fresh[DIM_INSTANCE_BYTES]; + grail_mask_t used[DIM_INSTANCE_BYTES]; + grail_time_t time; + int gestureid; + float scale_x, scale_y, scale_r; + float trans_x, trans_y; +}; + +static inline float gin_prop_x(const struct gesture_inserter *gin, float x) +{ + return gin->scale_x * x + gin->trans_x; +} + +static inline float gin_prop_y(const struct gesture_inserter *gin, float y) +{ + return gin->scale_y * y + gin->trans_y; +} + int gin_init(struct grail *ge); void gin_destroy(struct grail *ge); -- cgit v1.2.3