Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Unified Diff: experimental/SkiaExamples/SkExample.h

Issue 18574002: SkiaExamples improvements. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Make diffs usable Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: experimental/SkiaExamples/SkExample.h
diff --git a/experimental/SkiaExamples/BaseExample.h b/experimental/SkiaExamples/SkExample.h
similarity index 45%
rename from experimental/SkiaExamples/BaseExample.h
rename to experimental/SkiaExamples/SkExample.h
index b9cc25930117d58c1619e2aee4994ffb8864d7b4..3e1ee7290f10ae93e34ae2f337ede5b126895a33 100644
--- a/experimental/SkiaExamples/BaseExample.h
+++ b/experimental/SkiaExamples/SkExample.h
@@ -7,8 +7,8 @@
*
*/
-#ifndef BaseExample_DEFINED
-#define BaseExample_DEFINED
+#ifndef SkExample_DEFINED
+#define SkExample_DEFINED
#include "SkWindow.h"
@@ -17,13 +17,44 @@ struct GrGLInterface;
class GrRenderTarget;
class SkCanvas;
-class BaseExample : public SkOSWindow {
+class HelloSkia;
caryclark 2013/07/08 12:42:35 remove this if it isn't required for this header
+
+class SkExample : public SkOSWindow {
public:
+ /**
+ * Member function that creates the SkExample. By default it will create a sample
+ * defined in SkExample.cpp
+ * The user of this framework can register a new (and only one) example by running:
+ *
+ * SkExample::SetExample<DerivedClass> reg("My derived class");
+ *
+ * ... where DerivedClass is a child of SkExample and 'reg' can be any name.
+ *
+ */
+ static SkOSWindow* (*create_user_example) (void* hwnd, int argc, char** argv);
caryclark 2013/07/08 12:42:35 use gCreateUserExample to hint to reader that this
+
+ template<typename T>
+ class SetExample {
+ public:
caryclark 2013/07/08 12:42:35 unindent
+ static SkOSWindow* create(void* hwnd, int argc, char** argv) {
+ return new T(hwnd, argc, argv);
+ }
caryclark 2013/07/08 12:42:35 add a blank line here
+ SetExample(const char* name) {
+ if (SkExample::userExampleExists) {
+ SkDebugf("Rejecting the following Skia Example: %s\n", name);
+ return;
+ }
+ SkDebugf("Using skia example: %s\n", name);
+ SkExample::create_user_example = &create;
+ SkExample::userExampleExists = true;
+ }
+ };
+
enum DeviceType {
kRaster_DeviceType,
kGPU_DeviceType,
};
- BaseExample(void* hWnd, int argc, char** argv);
+ SkExample(void* hWnd, int argc, char** argv);
// Changes the device type of the object.
bool setupBackend(DeviceType type);
@@ -44,6 +75,8 @@ protected:
SkCanvas* createCanvas() SK_OVERRIDE;
private:
+ static bool userExampleExists;
caryclark 2013/07/08 12:42:35 use 'gUserExampleExists' to hint to reader that th
+
void setupRenderTarget();
DeviceType fType;
@@ -52,6 +85,9 @@ private:
GrRenderTarget* fRenderTarget;
AttachmentInfo fAttachmentInfo;
const GrGLInterface* fInterface;
+
typedef SkOSWindow INHERITED;
};
+
#endif
+

Powered by Google App Engine
This is Rietveld 408576698