10ab326f530c0d3597471bbbe7bc92e7cd1fac60freed/*
20ab326f530c0d3597471bbbe7bc92e7cd1fac60freed * Copyright 2015 Google Inc.
30ab326f530c0d3597471bbbe7bc92e7cd1fac60freed *
40ab326f530c0d3597471bbbe7bc92e7cd1fac60freed * Use of this source code is governed by a BSD-style license that can be
50ab326f530c0d3597471bbbe7bc92e7cd1fac60freed * found in the LICENSE file.
60ab326f530c0d3597471bbbe7bc92e7cd1fac60freed */
70ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
80ab326f530c0d3597471bbbe7bc92e7cd1fac60freed#include "GMSampleView.h"
90ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
100ab326f530c0d3597471bbbe7bc92e7cd1fac60freedGMSampleView::GMSampleView(GM* gm) : fShowSize(false), fGM(gm) {}
110ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
120ab326f530c0d3597471bbbe7bc92e7cd1fac60freedGMSampleView::~GMSampleView() {
130ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    delete fGM;
140ab326f530c0d3597471bbbe7bc92e7cd1fac60freed}
150ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
160ab326f530c0d3597471bbbe7bc92e7cd1fac60freedSkEvent* GMSampleView::NewShowSizeEvt(bool doShowSize) {
170ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    SkEvent* evt = SkNEW_ARGS(SkEvent, ("GMSampleView::showSize"));
180ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    evt->setFast32(doShowSize);
190ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    return evt;
200ab326f530c0d3597471bbbe7bc92e7cd1fac60freed}
210ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
220ab326f530c0d3597471bbbe7bc92e7cd1fac60freedbool GMSampleView::onQuery(SkEvent* evt) {
230ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    if (SampleCode::TitleQ(*evt)) {
240ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        SkString name("GM:");
250ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        name.append(fGM->getName());
260ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        SampleCode::TitleR(evt, name.c_str());
270ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        return true;
280ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    }
290ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    return this->INHERITED::onQuery(evt);
300ab326f530c0d3597471bbbe7bc92e7cd1fac60freed}
310ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
320ab326f530c0d3597471bbbe7bc92e7cd1fac60freedbool GMSampleView::onEvent(const SkEvent& evt) {
330ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    if (evt.isType("GMSampleView::showSize")) {
340ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        fShowSize = SkToBool(evt.getFast32());
350ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        return true;
360ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    }
370ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    return this->INHERITED::onEvent(evt);
380ab326f530c0d3597471bbbe7bc92e7cd1fac60freed}
390ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
400ab326f530c0d3597471bbbe7bc92e7cd1fac60freedvoid GMSampleView::onDrawContent(SkCanvas* canvas) {
410ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    {
420ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        SkAutoCanvasRestore acr(canvas, fShowSize);
430ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        fGM->drawContent(canvas);
440ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    }
450ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    if (fShowSize) {
460ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        SkISize size = fGM->getISize();
470ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        SkRect r = SkRect::MakeWH(SkIntToScalar(size.width()),
480ab326f530c0d3597471bbbe7bc92e7cd1fac60freed                                  SkIntToScalar(size.height()));
490ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        SkPaint paint;
500ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        paint.setColor(0x40FF8833);
510ab326f530c0d3597471bbbe7bc92e7cd1fac60freed        canvas->drawRect(r, paint);
520ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    }
530ab326f530c0d3597471bbbe7bc92e7cd1fac60freed}
540ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
550ab326f530c0d3597471bbbe7bc92e7cd1fac60freedvoid GMSampleView::onDrawBackground(SkCanvas* canvas) {
560ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    fGM->drawBackground(canvas);
570ab326f530c0d3597471bbbe7bc92e7cd1fac60freed}
580ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
590ab326f530c0d3597471bbbe7bc92e7cd1fac60freedbool GMSampleView::onAnimate(const SkAnimTimer& timer) {
600ab326f530c0d3597471bbbe7bc92e7cd1fac60freed    return fGM->animate(timer);
610ab326f530c0d3597471bbbe7bc92e7cd1fac60freed}
620ab326f530c0d3597471bbbe7bc92e7cd1fac60freed
63