Loading services/inputflinger/reader/mapper/TouchInputMapper.cpp +7 −4 Original line number Original line Diff line number Diff line Loading @@ -3644,6 +3644,9 @@ void TouchInputMapper::rotateAndScale(float& x, float& y) { const float xScaled = float(x - mRawPointerAxes.x.minValue) * mXScale; const float xScaled = float(x - mRawPointerAxes.x.minValue) * mXScale; const float yScaled = float(y - mRawPointerAxes.y.minValue) * mYScale; const float yScaled = float(y - mRawPointerAxes.y.minValue) * mYScale; const float xScaledMax = float(mRawPointerAxes.x.maxValue - x) * mXScale; const float yScaledMax = float(mRawPointerAxes.y.maxValue - y) * mYScale; // Rotate to surface coordinate. // Rotate to surface coordinate. // 0 - no swap and reverse. // 0 - no swap and reverse. // 90 - swap x/y and reverse y. // 90 - swap x/y and reverse y. Loading @@ -3655,16 +3658,16 @@ void TouchInputMapper::rotateAndScale(float& x, float& y) { y = yScaled + mYTranslate; y = yScaled + mYTranslate; break; break; case DISPLAY_ORIENTATION_90: case DISPLAY_ORIENTATION_90: y = mSurfaceRight - xScaled; y = xScaledMax - (mRawSurfaceWidth - mSurfaceRight); x = yScaled + mYTranslate; x = yScaled + mYTranslate; break; break; case DISPLAY_ORIENTATION_180: case DISPLAY_ORIENTATION_180: x = mSurfaceRight - xScaled; x = xScaledMax - (mRawSurfaceWidth - mSurfaceRight); y = mSurfaceBottom - yScaled; y = yScaledMax - (mRawSurfaceHeight - mSurfaceBottom); break; break; case DISPLAY_ORIENTATION_270: case DISPLAY_ORIENTATION_270: y = xScaled + mXTranslate; y = xScaled + mXTranslate; x = mSurfaceBottom - yScaled; x = yScaledMax - (mRawSurfaceHeight - mSurfaceBottom); break; break; default: default: assert(false); assert(false); Loading services/inputflinger/tests/InputReader_test.cpp +28 −0 Original line number Original line Diff line number Diff line Loading @@ -8045,6 +8045,34 @@ TEST_F(MultiTouchInputMapperTest_SurfaceRange, Viewports_SurfaceRange_270) { processPositionAndVerify(mapper, x - 1, y, x + 1, y, xExpected, yExpected); processPositionAndVerify(mapper, x - 1, y, x + 1, y, xExpected, yExpected); } } TEST_F(MultiTouchInputMapperTest_SurfaceRange, Viewports_SurfaceRange_Corner) { addConfigurationProperty("touch.deviceType", "touchScreen"); prepareDisplay(DISPLAY_ORIENTATION_0); prepareAxes(POSITION); MultiTouchInputMapper& mapper = addMapperAndConfigure<MultiTouchInputMapper>(); const int32_t x = 0; const int32_t y = 0; const int32_t xExpected = x; const int32_t yExpected = y; processPositionAndVerify(mapper, x - 1, y, x, y, xExpected, yExpected); clearViewports(); prepareDisplay(DISPLAY_ORIENTATION_90); // expect x/y = swap x/y then reverse y. const int32_t xExpected90 = y; const int32_t yExpected90 = DISPLAY_WIDTH - 1; processPositionAndVerify(mapper, x - 1, y, x, y, xExpected90, yExpected90); clearViewports(); prepareDisplay(DISPLAY_ORIENTATION_270); // expect x/y = swap x/y then reverse x. const int32_t xExpected270 = DISPLAY_HEIGHT - 1; const int32_t yExpected270 = x; processPositionAndVerify(mapper, x - 1, y, x, y, xExpected270, yExpected270); } TEST_F(MultiTouchInputMapperTest, Process_TouchpadCapture) { TEST_F(MultiTouchInputMapperTest, Process_TouchpadCapture) { // we need a pointer controller for mouse mode of touchpad (start pointer at 0,0) // we need a pointer controller for mouse mode of touchpad (start pointer at 0,0) std::shared_ptr<FakePointerController> fakePointerController = std::shared_ptr<FakePointerController> fakePointerController = Loading Loading
services/inputflinger/reader/mapper/TouchInputMapper.cpp +7 −4 Original line number Original line Diff line number Diff line Loading @@ -3644,6 +3644,9 @@ void TouchInputMapper::rotateAndScale(float& x, float& y) { const float xScaled = float(x - mRawPointerAxes.x.minValue) * mXScale; const float xScaled = float(x - mRawPointerAxes.x.minValue) * mXScale; const float yScaled = float(y - mRawPointerAxes.y.minValue) * mYScale; const float yScaled = float(y - mRawPointerAxes.y.minValue) * mYScale; const float xScaledMax = float(mRawPointerAxes.x.maxValue - x) * mXScale; const float yScaledMax = float(mRawPointerAxes.y.maxValue - y) * mYScale; // Rotate to surface coordinate. // Rotate to surface coordinate. // 0 - no swap and reverse. // 0 - no swap and reverse. // 90 - swap x/y and reverse y. // 90 - swap x/y and reverse y. Loading @@ -3655,16 +3658,16 @@ void TouchInputMapper::rotateAndScale(float& x, float& y) { y = yScaled + mYTranslate; y = yScaled + mYTranslate; break; break; case DISPLAY_ORIENTATION_90: case DISPLAY_ORIENTATION_90: y = mSurfaceRight - xScaled; y = xScaledMax - (mRawSurfaceWidth - mSurfaceRight); x = yScaled + mYTranslate; x = yScaled + mYTranslate; break; break; case DISPLAY_ORIENTATION_180: case DISPLAY_ORIENTATION_180: x = mSurfaceRight - xScaled; x = xScaledMax - (mRawSurfaceWidth - mSurfaceRight); y = mSurfaceBottom - yScaled; y = yScaledMax - (mRawSurfaceHeight - mSurfaceBottom); break; break; case DISPLAY_ORIENTATION_270: case DISPLAY_ORIENTATION_270: y = xScaled + mXTranslate; y = xScaled + mXTranslate; x = mSurfaceBottom - yScaled; x = yScaledMax - (mRawSurfaceHeight - mSurfaceBottom); break; break; default: default: assert(false); assert(false); Loading
services/inputflinger/tests/InputReader_test.cpp +28 −0 Original line number Original line Diff line number Diff line Loading @@ -8045,6 +8045,34 @@ TEST_F(MultiTouchInputMapperTest_SurfaceRange, Viewports_SurfaceRange_270) { processPositionAndVerify(mapper, x - 1, y, x + 1, y, xExpected, yExpected); processPositionAndVerify(mapper, x - 1, y, x + 1, y, xExpected, yExpected); } } TEST_F(MultiTouchInputMapperTest_SurfaceRange, Viewports_SurfaceRange_Corner) { addConfigurationProperty("touch.deviceType", "touchScreen"); prepareDisplay(DISPLAY_ORIENTATION_0); prepareAxes(POSITION); MultiTouchInputMapper& mapper = addMapperAndConfigure<MultiTouchInputMapper>(); const int32_t x = 0; const int32_t y = 0; const int32_t xExpected = x; const int32_t yExpected = y; processPositionAndVerify(mapper, x - 1, y, x, y, xExpected, yExpected); clearViewports(); prepareDisplay(DISPLAY_ORIENTATION_90); // expect x/y = swap x/y then reverse y. const int32_t xExpected90 = y; const int32_t yExpected90 = DISPLAY_WIDTH - 1; processPositionAndVerify(mapper, x - 1, y, x, y, xExpected90, yExpected90); clearViewports(); prepareDisplay(DISPLAY_ORIENTATION_270); // expect x/y = swap x/y then reverse x. const int32_t xExpected270 = DISPLAY_HEIGHT - 1; const int32_t yExpected270 = x; processPositionAndVerify(mapper, x - 1, y, x, y, xExpected270, yExpected270); } TEST_F(MultiTouchInputMapperTest, Process_TouchpadCapture) { TEST_F(MultiTouchInputMapperTest, Process_TouchpadCapture) { // we need a pointer controller for mouse mode of touchpad (start pointer at 0,0) // we need a pointer controller for mouse mode of touchpad (start pointer at 0,0) std::shared_ptr<FakePointerController> fakePointerController = std::shared_ptr<FakePointerController> fakePointerController = Loading