aboutsummaryrefslogtreecommitdiffstats
path: root/gm/gm.h
diff options
context:
space:
mode:
Diffstat (limited to 'gm/gm.h')
-rw-r--r--gm/gm.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/gm/gm.h b/gm/gm.h
new file mode 100644
index 0000000..ab92ff6
--- /dev/null
+++ b/gm/gm.h
@@ -0,0 +1,45 @@
+#ifndef skiagm_DEFINED
+#define skiagm_DEFINED
+
+#include "SkCanvas.h"
+#include "SkPaint.h"
+#include "SkRefCnt.h"
+#include "SkSize.h"
+#include "SkString.h"
+#include "SkTRegistry.h"
+
+namespace skiagm {
+
+ static inline SkISize make_isize(int w, int h) {
+ SkISize sz;
+ sz.set(w, h);
+ return sz;
+ }
+
+ class GM {
+ public:
+ GM();
+ virtual ~GM();
+
+ void draw(SkCanvas*);
+ SkISize getISize() { return this->onISize(); }
+ const char* shortName() {
+ if (fShortName.size() == 0) {
+ fShortName = this->onShortName();
+ }
+ return fShortName.c_str();
+ }
+
+ protected:
+ virtual void onDraw(SkCanvas*) = 0;
+ virtual SkISize onISize() = 0;
+ virtual SkString onShortName() = 0;
+
+ private:
+ SkString fShortName;
+ };
+
+ typedef SkTRegistry<GM*, void*> GMRegistry;
+}
+
+#endif