diff options
Diffstat (limited to 'chromium/third_party/skia/experimental/SkiaExamples/SkExample.h')
-rw-r--r-- | chromium/third_party/skia/experimental/SkiaExamples/SkExample.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/chromium/third_party/skia/experimental/SkiaExamples/SkExample.h b/chromium/third_party/skia/experimental/SkiaExamples/SkExample.h new file mode 100644 index 00000000000..ea734dcdc69 --- /dev/null +++ b/chromium/third_party/skia/experimental/SkiaExamples/SkExample.h @@ -0,0 +1,82 @@ +/* + * 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 |