blob: 619ee7cb4df317b32014f049bcad3924d9e5a376 [file] [log] [blame]
caryclark52edc4d2015-02-02 12:55:14 -08001/*
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
16class GrContext;
17struct GrGLInterface;
18class GrRenderTarget;
19class SkCanvas;
20
21class HelloWorldWindow : public SkOSWindow {
22public:
23 enum DeviceType {
24 kRaster_DeviceType,
25 kGPU_DeviceType,
26 };
27 HelloWorldWindow(void* hwnd);
mtklein36352bf2015-03-25 18:17:31 -070028 virtual ~HelloWorldWindow() override;
caryclark52edc4d2015-02-02 12:55:14 -080029
30 // Changes the device type of the object.
31 bool setUpBackend();
32
33 DeviceType getDeviceType() const { return fType; }
34
35protected:
mtklein36352bf2015-03-25 18:17:31 -070036 SkSurface* createSurface() override {
robertphillips702edbd2015-06-23 06:26:08 -070037 SkSurfaceProps props(INHERITED::getSurfaceProps());
caryclark52edc4d2015-02-02 12:55:14 -080038 if (kGPU_DeviceType == fType) {
reede8f30622016-03-23 18:59:25 -070039 return SkSurface::MakeRenderTargetDirect(fRenderTarget, &props).release();
caryclark52edc4d2015-02-02 12:55:14 -080040 }
41 static const SkImageInfo info = SkImageInfo::MakeN32Premul(
42 SkScalarRoundToInt(this->width()), SkScalarRoundToInt(this->height()));
reede8f30622016-03-23 18:59:25 -070043 return fSurface = SkSurface::MakeRaster(info, &props).release();
robertphillips702edbd2015-06-23 06:26:08 -070044 }
caryclark52edc4d2015-02-02 12:55:14 -080045
mtklein36352bf2015-03-25 18:17:31 -070046 void draw(SkCanvas* canvas) override;
caryclark52edc4d2015-02-02 12:55:14 -080047 void drawContents(SkCanvas* canvas);
48
mtklein36352bf2015-03-25 18:17:31 -070049 void onSizeChange() override;
caryclark52edc4d2015-02-02 12:55:14 -080050
51private:
52 bool findNextMatch(); // Set example to the first one that matches FLAGS_match.
53 void setTitle();
54 void setUpRenderTarget();
mtklein36352bf2015-03-25 18:17:31 -070055 bool onHandleChar(SkUnichar unichar) override;
caryclark52edc4d2015-02-02 12:55:14 -080056 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