From ebaf307ab1b22d4786cc5fb55170204759e887ce Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Fri, 14 May 2010 01:14:04 +0200 Subject: Introduce MTFinger structure Switch from the FingerData structure to the MTFinger structure, making room for more computed finger details in MTState. Signed-off-by: Henrik Rydberg --- src/gestures.c | 10 +++++----- src/mtstate.c | 19 +++++++++++++++---- src/mtstate.h | 9 +++++++-- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/gestures.c b/src/gestures.c index a0ef5d4..9426226 100644 --- a/src/gestures.c +++ b/src/gestures.c @@ -31,18 +31,18 @@ static const int FINGER_ATTACK_MS = 70; static const int FINGER_DECAY_MS = 120; -inline int dxval(const struct FingerState *a, const struct FingerState *b) +inline int dxval(const struct MTFinger *a, const struct MTFinger *b) { return a->hw.position_x - b->hw.position_x; } -inline int dyval(const struct FingerState *a, const struct FingerState *b) +inline int dyval(const struct MTFinger *a, const struct MTFinger *b) { return a->hw.position_y - b->hw.position_y; } static void extract_finger_configuration(struct Gestures *gs, struct MTouch* mt) { - const struct FingerState *f = mt->state.finger; + const struct MTFinger *f = mt->state.finger; int i, same = mt->state.nfinger == mt->prev_state.nfinger; for (i = 0; i < mt->state.nfinger; i++) same = same && find_finger(&mt->prev_state, f[i].id); @@ -51,7 +51,7 @@ static void extract_finger_configuration(struct Gestures *gs, struct MTouch* mt) static void extract_pointers(struct Gestures *gs, struct MTouch* mt) { - const struct FingerState *f = mt->state.finger; + const struct MTFinger *f = mt->state.finger; int i; if (mt->state.nfinger < 2) { @@ -86,7 +86,7 @@ static void extract_pointers(struct Gestures *gs, struct MTouch* mt) static void extract_movement(struct Gestures *gs, struct MTouch* mt) { - const struct FingerState *prev, *f = mt->state.finger; + const struct MTFinger *prev, *f = mt->state.finger; int i, x = 0, y = 0; int dx, dy, xcut, ycut, xmax = 0, ymax = 0; diff --git a/src/mtstate.c b/src/mtstate.c index a8541dc..c3bcc78 100644 --- a/src/mtstate.c +++ b/src/mtstate.c @@ -39,6 +39,14 @@ static int touching_finger(const struct FingerData *hw, return 1; } +static int set_finger(struct MTFinger *f, + const struct FingerState *fs, + const struct Capabilities *caps) +{ + f->hw = fs->hw; + f->id = fs->id; +} + void extract_mtstate(struct MTState *s, const struct HWState *hs, const struct Capabilities *caps) @@ -46,15 +54,18 @@ void extract_mtstate(struct MTState *s, int i; s->nfinger = 0; - for (i = 0; i < hs->nfinger; i++) - if (touching_finger(&hs->finger[i].hw, caps)) - s->finger[s->nfinger++] = hs->finger[i]; + for (i = 0; i < hs->nfinger; i++) { + if (!touching_finger(&hs->finger[i].hw, caps)) + continue; + set_finger(&s->finger[s->nfinger], &hs->finger[i], caps); + s->nfinger++; + } s->button = hs->button; s->evtime = hs->evtime; } -const struct FingerState *find_finger(const struct MTState *s, int id) +const struct MTFinger *find_finger(const struct MTState *s, int id) { int i; diff --git a/src/mtstate.h b/src/mtstate.h index f8790dd..fa297cd 100644 --- a/src/mtstate.h +++ b/src/mtstate.h @@ -24,8 +24,13 @@ #include "hwstate.h" +struct MTFinger { + struct FingerData hw; + int id; +}; + struct MTState { - struct FingerState finger[DIM_FINGER]; + struct MTFinger finger[DIM_FINGER]; int nfinger; unsigned button; mstime_t evtime; @@ -37,7 +42,7 @@ void extract_mtstate(struct MTState *s, const struct Capabilities *caps); void output_mtstate(const struct MTState *s); -const struct FingerState *find_finger(const struct MTState *s, int id); +const struct MTFinger *find_finger(const struct MTState *s, int id); #endif -- cgit v1.2.3