Home | History | Annotate | Download | only in gm
      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