Add HIDReportItem::ScaledRangeData() that scales the data into a pariticular

range.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42033 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Lotz
2011-06-08 00:26:04 +00:00
parent 32aef194f4
commit 9028fd53bd
2 changed files with 15 additions and 0 deletions
@@ -146,6 +146,20 @@ HIDReportItem::ScaledData(uint8 scaleToBits, bool toBeSigned)
}
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()
{
@@ -37,6 +37,7 @@ public:
uint32 Data() { return fData; };
uint32 ScaledData(uint8 scaleToBits, bool toBeSigned);
uint32 ScaledRangeData(uint32 minimum, uint32 maximum);
float ScaledFloatData();
bool Valid() { return fValid; };