Check maximum value in EvdevAbsolute

This commit is contained in:
Iwan Timmer
2014-04-10 16:05:01 +02:00
parent 22138d000c
commit 1548ca9af1
+13 -2
View File
@@ -17,6 +17,7 @@ public class EvdevAbsolute {
private int avg; private int avg;
private int range; private int range;
private int flat;
private boolean reverse; private boolean reverse;
@@ -46,7 +47,12 @@ public class EvdevAbsolute {
* @return input value as short * @return input value as short
*/ */
public short getShort(int value) { public short getShort(int value) {
return (short) ((value-avg) * (reverse?-range:range) / Short.MAX_VALUE); if (value>range+avg)
return reverse?Short.MIN_VALUE:Short.MAX_VALUE;
else if (value<range-avg)
return reverse?Short.MAX_VALUE:Short.MIN_VALUE;
else
return (short) ((value-avg) * (reverse?-range:range) / Short.MAX_VALUE);
} }
/** /**
@@ -55,7 +61,12 @@ public class EvdevAbsolute {
* @return input value as byte * @return input value as byte
*/ */
public byte getByte(int value) { public byte getByte(int value) {
return (byte) ((value-avg) * (reverse?-range:range) / Byte.MAX_VALUE); if (value>range+avg)
return reverse?Byte.MIN_VALUE:Byte.MAX_VALUE;
else if (value<range-avg)
return reverse?Byte.MAX_VALUE:Byte.MIN_VALUE;
else
return (byte) ((value-avg) * (reverse?-range:range) / Byte.MAX_VALUE);
} }
/** /**