aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/viewer/Viewer.cpp
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2018-02-19 21:43:47 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-20 14:54:13 +0000
commitcefc1b97405d7bad2c621987394fc2d0c6300887 (patch)
treec8ff42e2c65687772954c54e1e8085c791d380f0 /tools/viewer/Viewer.cpp
parent6abda4357ce694a692b5e697b7ac49ec3676b5eb (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.cpp29
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) {