From 8ced3667a30e00bd2368d4b5417f1f07cc86d290 Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Fri, 14 May 2010 01:15:14 +0200 Subject: Add convenience methods for distance to capability center point Signed-off-by: Henrik Rydberg --- src/capabilities.c | 10 ++++++++++ src/capabilities.h | 3 +++ src/mtstate.h | 14 ++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/src/capabilities.c b/src/capabilities.c index 9879ddf..cd96e8e 100644 --- a/src/capabilities.c +++ b/src/capabilities.c @@ -128,6 +128,16 @@ int get_cap_wsize(const struct Capabilities *cap) return cap->abs_touch_major.maximum - cap->abs_touch_major.minimum; } +int get_cap_xmid(const struct Capabilities *cap) +{ + return (cap->abs_position_x.maximum + cap->abs_position_x.minimum) >> 1; +} + +int get_cap_ymid(const struct Capabilities *cap) +{ + return (cap->abs_position_y.maximum + cap->abs_position_y.minimum) >> 1; +} + void output_capabilities(const struct Capabilities *cap) { char line[1024]; diff --git a/src/capabilities.h b/src/capabilities.h index 402d297..23086bd 100644 --- a/src/capabilities.h +++ b/src/capabilities.h @@ -49,6 +49,9 @@ int get_cap_xsize(const struct Capabilities *cap); int get_cap_ysize(const struct Capabilities *cap); int get_cap_wsize(const struct Capabilities *cap); +int get_cap_xmid(const struct Capabilities *cap); +int get_cap_ymid(const struct Capabilities *cap); + void output_capabilities(const struct Capabilities *cap); #endif diff --git a/src/mtstate.h b/src/mtstate.h index fa297cd..a8feaa4 100644 --- a/src/mtstate.h +++ b/src/mtstate.h @@ -44,5 +44,19 @@ void output_mtstate(const struct MTState *s); const struct MTFinger *find_finger(const struct MTState *s, int id); + +static inline int center_dist2(const struct MTFinger *a, + const struct Capabilities *caps) +{ + return dist2(a->hw.position_x - get_cap_xmid(caps), + a->hw.position_y - get_cap_ymid(caps)); +} + +static inline int center_maxdist2(const struct Capabilities *caps) +{ + return dist2(caps->abs_position_x.maximum - get_cap_xmid(caps), + caps->abs_position_y.maximum - get_cap_ymid(caps)); +} + #endif -- cgit v1.2.3