aboutsummaryrefslogtreecommitdiffhomepage
path: root/example
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-12-08 16:45:43 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-11 16:46:58 +0000
commit80fc07e8f854cd7c632bc06443d5f120ed002524 (patch)
tree451364a76adac42650893d3f4aaa149f3b9d2b20 /example
parent46020c4409490dc84e389d26509cf49ea0b9cdf7 (diff)
Create a Window::Layer interface to reduce sk_app glue code
This also makes it possible to manage other parts of viewer, etc (like the stats screen, command set, even samples) as additional layers in the stack. For now, it just removes a lot of boilerplate. Bug: skia: Change-Id: Ic2f80690fc76c683b3736287dc2b738c50d38614 Reviewed-on: https://skia-review.googlesource.com/82688 Reviewed-by: Jim Van Verth <jvanverth@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'example')
-rw-r--r--example/HelloWorld.cpp19
-rw-r--r--example/HelloWorld.h9
2 files changed, 6 insertions, 22 deletions
diff --git a/example/HelloWorld.cpp b/example/HelloWorld.cpp
index fba7f7e5a0..5954e71532 100644
--- a/example/HelloWorld.cpp
+++ b/example/HelloWorld.cpp
@@ -18,21 +18,6 @@ Application* Application::Create(int argc, char** argv, void* platformData) {
return new HelloWorld(argc, argv, platformData);
}
-static void on_backend_created_func(void* userData) {
- HelloWorld* hw = reinterpret_cast<HelloWorld*>(userData);
- return hw->onBackendCreated();
-}
-
-static void on_paint_handler(SkCanvas* canvas, void* userData) {
- HelloWorld* hw = reinterpret_cast<HelloWorld*>(userData);
- return hw->onPaint(canvas);
-}
-
-static bool on_char_handler(SkUnichar c, uint32_t modifiers, void* userData) {
- HelloWorld* hw = reinterpret_cast<HelloWorld*>(userData);
- return hw->onChar(c, modifiers);
-}
-
HelloWorld::HelloWorld(int argc, char** argv, void* platformData)
: fBackendType(Window::kNativeGL_BackendType)
, fRotationAngle(0) {
@@ -42,9 +27,7 @@ HelloWorld::HelloWorld(int argc, char** argv, void* platformData)
fWindow->setRequestedDisplayParams(DisplayParams());
// register callbacks
- fWindow->registerBackendCreatedFunc(on_backend_created_func, this);
- fWindow->registerPaintFunc(on_paint_handler, this);
- fWindow->registerCharFunc(on_char_handler, this);
+ fWindow->pushLayer(this);
fWindow->attach(fBackendType);
}
diff --git a/example/HelloWorld.h b/example/HelloWorld.h
index 44f1321d6b..28715fe89b 100644
--- a/example/HelloWorld.h
+++ b/example/HelloWorld.h
@@ -13,15 +13,16 @@
class SkCanvas;
-class HelloWorld : public sk_app::Application {
+class HelloWorld : public sk_app::Application, sk_app::Window::Layer {
public:
HelloWorld(int argc, char** argv, void* platformData);
~HelloWorld() override;
- void onBackendCreated();
- void onPaint(SkCanvas* canvas);
void onIdle() override;
- bool onChar(SkUnichar c, uint32_t modifiers);
+
+ void onBackendCreated() override;
+ void onPaint(SkCanvas* canvas) override;
+ bool onChar(SkUnichar c, uint32_t modifiers) override;
private:
void updateTitle();