• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2015 Google Inc.
3  *
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  *
8  */
9 
10 #ifndef HelloWorld_DEFINED
11 #define HelloWorld_DEFINED
12 
13 #include "SkSurface.h"
14 #include "SkWindow.h"
15 
16 class GrContext;
17 struct GrGLInterface;
18 class GrRenderTarget;
19 class SkCanvas;
20 
21 class HelloWorldWindow : public SkOSWindow {
22 public:
23     enum DeviceType {
24         kRaster_DeviceType,
25         kGPU_DeviceType,
26     };
27     HelloWorldWindow(void* hwnd);
28     virtual ~HelloWorldWindow() override;
29 
30     // Changes the device type of the object.
31     bool setUpBackend();
32 
getDeviceType()33     DeviceType getDeviceType() const { return fType; }
34 
35 protected:
makeSurface()36     sk_sp<SkSurface> makeSurface() override {
37         SkSurfaceProps props(INHERITED::getSurfaceProps());
38         if (kGPU_DeviceType == fType) {
39             return fGpuSurface;
40         }
41         const SkImageInfo info = SkImageInfo::MakeN32Premul(SkScalarRoundToInt(this->width()),
42                                                             SkScalarRoundToInt(this->height()));
43         fRasterSurface = SkSurface::MakeRaster(info, &props);
44         return fRasterSurface;
45     }
46 
47     void draw(SkCanvas* canvas) override;
48     void drawContents(SkCanvas* canvas);
49 
50     void onSizeChange() override;
51 
52 private:
53     bool findNextMatch();  // Set example to the first one that matches FLAGS_match.
54     void setTitle();
55     void setUpGpuBackedSurface();
56     bool onHandleChar(SkUnichar unichar) override;
57     void tearDownBackend();
58 
59     // draw contents
60     SkScalar fRotationAngle;
61 
62     // support framework
63     DeviceType fType;
64     sk_sp<SkSurface> fRasterSurface;
65     GrContext* fContext;
66     sk_sp<SkSurface> fGpuSurface;
67     AttachmentInfo fAttachmentInfo;
68     const GrGLInterface* fInterface;
69 
70     typedef SkOSWindow INHERITED;
71 };
72 
73 #endif
74