1 #ifndef skiagm_DEFINED 2 #define skiagm_DEFINED 3 4 #include "SkCanvas.h" 5 #include "SkPaint.h" 6 #include "SkRefCnt.h" 7 #include "SkSize.h" 8 #include "SkString.h" 9 #include "SkTRegistry.h" 10 11 namespace skiagm { 12 make_isize(int w,int h)13 static inline SkISize make_isize(int w, int h) { 14 SkISize sz; 15 sz.set(w, h); 16 return sz; 17 } 18 19 class GM { 20 public: 21 GM(); 22 virtual ~GM(); 23 24 void draw(SkCanvas*); getISize()25 SkISize getISize() { return this->onISize(); } shortName()26 const char* shortName() { 27 if (fShortName.size() == 0) { 28 fShortName = this->onShortName(); 29 } 30 return fShortName.c_str(); 31 } 32 33 protected: 34 virtual void onDraw(SkCanvas*) = 0; 35 virtual SkISize onISize() = 0; 36 virtual SkString onShortName() = 0; 37 38 private: 39 SkString fShortName; 40 }; 41 42 typedef SkTRegistry<GM*, void*> GMRegistry; 43 } 44 45 #endif 46