diff options
Diffstat (limited to 'tools/viewer/sk_app/GLWindowContext.h')
-rw-r--r-- | tools/viewer/sk_app/GLWindowContext.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tools/viewer/sk_app/GLWindowContext.h b/tools/viewer/sk_app/GLWindowContext.h new file mode 100644 index 0000000000..6fb5e09889 --- /dev/null +++ b/tools/viewer/sk_app/GLWindowContext.h @@ -0,0 +1,63 @@ + +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GLWindowContext_DEFINED +#define GLWindowContext_DEFINED + + +#include "gl/GrGLInterface.h" + +#include "SkRefCnt.h" +#include "GrRenderTarget.h" +#include "SkSurface.h" + +#include "WindowContext.h" + +class GrContext; + +namespace sk_app { + +class GLWindowContext : public WindowContext { +public: + // This is defined in the platform .cpp file + static GLWindowContext* Create(void* platformData, const DisplayParams& params); + + sk_sp<SkSurface> getBackbufferSurface() override; + + bool isValid() override { return SkToBool(fBackendContext.get()); } + + void resize(uint32_t w, uint32_t h) override; + void swapBuffers() override; + + void setDisplayParams(const DisplayParams& params) override; + + GrBackendContext getBackendContext() override { + return (GrBackendContext) fBackendContext.get(); + } + +protected: + GLWindowContext(void*, const DisplayParams&); + void initializeContext(void*, const DisplayParams&); + virtual void onInitializeContext(void*, const DisplayParams&) = 0; + void destroyContext(); + virtual void onDestroyContext() = 0; + virtual void onSwapBuffers() = 0; + + SkAutoTUnref<const GrGLInterface> fBackendContext; + sk_sp<GrRenderTarget> fRenderTarget; + sk_sp<SkSurface> fSurface; + + // parameters obtained from the native window + int fSampleCount; + int fStencilBits; + int fColorBits; + int fActualColorBits; +}; + +} // namespace sk_app + +#endif |