Only question I have is where the value of WCM_BAMBOO3_MAXX comes
from. I understand its use, but the name indicates to me that its the
X resolution of a 3rd generation Bamboo... Except that, from what I
can tell, none of the Bamboos (of any generation) have an X resolution
of 4096.

That aside, for all three patches:

Reviewed-by: Jason Gerecke <killert...@gmail.com>

Jason

---
Day xee-nee-svsh duu-'ushtlh-ts'it;
nuu-wee-ya' duu-xan' 'vm-nvshtlh-ts'it.
Huu-chan xuu naa~-gha.



On Tue, Nov 22, 2011 at 7:39 PM,  <ch...@cnpbagwell.com> wrote:
> From: Chris Bagwell <ch...@cnpbagwell.com>
>
> 2 finger Gestures will start working on a wider range of
> hardware with different resolutions now.
>
> Signed-off-by: Chris Bagwell <ch...@cnpbagwell.com>
> ---
>  src/wcmCommon.c         |    4 ----
>  src/wcmTouchFilter.c    |   22 ++++++++++++----------
>  src/wcmValidateDevice.c |   20 +++++++++++++++++---
>  src/xf86WacomDefs.h     |    3 +--
>  4 files changed, 30 insertions(+), 19 deletions(-)
>
> diff --git a/src/wcmCommon.c b/src/wcmCommon.c
> index 600991e..f1ef677 100644
> --- a/src/wcmCommon.c
> +++ b/src/wcmCommon.c
> @@ -1395,11 +1395,7 @@ WacomCommonPtr wcmNewCommon(void)
>        common->wcmFlags = 0;               /* various flags */
>        common->wcmProtocolLevel = WCM_PROTOCOL_4; /* protocol level */
>        common->wcmTPCButton = 0;          /* set Tablet PC button on/off */
> -       common->wcmGestureParameters.wcmZoomDistance = 50;
> -       common->wcmGestureParameters.wcmZoomDistanceDefault = 50;
>        common->wcmGestureParameters.wcmScrollDirection = 0;
> -       common->wcmGestureParameters.wcmScrollDistance = 20;
> -       common->wcmGestureParameters.wcmScrollDistanceDefault = 20;
>        common->wcmGestureParameters.wcmTapTime = 250;
>        common->wcmGestureParameters.wcmTapTimeDefault = 250;
>        common->wcmRotate = ROTATE_NONE;   /* default tablet rotation to off */
> diff --git a/src/wcmTouchFilter.c b/src/wcmTouchFilter.c
> index b788e34..7fa2975 100644
> --- a/src/wcmTouchFilter.c
> +++ b/src/wcmTouchFilter.c
> @@ -24,7 +24,6 @@
>  #include <math.h>
>
>  /* Defines for 2FC Gesture */
> -#define WACOM_INLINE_DISTANCE        40
>  #define WACOM_HORIZ_ALLOWED           1
>  #define WACOM_VERT_ALLOWED            2
>  #define WACOM_GESTURE_LAG_TIME       10
> @@ -61,17 +60,18 @@ static Bool pointsInLine(WacomCommonPtr common, 
> WacomDeviceState ds0,
>                        WACOM_HORIZ_ALLOWED : WACOM_VERT_ALLOWED;
>        int vertical_rotated = (rotated) ?
>                        WACOM_VERT_ALLOWED : WACOM_HORIZ_ALLOWED;
> +       int max_spread = 
> common->wcmGestureParameters.wcmMaxScrollFingerSpread;
>
>        if (!common->wcmGestureParameters.wcmScrollDirection)
>        {
> -               if ((abs(ds0.x - ds1.x) < WACOM_INLINE_DISTANCE) &&
> -                       (abs(ds0.y - ds1.y) > WACOM_INLINE_DISTANCE))
> +               if ((abs(ds0.x - ds1.x) < max_spread) &&
> +                       (abs(ds0.y - ds1.y) > max_spread))
>                {
>                        common->wcmGestureParameters.wcmScrollDirection = 
> horizon_rotated;
>                        ret = TRUE;
>                }
> -               if ((abs(ds0.y - ds1.y) < WACOM_INLINE_DISTANCE) &&
> -                       (abs(ds0.x - ds1.x) > WACOM_INLINE_DISTANCE))
> +               if ((abs(ds0.y - ds1.y) < max_spread) &&
> +                       (abs(ds0.x - ds1.x) > max_spread))
>                {
>                        common->wcmGestureParameters.wcmScrollDirection = 
> vertical_rotated;
>                        ret = TRUE;
> @@ -79,12 +79,12 @@ static Bool pointsInLine(WacomCommonPtr common, 
> WacomDeviceState ds0,
>        }
>        else if (common->wcmGestureParameters.wcmScrollDirection == 
> vertical_rotated)
>        {
> -               if (abs(ds0.y - ds1.y) < WACOM_INLINE_DISTANCE)
> +               if (abs(ds0.y - ds1.y) < max_spread)
>                        ret = TRUE;
>        }
>        else if (common->wcmGestureParameters.wcmScrollDirection == 
> horizon_rotated)
>        {
> -               if (abs(ds0.x - ds1.x) < WACOM_INLINE_DISTANCE)
> +               if (abs(ds0.x - ds1.x) < max_spread)
>                        ret = TRUE;
>        }
>        return ret;
> @@ -413,6 +413,7 @@ static void wcmFingerScroll(WacomDevicePtr priv)
>        int midPoint_old = 0;
>        int i = 0, dist = 0;
>        WacomFilterState filterd;  /* borrow this struct */
> +       int max_spread = 
> common->wcmGestureParameters.wcmMaxScrollFingerSpread;
>
>        DBG(10, priv, "\n");
>
> @@ -420,7 +421,7 @@ static void wcmFingerScroll(WacomDevicePtr priv)
>        {
>                if (abs(touchDistance(ds[0], ds[1]) -
>                        touchDistance(common->wcmGestureState[0],
> -                       common->wcmGestureState[1])) < WACOM_INLINE_DISTANCE)
> +                       common->wcmGestureState[1])) < max_spread)
>                {
>                        /* two fingers stay close to each other all the time 
> and
>                         * move in vertical or horizontal direction together
> @@ -510,6 +511,7 @@ static void wcmFingerZoom(WacomDevicePtr priv)
>        int count, button;
>        int dist = touchDistance(common->wcmGestureState[0],
>                        common->wcmGestureState[1]);
> +       int max_spread = 
> common->wcmGestureParameters.wcmMaxScrollFingerSpread;
>
>        DBG(10, priv, "\n");
>
> @@ -519,13 +521,13 @@ static void wcmFingerZoom(WacomDevicePtr priv)
>                if (abs(touchDistance(ds[0], ds[1]) -
>                        touchDistance(common->wcmGestureState[0],
>                                      common->wcmGestureState[1])) >
> -                       (3 * WACOM_INLINE_DISTANCE))
> +                       (3 * max_spread))
>                {
>                        /* left button might be down, send it up first */
>                        wcmSendButtonClick(priv, 1, 0);
>
>                        /* fingers moved apart more than 3 times
> -                        * WACOM_INLINE_DISTANCE, zoom mode is entered */
> +                        * wcmMaxScrollFingerSpread, zoom mode is entered */
>                        common->wcmGestureMode = GESTURE_ZOOM_MODE;
>                }
>        }
> diff --git a/src/wcmValidateDevice.c b/src/wcmValidateDevice.c
> index e947fbe..d2cf636 100644
> --- a/src/wcmValidateDevice.c
> +++ b/src/wcmValidateDevice.c
> @@ -927,6 +927,12 @@ error:
>        return FALSE;
>  }
>
> +/* The values were based on trail and error. */
> +#define WCM_BAMBOO3_MAXX 4096.0
> +#define WCM_BAMBOO3_ZOOM_DISTANCE 180.0
> +#define WCM_BAMBOO3_SCROLL_DISTANCE 80.0
> +#define WCM_BAMBOO3_SCROLL_SPREAD_DISTANCE 350.0
> +
>  /**
>  * Parse post-init options for this device. Useful for overriding HW
>  * specific options computed during init phase (HW distances for example).
> @@ -950,16 +956,24 @@ Bool wcmPostInitParseOptions(InputInfoPtr pInfo, Bool 
> is_primary,
>                                           common->wcmMaxZ);
>
>        /* 2FG touch device */
> -       if (TabletHasFeature(common, WCM_2FGT))
> +       if (TabletHasFeature(common, WCM_2FGT) && IsTouch(priv))
>        {
> +               int zoom_distance = common->wcmMaxTouchX *
> +                       (WCM_BAMBOO3_ZOOM_DISTANCE / WCM_BAMBOO3_MAXX);
> +               int scroll_distance = common->wcmMaxTouchX *
> +                       (WCM_BAMBOO3_SCROLL_DISTANCE / WCM_BAMBOO3_MAXX);
>
>                common->wcmGestureParameters.wcmZoomDistance =
>                        xf86SetIntOption(pInfo->options, "ZoomDistance",
> -                       common->wcmGestureParameters.wcmZoomDistanceDefault);
> +                                        zoom_distance);
>
>                common->wcmGestureParameters.wcmScrollDistance =
>                        xf86SetIntOption(pInfo->options, "ScrollDistance",
> -                       
> common->wcmGestureParameters.wcmScrollDistanceDefault);
> +                                        scroll_distance);
> +
> +               common->wcmGestureParameters.wcmMaxScrollFingerSpread =
> +                       common->wcmMaxTouchX *
> +                       (WCM_BAMBOO3_SCROLL_SPREAD_DISTANCE / 
> WCM_BAMBOO3_MAXX);
>        }
>
>
> diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h
> index a95e5d3..417fe1d 100644
> --- a/src/xf86WacomDefs.h
> +++ b/src/xf86WacomDefs.h
> @@ -388,10 +388,9 @@ extern WacomDeviceClass gWacomISDV4Device;
>
>  typedef struct {
>        int wcmZoomDistance;           /* minimum distance for a zoom touch 
> gesture */
> -       int wcmZoomDistanceDefault;    /* default minimum distance for a zoom 
> touch gesture */
>        int wcmScrollDistance;         /* minimum motion before sending a 
> scroll gesture */
>        int wcmScrollDirection;        /* store the vertical or horizontal bit 
> in use */
> -       int wcmScrollDistanceDefault;  /* default minimum motion before 
> sending a scroll gesture */
> +       int wcmMaxScrollFingerSpread; /* maximum distance between fingers for 
> scroll gesture */
>        int wcmGestureUsed;            /* retain used gesture count within one 
> in-prox event */
>        int wcmTapTime;                /* minimum time between taps for a 
> right click */
>        int wcmTapTimeDefault;         /* default minimum time between taps 
> for a right click */
> --
> 1.7.7.3
>
>
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure
> contains a definitive record of customers, application performance,
> security threats, fraudulent activity, and more. Splunk takes this
> data and makes sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-novd2d
> _______________________________________________
> Linuxwacom-devel mailing list
> Linuxwacom-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
>

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to