• 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:
createSurface()36     SkSurface* createSurface() override {
37         if (kGPU_DeviceType == fType) {
38             SkSurfaceProps props(INHERITED::getSurfaceProps());
39             return SkSurface::NewRenderTargetDirect(fRenderTarget, &props);
40         }
41         static const SkImageInfo info = SkImageInfo::MakeN32Premul(
42                 SkScalarRoundToInt(this->width()), SkScalarRoundToInt(this->height()));
43         return fSurface = SkSurface::NewRaster(info);
44    }
45 
46     void draw(SkCanvas* canvas) override;
47     void drawContents(SkCanvas* canvas);
48 
49     void onSizeChange() override;
50 
51 private:
52     bool findNextMatch();  // Set example to the first one that matches FLAGS_match.
53     void setTitle();
54     void setUpRenderTarget();
55     bool onHandleChar(SkUnichar unichar) override;
56     void tearDownBackend();
57 
58     // draw contents
59     SkScalar fRotationAngle;
60 
61     // support framework
62     DeviceType fType;
63     SkSurface* fSurface;
64     GrContext* fContext;
65     GrRenderTarget* fRenderTarget;
66     AttachmentInfo fAttachmentInfo;
67     const GrGLInterface* fInterface;
68 
69     typedef SkOSWindow INHERITED;
70 };
71 
72 #endif
73