skia2/tools/viewer/ImGuiLayer.h
Brian Osman d67e518980 Move ImGui support code to ImGuiLayer
Viewer still has plenty of code that uses ImGui to create application
specific UI, but the structural code that forwards input to ImGui, and
converts per-frame ImGui rendering data to Skia draw commands is now in
a single component that can be reused in any sk_app-based application.

Bug: skia:
Change-Id: Ic14ece659d4af8ee13b69c638bdaf7df6c24f5c0
Reviewed-on: https://skia-review.googlesource.com/82627
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2017-12-11 17:37:58 +00:00

38 lines
1.0 KiB
C++

/*
* Copyright 2017 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef ImGuiLayer_DEFINED
#define ImGuiLayer_DEFINED
#include "SkPaint.h"
#include "SkTArray.h"
#include "sk_app/Window.h"
#include "imgui.h"
class ImGuiLayer : public sk_app::Window::Layer {
public:
ImGuiLayer();
typedef std::function<void(SkCanvas*)> SkiaWidgetFunc;
void skiaWidget(const ImVec2& size, SkiaWidgetFunc func);
void onAttach(sk_app::Window* window) override;
void onPrePaint() override;
void onPaint(SkCanvas* canvas) override;
bool onMouse(int x, int y, sk_app::Window::InputState state, uint32_t modifiers) override;
bool onMouseWheel(float delta, uint32_t modifiers) override;
bool onKey(sk_app::Window::Key key, sk_app::Window::InputState state, uint32_t modifiers) override;
bool onChar(SkUnichar c, uint32_t modifiers) override;
private:
sk_app::Window* fWindow;
SkPaint fFontPaint;
SkTArray<SkiaWidgetFunc> fSkiaWidgetFuncs;
};
#endif