1 /*
2  * Copyright 2016 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 #ifndef WindowContext_DEFINED
8 #define WindowContext_DEFINED
9 
10 #include "include/core/SkRefCnt.h"
11 #include "include/core/SkSurfaceProps.h"
12 #include "include/gpu/GrContext.h"
13 #include "include/gpu/GrTypes.h"
14 #include "tools/sk_app/DisplayParams.h"
15 
16 class SkSurface;
17 class GrRenderTarget;
18 
19 namespace sk_app {
20 
21 class WindowContext {
22 public:
WindowContext(const DisplayParams & params)23     WindowContext(const DisplayParams& params)
24             : fContext(nullptr)
25             , fDisplayParams(params)
26             , fSampleCount(1)
27             , fStencilBits(0) {}
28 
~WindowContext()29     virtual ~WindowContext() {}
30 
31     virtual sk_sp<SkSurface> getBackbufferSurface() = 0;
32 
33     virtual void swapBuffers() = 0;
34 
35     virtual bool isValid() = 0;
36 
37     virtual void resize(int w, int h) = 0;
38 
getDisplayParams()39     const DisplayParams& getDisplayParams() { return fDisplayParams; }
40     virtual void setDisplayParams(const DisplayParams& params) = 0;
41 
getGrContext()42     GrContext* getGrContext() const { return fContext.get(); }
43 
width()44     int width() const { return fWidth; }
height()45     int height() const { return fHeight; }
sampleCount()46     int sampleCount() const { return fSampleCount; }
stencilBits()47     int stencilBits() const { return fStencilBits; }
48 
49 protected:
isGpuContext()50     virtual bool isGpuContext() { return true;  }
51 
52     sk_sp<GrContext>        fContext;
53 
54     int               fWidth;
55     int               fHeight;
56     DisplayParams     fDisplayParams;
57 
58     // parameters obtained from the native window
59     // Note that the platform .cpp file is responsible for
60     // initializing fSampleCount and fStencilBits!
61     int               fSampleCount;
62     int               fStencilBits;
63 };
64 
65 }   // namespace sk_app
66 
67 #endif
68