1 /*
2  * Copyright 2015 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 "GMSampleView.h"
9 
GMSampleView(GM * gm)10 GMSampleView::GMSampleView(GM* gm) : fShowSize(false), fGM(gm) {}
11 
~GMSampleView()12 GMSampleView::~GMSampleView() {
13     delete fGM;
14 }
15 
NewShowSizeEvt(bool doShowSize)16 SkEvent* GMSampleView::NewShowSizeEvt(bool doShowSize) {
17     SkEvent* evt = new SkEvent("GMSampleView::showSize");
18     evt->setFast32(doShowSize);
19     return evt;
20 }
21 
onQuery(SkEvent * evt)22 bool GMSampleView::onQuery(SkEvent* evt) {
23     if (SampleCode::TitleQ(*evt)) {
24         SkString name("GM:");
25         name.append(fGM->getName());
26         SampleCode::TitleR(evt, name.c_str());
27         return true;
28     }
29     return this->INHERITED::onQuery(evt);
30 }
31 
onEvent(const SkEvent & evt)32 bool GMSampleView::onEvent(const SkEvent& evt) {
33     if (evt.isType("GMSampleView::showSize")) {
34         fShowSize = SkToBool(evt.getFast32());
35         return true;
36     }
37     return this->INHERITED::onEvent(evt);
38 }
39 
onDrawContent(SkCanvas * canvas)40 void GMSampleView::onDrawContent(SkCanvas* canvas) {
41     {
42         SkAutoCanvasRestore acr(canvas, fShowSize);
43         fGM->drawContent(canvas);
44     }
45     if (fShowSize) {
46         SkISize size = fGM->getISize();
47         SkRect r = SkRect::MakeWH(SkIntToScalar(size.width()),
48                                   SkIntToScalar(size.height()));
49         SkPaint paint;
50         paint.setColor(0x40FF8833);
51         canvas->drawRect(r, paint);
52     }
53 }
54 
onDrawBackground(SkCanvas * canvas)55 void GMSampleView::onDrawBackground(SkCanvas* canvas) {
56     fGM->drawBackground(canvas);
57 }
58 
onAnimate(const SkAnimTimer & timer)59 bool GMSampleView::onAnimate(const SkAnimTimer& timer) {
60     return fGM->animate(timer);
61 }
62 
63