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
10GMSampleView::GMSampleView(GM* gm) : fShowSize(false), fGM(gm) {}
11
12GMSampleView::~GMSampleView() {
13    delete fGM;
14}
15
16SkEvent* GMSampleView::NewShowSizeEvt(bool doShowSize) {
17    SkEvent* evt = SkNEW_ARGS(SkEvent, ("GMSampleView::showSize"));
18    evt->setFast32(doShowSize);
19    return evt;
20}
21
22bool 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
32bool 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
40void 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
55void GMSampleView::onDrawBackground(SkCanvas* canvas) {
56    fGM->drawBackground(canvas);
57}
58
59bool GMSampleView::onAnimate(const SkAnimTimer& timer) {
60    return fGM->animate(timer);
61}
62
63