• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
GM()13 GM::GM() {
14     fBGColor = SK_ColorWHITE;
15     fCanvasIsDeferred = false;
16     fHaveCalledOnceBeforeDraw = false;
17 }
~GM()18 GM::~GM() {}
19 
draw(SkCanvas * canvas)20 void GM::draw(SkCanvas* canvas) {
21     this->drawBackground(canvas);
22     this->drawContent(canvas);
23 }
24 
drawContent(SkCanvas * canvas)25 void GM::drawContent(SkCanvas* canvas) {
26     if (!fHaveCalledOnceBeforeDraw) {
27         fHaveCalledOnceBeforeDraw = true;
28         this->onOnceBeforeDraw();
29     }
30     this->onDraw(canvas);
31 }
32 
drawBackground(SkCanvas * canvas)33 void GM::drawBackground(SkCanvas* canvas) {
34     if (!fHaveCalledOnceBeforeDraw) {
35         fHaveCalledOnceBeforeDraw = true;
36         this->onOnceBeforeDraw();
37     }
38     this->onDrawBackground(canvas);
39 }
40 
shortName()41 const char* GM::shortName() {
42     if (fShortName.size() == 0) {
43         fShortName = this->onShortName();
44     }
45     return fShortName.c_str();
46 }
47 
setBGColor(SkColor color)48 void GM::setBGColor(SkColor color) {
49     fBGColor = color;
50 }
51 
onDrawBackground(SkCanvas * canvas)52 void GM::onDrawBackground(SkCanvas* canvas) {
53     canvas->drawColor(fBGColor, SkXfermode::kSrc_Mode);
54 }
55 
drawSizeBounds(SkCanvas * canvas,SkColor color)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