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