| /* |
| * Copyright 2013 Google Inc. |
| * |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| * |
| */ |
| |
| #ifndef SkExample_DEFINED |
| #define SkExample_DEFINED |
| |
| #include "SkWindow.h" |
| #include "SkTRegistry.h" |
| |
| class GrContext; |
| struct GrGLInterface; |
| class GrRenderTarget; |
| class SkCanvas; |
| class SkExampleWindow; |
| |
| class SkExample : SkNoncopyable { |
| public: |
| SkExample(SkExampleWindow* window) : fWindow(window) {} |
| |
| virtual ~SkExample() {} |
| |
| // Your class should override this method to do its thing. |
| virtual void draw(SkCanvas* canvas) = 0; |
| |
| SkString getName() { return fName; }; |
| // Use this public registry to tell the world about your sample. |
| typedef SkTRegistry<SkExample*(*)(SkExampleWindow*)> Registry; |
| |
| protected: |
| SkExampleWindow* fWindow; |
| SkString fName; |
| }; |
| |
| class SkExampleWindow : public SkOSWindow { |
| public: |
| enum DeviceType { |
| kRaster_DeviceType, |
| kGPU_DeviceType, |
| }; |
| SkExampleWindow(void* hwnd); |
| |
| // Changes the device type of the object. |
| bool setupBackend(DeviceType type); |
| void tearDownBackend(); |
| |
| DeviceType getDeviceType() const { return fType; } |
| |
| protected: |
| virtual void draw(SkCanvas* canvas) SK_OVERRIDE; |
| |
| virtual void onSizeChange() SK_OVERRIDE; |
| |
| #ifdef SK_BUILD_FOR_WIN |
| virtual void onHandleInval(const SkIRect&) SK_OVERRIDE; |
| #endif |
| |
| SkCanvas* createCanvas() SK_OVERRIDE; |
| |
| private: |
| bool findNextMatch(); // Set example to the first one that matches FLAGS_match. |
| void setupRenderTarget(); |
| bool onHandleChar(SkUnichar unichar) SK_OVERRIDE; |
| |
| DeviceType fType; |
| |
| SkExample* fCurrExample; |
| const SkExample::Registry* fRegistry; |
| GrContext* fContext; |
| GrRenderTarget* fRenderTarget; |
| AttachmentInfo fAttachmentInfo; |
| const GrGLInterface* fInterface; |
| |
| typedef SkOSWindow INHERITED; |
| }; |
| |
| #endif |