diff options
author | Florin Malita <fmalita@chromium.org> | 2018-02-19 21:43:47 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-20 14:54:13 +0000 |
commit | cefc1b97405d7bad2c621987394fc2d0c6300887 (patch) | |
tree | c8ff42e2c65687772954c54e1e8085c791d380f0 /tools/viewer/Viewer.cpp | |
parent | 6abda4357ce694a692b5e697b7ac49ec3676b5eb (diff) |
Pass Viewer touch events to slides
Change-Id: Ia7b097c22e497e4e84be45108ac9796d89305ef3
Reviewed-on: https://skia-review.googlesource.com/108363
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'tools/viewer/Viewer.cpp')
-rw-r--r-- | tools/viewer/Viewer.cpp | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp index 92741fea97..f806acf344 100644 --- a/tools/viewer/Viewer.cpp +++ b/tools/viewer/Viewer.cpp @@ -1009,10 +1009,26 @@ void Viewer::onPaint(SkCanvas* canvas) { this->updateUIState(); } +SkPoint Viewer::mapEvent(float x, float y) { + const auto m = this->computeMatrix(); + SkMatrix inv; + + SkAssertResult(m.invert(&inv)); + + return inv.mapXY(x, y); +} + bool Viewer::onTouch(intptr_t owner, Window::InputState state, float x, float y) { if (GestureDevice::kMouse == fGestureDevice) { return false; } + + const auto slidePt = this->mapEvent(x, y); + if (fSlides[fCurrentSlide]->onMouse(slidePt.x(), slidePt.y(), state, 0)) { + fWindow->inval(); + return true; + } + void* castedOwner = reinterpret_cast<void*>(owner); switch (state) { case Window::kUp_InputState: { @@ -1038,15 +1054,10 @@ bool Viewer::onMouse(int x, int y, Window::InputState state, uint32_t modifiers) return false; } - const auto slideMatrix = this->computeMatrix(); - SkMatrix slideInvMatrix; - if (slideMatrix.invert(&slideInvMatrix)) { - SkPoint slideMouse = SkPoint::Make(x, y); - slideInvMatrix.mapPoints(&slideMouse, 1); - if (fSlides[fCurrentSlide]->onMouse(slideMouse.x(), slideMouse.y(), state, modifiers)) { - fWindow->inval(); - return true; - } + const auto slidePt = this->mapEvent(x, y); + if (fSlides[fCurrentSlide]->onMouse(slidePt.x(), slidePt.y(), state, modifiers)) { + fWindow->inval(); + return true; } switch (state) { |