Viewer to resize Samples with window resize.
This adds onResize to sk_app::Window::Layer and uses it to resize
samples in Viewer.
Change-Id: Ia5ec5cf6dc74fbdf712291b9ba8707b076cb625d
Reviewed-on: https://skia-review.googlesource.com/146642
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
diff --git a/tools/sk_app/Window.cpp b/tools/sk_app/Window.cpp
index 1694bea..862ee1a 100644
--- a/tools/sk_app/Window.cpp
+++ b/tools/sk_app/Window.cpp
@@ -92,6 +92,7 @@
return;
}
fWindowContext->resize(w, h);
+ this->visitLayers([=](Layer* layer) { layer->onResize(w, h); });
}
int Window::width() {
diff --git a/tools/sk_app/Window.h b/tools/sk_app/Window.h
index d207928..29d90c6 100644
--- a/tools/sk_app/Window.h
+++ b/tools/sk_app/Window.h
@@ -150,6 +150,7 @@
virtual void onUIStateChanged(const SkString& stateName, const SkString& stateValue) {}
virtual void onPrePaint() {}
virtual void onPaint(SkCanvas*) {}
+ virtual void onResize(int width, int height) {}
private:
friend class Window;
diff --git a/tools/viewer/SampleSlide.h b/tools/viewer/SampleSlide.h
index ac757ea..ec5253a 100644
--- a/tools/viewer/SampleSlide.h
+++ b/tools/viewer/SampleSlide.h
@@ -18,6 +18,9 @@
void draw(SkCanvas* canvas) override;
void load(SkScalar winWidth, SkScalar winHeight) override;
+ void resize(SkScalar winWidth, SkScalar winHeight) override {
+ fSample->setSize(winWidth, winHeight);
+ }
void unload() override;
bool animate(const SkAnimTimer& timer) override {
return fSample->animate(timer);
diff --git a/tools/viewer/Slide.h b/tools/viewer/Slide.h
index 127b32d..023cd6b 100644
--- a/tools/viewer/Slide.h
+++ b/tools/viewer/Slide.h
@@ -28,6 +28,7 @@
virtual void draw(SkCanvas* canvas) = 0;
virtual bool animate(const SkAnimTimer&) { return false; }
virtual void load(SkScalar winWidth, SkScalar winHeight) {}
+ virtual void resize(SkScalar winWidth, SkScalar winHeight) {}
virtual void unload() {}
virtual bool onChar(SkUnichar c) { return false; }
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index 143b8f2..088f949 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -1155,6 +1155,10 @@
this->drawImGui();
}
+void Viewer::onResize(int width, int height) {
+ fSlides[fCurrentSlide]->resize(width, height);
+}
+
SkPoint Viewer::mapEvent(float x, float y) {
const auto m = this->computeMatrix();
SkMatrix inv;
diff --git a/tools/viewer/Viewer.h b/tools/viewer/Viewer.h
index e051170..02e4063 100644
--- a/tools/viewer/Viewer.h
+++ b/tools/viewer/Viewer.h
@@ -31,6 +31,7 @@
void onBackendCreated() override;
void onPaint(SkCanvas* canvas) override;
+ void onResize(int width, int height) override;
bool onTouch(intptr_t owner, sk_app::Window::InputState state, float x, float y) override;
bool onMouse(int x, int y, sk_app::Window::InputState state, uint32_t modifiers) override;
void onUIStateChanged(const SkString& stateName, const SkString& stateValue) override;