On Wed, Jun 10, 2015 at 04:09:13PM +0200, Andreas Pokorny wrote:
> To be used inside pressure and orientation access functions of
> libinput.c
> ---
>  src/evdev.c | 11 ++---------
>  src/evdev.h |  7 +++++++
>  2 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/src/evdev.c b/src/evdev.c
> index af507d6..6f68554 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -224,19 +224,12 @@ transform_absolute(struct evdev_device *device,
>       matrix_mult_vec(&device->abs.calibration, &point->x, &point->y);
>  }
>  
> -static inline double
> -scale_axis(const struct input_absinfo *absinfo, double val, double to_range)
> -{
> -     return (val - absinfo->minimum) * to_range /
> -             (absinfo->maximum - absinfo->minimum + 1);
> -}
> -
>  double
>  evdev_device_transform_x(struct evdev_device *device,
>                        double x,
>                        uint32_t width)
>  {
> -     return scale_axis(device->abs.absinfo_x, x, width);
> +     return evdev_scale_axis(device->abs.absinfo_x, x, width);
>  }
>  
>  double
> @@ -244,7 +237,7 @@ evdev_device_transform_y(struct evdev_device *device,
>                        double y,
>                        uint32_t height)
>  {
> -     return scale_axis(device->abs.absinfo_y, y, height);
> +     return evdev_scale_axis(device->abs.absinfo_y, y, height);
>  }
>  
>  static inline void
> diff --git a/src/evdev.h b/src/evdev.h
> index b8ef599..8e67e5d 100644
> --- a/src/evdev.h
> +++ b/src/evdev.h
> @@ -419,6 +419,13 @@ evdev_convert_to_mm(const struct input_absinfo *absinfo, 
> double v)
>       return value/absinfo->resolution;
>  }
>  
> +static inline double
> +evdev_scale_axis(const struct input_absinfo *absinfo, double val, double 
> to_range)
> +{
> +     return (val - absinfo->minimum) * to_range /
> +             (absinfo->maximum - absinfo->minimum + 1);
> +}

nope, this won't work for normal normalisation, the +1 is for an [min, max[
range which you need for screen scaling, but for normalization you'd want
[min, max]. best to leave the scale_axis in place and make a
evdev_normalize_axis helper.
except for orientation (if in degrees), that's where you need a [min, max[
range too :)

for the tablet/buttonset branches we ended up with separate functions per
axis, so a normalize_major_minor, normalize_orientation, etc. is ok.

Cheers,
   Peter

> +
>  int
>  evdev_init_left_handed(struct evdev_device *device,
>                      void (*change_to_left_handed)(struct evdev_device *));
> -- 
> 2.1.4
> 
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to