diff options
Diffstat (limited to 'gm/gm.h')
-rw-r--r-- | gm/gm.h | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -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 |