Loading include/ui/Input.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -203,6 +203,8 @@ struct PointerCoords { status_t setAxisValue(int32_t axis, float value); status_t setAxisValue(int32_t axis, float value); float* editAxisValue(int32_t axis); float* editAxisValue(int32_t axis); void scale(float scale); #ifdef HAVE_ANDROID_OS #ifdef HAVE_ANDROID_OS status_t readFromParcel(Parcel* parcel); status_t readFromParcel(Parcel* parcel); status_t writeToParcel(Parcel* parcel) const; status_t writeToParcel(Parcel* parcel) const; Loading libs/ui/Input.cpp +23 −24 Original line number Original line Diff line number Diff line Loading @@ -298,6 +298,24 @@ float* PointerCoords::editAxisValue(int32_t axis) { return &values[index]; return &values[index]; } } static inline void scaleAxisValue(PointerCoords& c, int axis, float scaleFactor) { float* value = c.editAxisValue(axis); if (value) { *value *= scaleFactor; } } void PointerCoords::scale(float scaleFactor) { // No need to scale pressure or size since they are normalized. // No need to scale orientation since it is meaningless to do so. scaleAxisValue(*this, AMOTION_EVENT_AXIS_X, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_Y, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_TOUCH_MAJOR, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_TOUCH_MINOR, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_TOOL_MAJOR, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_TOOL_MINOR, scaleFactor); } #ifdef HAVE_ANDROID_OS #ifdef HAVE_ANDROID_OS status_t PointerCoords::readFromParcel(Parcel* parcel) { status_t PointerCoords::readFromParcel(Parcel* parcel) { bits = parcel->readInt64(); bits = parcel->readInt64(); Loading Loading @@ -411,11 +429,9 @@ float MotionEvent::getAxisValue(int32_t axis, size_t pointerIndex) const { float value = getRawPointerCoords(pointerIndex)->getAxisValue(axis); float value = getRawPointerCoords(pointerIndex)->getAxisValue(axis); switch (axis) { switch (axis) { case AMOTION_EVENT_AXIS_X: case AMOTION_EVENT_AXIS_X: value += mXOffset; return value + mXOffset; break; case AMOTION_EVENT_AXIS_Y: case AMOTION_EVENT_AXIS_Y: value += mYOffset; return value + mYOffset; break; } } return value; return value; } } Loading @@ -435,11 +451,9 @@ float MotionEvent::getHistoricalAxisValue(int32_t axis, size_t pointerIndex, float value = getHistoricalRawPointerCoords(pointerIndex, historicalIndex)->getAxisValue(axis); float value = getHistoricalRawPointerCoords(pointerIndex, historicalIndex)->getAxisValue(axis); switch (axis) { switch (axis) { case AMOTION_EVENT_AXIS_X: case AMOTION_EVENT_AXIS_X: value += mXOffset; return value + mXOffset; break; case AMOTION_EVENT_AXIS_Y: case AMOTION_EVENT_AXIS_Y: value += mYOffset; return value + mYOffset; break; } } return value; return value; } } Loading @@ -449,13 +463,6 @@ void MotionEvent::offsetLocation(float xOffset, float yOffset) { mYOffset += yOffset; mYOffset += yOffset; } } static inline void scaleAxisValue(PointerCoords& c, int axis, float scaleFactor) { float* value = c.editAxisValue(axis); if (value) { *value *= scaleFactor; } } void MotionEvent::scale(float scaleFactor) { void MotionEvent::scale(float scaleFactor) { mXOffset *= scaleFactor; mXOffset *= scaleFactor; mYOffset *= scaleFactor; mYOffset *= scaleFactor; Loading @@ -464,15 +471,7 @@ void MotionEvent::scale(float scaleFactor) { size_t numSamples = mSamplePointerCoords.size(); size_t numSamples = mSamplePointerCoords.size(); for (size_t i = 0; i < numSamples; i++) { for (size_t i = 0; i < numSamples; i++) { PointerCoords& c = mSamplePointerCoords.editItemAt(i); mSamplePointerCoords.editItemAt(i).scale(scaleFactor); // No need to scale pressure or size since they are normalized. // No need to scale orientation since it is meaningless to do so. scaleAxisValue(c, AMOTION_EVENT_AXIS_X, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_Y, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_TOUCH_MAJOR, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_TOUCH_MINOR, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_TOOL_MAJOR, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_TOOL_MINOR, scaleFactor); } } } } Loading Loading
include/ui/Input.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -203,6 +203,8 @@ struct PointerCoords { status_t setAxisValue(int32_t axis, float value); status_t setAxisValue(int32_t axis, float value); float* editAxisValue(int32_t axis); float* editAxisValue(int32_t axis); void scale(float scale); #ifdef HAVE_ANDROID_OS #ifdef HAVE_ANDROID_OS status_t readFromParcel(Parcel* parcel); status_t readFromParcel(Parcel* parcel); status_t writeToParcel(Parcel* parcel) const; status_t writeToParcel(Parcel* parcel) const; Loading
libs/ui/Input.cpp +23 −24 Original line number Original line Diff line number Diff line Loading @@ -298,6 +298,24 @@ float* PointerCoords::editAxisValue(int32_t axis) { return &values[index]; return &values[index]; } } static inline void scaleAxisValue(PointerCoords& c, int axis, float scaleFactor) { float* value = c.editAxisValue(axis); if (value) { *value *= scaleFactor; } } void PointerCoords::scale(float scaleFactor) { // No need to scale pressure or size since they are normalized. // No need to scale orientation since it is meaningless to do so. scaleAxisValue(*this, AMOTION_EVENT_AXIS_X, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_Y, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_TOUCH_MAJOR, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_TOUCH_MINOR, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_TOOL_MAJOR, scaleFactor); scaleAxisValue(*this, AMOTION_EVENT_AXIS_TOOL_MINOR, scaleFactor); } #ifdef HAVE_ANDROID_OS #ifdef HAVE_ANDROID_OS status_t PointerCoords::readFromParcel(Parcel* parcel) { status_t PointerCoords::readFromParcel(Parcel* parcel) { bits = parcel->readInt64(); bits = parcel->readInt64(); Loading Loading @@ -411,11 +429,9 @@ float MotionEvent::getAxisValue(int32_t axis, size_t pointerIndex) const { float value = getRawPointerCoords(pointerIndex)->getAxisValue(axis); float value = getRawPointerCoords(pointerIndex)->getAxisValue(axis); switch (axis) { switch (axis) { case AMOTION_EVENT_AXIS_X: case AMOTION_EVENT_AXIS_X: value += mXOffset; return value + mXOffset; break; case AMOTION_EVENT_AXIS_Y: case AMOTION_EVENT_AXIS_Y: value += mYOffset; return value + mYOffset; break; } } return value; return value; } } Loading @@ -435,11 +451,9 @@ float MotionEvent::getHistoricalAxisValue(int32_t axis, size_t pointerIndex, float value = getHistoricalRawPointerCoords(pointerIndex, historicalIndex)->getAxisValue(axis); float value = getHistoricalRawPointerCoords(pointerIndex, historicalIndex)->getAxisValue(axis); switch (axis) { switch (axis) { case AMOTION_EVENT_AXIS_X: case AMOTION_EVENT_AXIS_X: value += mXOffset; return value + mXOffset; break; case AMOTION_EVENT_AXIS_Y: case AMOTION_EVENT_AXIS_Y: value += mYOffset; return value + mYOffset; break; } } return value; return value; } } Loading @@ -449,13 +463,6 @@ void MotionEvent::offsetLocation(float xOffset, float yOffset) { mYOffset += yOffset; mYOffset += yOffset; } } static inline void scaleAxisValue(PointerCoords& c, int axis, float scaleFactor) { float* value = c.editAxisValue(axis); if (value) { *value *= scaleFactor; } } void MotionEvent::scale(float scaleFactor) { void MotionEvent::scale(float scaleFactor) { mXOffset *= scaleFactor; mXOffset *= scaleFactor; mYOffset *= scaleFactor; mYOffset *= scaleFactor; Loading @@ -464,15 +471,7 @@ void MotionEvent::scale(float scaleFactor) { size_t numSamples = mSamplePointerCoords.size(); size_t numSamples = mSamplePointerCoords.size(); for (size_t i = 0; i < numSamples; i++) { for (size_t i = 0; i < numSamples; i++) { PointerCoords& c = mSamplePointerCoords.editItemAt(i); mSamplePointerCoords.editItemAt(i).scale(scaleFactor); // No need to scale pressure or size since they are normalized. // No need to scale orientation since it is meaningless to do so. scaleAxisValue(c, AMOTION_EVENT_AXIS_X, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_Y, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_TOUCH_MAJOR, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_TOUCH_MINOR, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_TOOL_MAJOR, scaleFactor); scaleAxisValue(c, AMOTION_EVENT_AXIS_TOOL_MINOR, scaleFactor); } } } } Loading