Home | History | Annotate | Download | only in example
      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 
     33     DeviceType getDeviceType() const { return fType; }
     34 
     35 protected:
     36     SkSurface* createSurface() override {
     37         SkSurfaceProps props(INHERITED::getSurfaceProps());
     38         if (kGPU_DeviceType == fType) {
     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, &props);
     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