148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com/* 348dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com * Copyright 2011 Google Inc. 448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com * 548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com * Use of this source code is governed by a BSD-style license that can be 648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com * found in the LICENSE file. 748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com */ 848dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 948dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 1048dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com#ifndef GMSampleView_DEFINED 1148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com#define GMSampleView_DEFINED 1248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 1348dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com#include "SampleCode.h" 1448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com#include "gm.h" 1548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 1648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comclass GMSampleView : public SampleView { 1748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comprivate: 18a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com bool fShowSize; 1948dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com typedef skiagm::GM GM; 2048dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 2148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.compublic: 2248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com GMSampleView(GM* gm) 232cda3871cbe50ce8047ef035569ac8e962f09d4etfarina@chromium.org : fShowSize(false), fGM(gm) {} 24ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com 2548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com virtual ~GMSampleView() { 2648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com delete fGM; 2748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com } 28ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com 29a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com static SkEvent* NewShowSizeEvt(bool doShowSize) { 30a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com SkEvent* evt = SkNEW_ARGS(SkEvent, ("GMSampleView::showSize")); 31a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com evt->setFast32(doShowSize); 32a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com return evt; 33a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com } 34a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com 3548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comprotected: 3648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com virtual bool onQuery(SkEvent* evt) { 3748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com if (SampleCode::TitleQ(*evt)) { 38e9f091d7cd6eeccb0c1b84226a8543dc8a3d285absalomon@google.com SkString name("GM:"); 3938aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.org name.append(fGM->getName()); 40ac7aa1bc3feb96c68e5c10f7cbed0e6be7704052reed@google.com SampleCode::TitleR(evt, name.c_str()); 4148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com return true; 4248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com } 4348dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com return this->INHERITED::onQuery(evt); 4448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com } 45884e60be30e20f38b3466a4697081187d2f1f814skia.committer@gmail.com 46a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com virtual bool onEvent(const SkEvent& evt) SK_OVERRIDE { 47a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com if (evt.isType("GMSampleView::showSize")) { 48a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com fShowSize = SkToBool(evt.getFast32()); 49a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com return true; 50a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com } 51a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com return this->INHERITED::onEvent(evt); 52a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com } 53ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com 5448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com virtual void onDrawContent(SkCanvas* canvas) { 55a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com { 56a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com SkAutoCanvasRestore acr(canvas, fShowSize); 57a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com fGM->drawContent(canvas); 58a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com } 59a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com if (fShowSize) { 60a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com SkISize size = fGM->getISize(); 61a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com SkRect r = SkRect::MakeWH(SkIntToScalar(size.width()), 62a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com SkIntToScalar(size.height())); 63a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com SkPaint paint; 64a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com paint.setColor(0x40FF8833); 65a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com canvas->drawRect(r, paint); 66a4f8137e67e31390b0e7edc5e637a3a02495d1a2reed@google.com } 6748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com } 6848dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 6948dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com virtual void onDrawBackground(SkCanvas* canvas) { 7048dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com fGM->drawBackground(canvas); 7148dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com } 7248dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 7348dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.comprivate: 7448dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com GM* fGM; 7548dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com typedef SampleView INHERITED; 7648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com}; 7748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com 7848dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com#endif 79