summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/experimental/SkiaExamples/SkExample.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/experimental/SkiaExamples/SkExample.h')
-rw-r--r--chromium/third_party/skia/experimental/SkiaExamples/SkExample.h82
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