 Chromium Code Reviews
 Chromium Code Reviews Issue 811703005:
  SIMPLE_GM generates less code  (Closed) 
  Base URL: https://skia.googlesource.com/skia.git@master
    
  
    Issue 811703005:
  SIMPLE_GM generates less code  (Closed) 
  Base URL: https://skia.googlesource.com/skia.git@master| Index: gm/gm.h | 
| diff --git a/gm/gm.h b/gm/gm.h | 
| index 703fc90451968d30442cc03d1448487f2565fa3c..81744e2512625261c029d2fb68e926cc5cebdbad 100644 | 
| --- a/gm/gm.h | 
| +++ b/gm/gm.h | 
| @@ -25,18 +25,13 @@ | 
| static skiagm::GMRegistry SK_MACRO_APPEND_LINE(R_)(SK_MACRO_APPEND_LINE(F_)); | 
| // See colorwheel.cpp for example usage. | 
| -#define DEF_SIMPLE_GM(NAME, CANVAS, W, H) \ | 
| - class SK_MACRO_CONCAT(NAME, _GM) : public skiagm::GM { \ | 
| - void onDraw(SkCanvas* canvas) SK_OVERRIDE; \ | 
| - SkISize onISize() SK_OVERRIDE { \ | 
| - return SkISize::Make((W), (H)); \ | 
| - } \ | 
| - SkString onShortName() SK_OVERRIDE { \ | 
| - return SkString(#NAME); \ | 
| - } \ | 
| - }; \ | 
| - DEF_GM( return SkNEW(SK_MACRO_CONCAT(NAME, _GM)); ) \ | 
| - void SK_MACRO_CONCAT(NAME, _GM)::onDraw(SkCanvas* CANVAS) | 
| +#define DEF_SIMPLE_GM(NAME, CANVAS, W, H) \ | 
| + static void SK_MACRO_CONCAT(NAME, _GM)(SkCanvas* CANVAS); \ | 
| + DEF_GM( return SkNEW_ARGS(skiagm::SimpleGM, \ | 
| + (SkString(#NAME), \ | 
| + SK_MACRO_CONCAT(NAME, _GM), \ | 
| + SkISize::Make(W, H))); ) \ | 
| + void SK_MACRO_CONCAT(NAME, _GM)(SkCanvas* CANVAS) | 
| namespace skiagm { | 
| @@ -136,6 +131,22 @@ namespace skiagm { | 
| }; | 
| typedef SkTRegistry<GM*(*)(void*)> GMRegistry; | 
| + | 
| + class SimpleGM : public skiagm::GM { | 
| + public: | 
| + SimpleGM(const SkString& name, | 
| 
mtklein
2015/01/12 23:13:35
Looks like you can simplify a little further by de
 | 
| + void (*drawProc)(SkCanvas*), | 
| + const SkISize& size) | 
| + : fName(name), fDrawProc(drawProc), fSize(size) {} | 
| + protected: | 
| + void onDraw(SkCanvas* canvas) SK_OVERRIDE; | 
| + SkISize onISize() SK_OVERRIDE; | 
| + SkString onShortName() SK_OVERRIDE; | 
| + private: | 
| + SkString fName; | 
| + void (*fDrawProc)(SkCanvas*); | 
| + SkISize fSize; | 
| + }; | 
| } | 
| #endif |