[PATCH libinput] Fix normalization functions
Peter Hutterer
peter.hutterer at who-t.net
Fri Oct 10 00:55:25 PDT 2014
On Thu, Oct 09, 2014 at 10:28:54AM +0200, Hans de Goede wrote:
> Hi,
>
> On 10/09/2014 12:56 AM, Bill Spitzak wrote:
> > That certainly looks correct, but this code will return a value less than 1.0 when absinfo->value == absinfo->maximum. Is this correct? If it is supposed to be 1.0 then I would remove the +1 in the line that computes range.
>
> Right, we need to drop the +1, Peter ?
yeah, correct. the +1 is from the other scale functions which scale to
pixels (where the max is exclusive), obviously doesn't apply here where the
max is inclusive. Bill, can you send me a patch for this please, thanks.
Cheers,
Peter
> >
> > On 10/08/2014 02:53 PM, Jason Gerecke wrote:
> >> We need to *subtract*, not *add* the minimum to determine the
> >> range-effective value. For example: if (min, current, max) is
> >> (100, 100, 1000) then the normalized value would be 0.0, not 0.2.
> >>
> >> Signed-off-by: Jason Gerecke <killertofu at gmail.com>
> >> ---
> >> This patch should be applied to the 'tablet-support' branch, obviously.
> >> ...Re-sending since I messed up the mailinglist address.
> >>
> >> src/evdev-tablet.c | 4 ++--
> >> 1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/src/evdev-tablet.c b/src/evdev-tablet.c
> >> index a63b734..ff5f737 100644
> >> --- a/src/evdev-tablet.c
> >> +++ b/src/evdev-tablet.c
> >> @@ -106,7 +106,7 @@ tablet_update_tool(struct tablet_dispatch *tablet,
> >> static inline double
> >> normalize_pressure_or_dist(const struct input_absinfo * absinfo) {
> >> double range = absinfo->maximum - absinfo->minimum + 1;
> >> - double value = (absinfo->value + absinfo->minimum) / range;
> >> + double value = (absinfo->value - absinfo->minimum) / range;
> >>
> >> return value;
> >> }
> >> @@ -114,7 +114,7 @@ normalize_pressure_or_dist(const struct input_absinfo * absinfo) {
> >> static inline double
> >> normalize_tilt(const struct input_absinfo * absinfo) {
> >> double range = absinfo->maximum - absinfo->minimum + 1;
> >> - double value = (absinfo->value + absinfo->minimum) / range;
> >> + double value = (absinfo->value - absinfo->minimum) / range;
> >>
> >> /* Map to the (-1, 1) range */
> >> return (value * 2) - 1;
> >>
> > _______________________________________________
> > wayland-devel mailing list
> > wayland-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
More information about the wayland-devel
mailing list