Author: mmlr Date: 2011-06-08 02:26:04 +0200 (Wed, 08 Jun 2011) New Revision: 42033 Changeset: https://dev.haiku-os.org/changeset/42033 Modified: haiku/trunk/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.cpp haiku/trunk/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.h Log: Add HIDReportItem::ScaledRangeData() that scales the data into a pariticular range. Modified: haiku/trunk/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.cpp =================================================================== --- haiku/trunk/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.cpp 2011-06-08 00:20:58 UTC (rev 42032) +++ haiku/trunk/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.cpp 2011-06-08 00:26:04 UTC (rev 42033) @@ -146,6 +146,20 @@ } +uint32 +HIDReportItem::ScaledRangeData(uint32 minimum, uint32 maximum) +{ + uint64 zeroBasedData; + if (Signed()) + zeroBasedData = (int32)fData - (int32)fMinimum; + else + zeroBasedData = fData - fMinimum; + + return zeroBasedData * (maximum - minimum + 1) / (fMaximum - fMinimum + 1) + + minimum; +} + + float HIDReportItem::ScaledFloatData() { Modified: haiku/trunk/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.h =================================================================== --- haiku/trunk/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.h 2011-06-08 00:20:58 UTC (rev 42032) +++ haiku/trunk/src/add-ons/kernel/drivers/input/usb_hid/HIDReportItem.h 2011-06-08 00:26:04 UTC (rev 42033) @@ -37,6 +37,7 @@ uint32 Data() { return fData; }; uint32 ScaledData(uint8 scaleToBits, bool toBeSigned); + uint32 ScaledRangeData(uint32 minimum, uint32 maximum); float ScaledFloatData(); bool Valid() { return fValid; };