1 /* 2 * Copyright 2011 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "gm.h" 9 using namespace skiagm; 10 11 SkString GM::gResourcePath; 12 13 GM::GM() { 14 fBGColor = SK_ColorWHITE; 15 fCanvasIsDeferred = false; 16 fHaveCalledOnceBeforeDraw = false; 17 } 18 GM::~GM() {} 19 20 void GM::draw(SkCanvas* canvas) { 21 this->drawBackground(canvas); 22 this->drawContent(canvas); 23 } 24 25 void GM::drawContent(SkCanvas* canvas) { 26 if (!fHaveCalledOnceBeforeDraw) { 27 fHaveCalledOnceBeforeDraw = true; 28 this->onOnceBeforeDraw(); 29 } 30 this->onDraw(canvas); 31 } 32 33 void GM::drawBackground(SkCanvas* canvas) { 34 if (!fHaveCalledOnceBeforeDraw) { 35 fHaveCalledOnceBeforeDraw = true; 36 this->onOnceBeforeDraw(); 37 } 38 this->onDrawBackground(canvas); 39 } 40 41 const char* GM::shortName() { 42 if (fShortName.size() == 0) { 43 fShortName = this->onShortName(); 44 } 45 return fShortName.c_str(); 46 } 47 48 void GM::setBGColor(SkColor color) { 49 fBGColor = color; 50 } 51 52 void GM::onDrawBackground(SkCanvas* canvas) { 53 canvas->drawColor(fBGColor, SkXfermode::kSrc_Mode); 54 } 55 56 void GM::drawSizeBounds(SkCanvas* canvas, SkColor color) { 57 SkISize size = this->getISize(); 58 SkRect r = SkRect::MakeWH(SkIntToScalar(size.width()), 59 SkIntToScalar(size.height())); 60 SkPaint paint; 61 paint.setColor(color); 62 canvas->drawRect(r, paint); 63 } 64 65 // need to explicitly declare this, or we get some weird infinite loop llist 66 template GMRegistry* SkTRegistry<GM*, void*>::gHead; 67