| /* | |
| * Copyright 2011 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef GMSampleView_DEFINED | |
| #define GMSampleView_DEFINED | |
| #include "SampleCode.h" | |
| #include "gm.h" | |
| class GMSampleView : public SampleView { | |
| private: | |
| bool fShowSize; | |
| typedef skiagm::GM GM; | |
| public: | |
| GMSampleView(GM* gm) | |
| : fShowSize(false), fGM(gm) {} | |
| virtual ~GMSampleView() { | |
| delete fGM; | |
| } | |
| static SkEvent* NewShowSizeEvt(bool doShowSize) { | |
| SkEvent* evt = SkNEW_ARGS(SkEvent, ("GMSampleView::showSize")); | |
| evt->setFast32(doShowSize); | |
| return evt; | |
| } | |
| protected: | |
| virtual bool onQuery(SkEvent* evt) { | |
| if (SampleCode::TitleQ(*evt)) { | |
| SkString name("GM:"); | |
| name.append(fGM->getName()); | |
| SampleCode::TitleR(evt, name.c_str()); | |
| return true; | |
| } | |
| return this->INHERITED::onQuery(evt); | |
| } | |
| virtual bool onEvent(const SkEvent& evt) SK_OVERRIDE { | |
| if (evt.isType("GMSampleView::showSize")) { | |
| fShowSize = SkToBool(evt.getFast32()); | |
| return true; | |
| } | |
| return this->INHERITED::onEvent(evt); | |
| } | |
| virtual void onDrawContent(SkCanvas* canvas) { | |
| { | |
| SkAutoCanvasRestore acr(canvas, fShowSize); | |
| fGM->drawContent(canvas); | |
| } | |
| if (fShowSize) { | |
| SkISize size = fGM->getISize(); | |
| SkRect r = SkRect::MakeWH(SkIntToScalar(size.width()), | |
| SkIntToScalar(size.height())); | |
| SkPaint paint; | |
| paint.setColor(0x40FF8833); | |
| canvas->drawRect(r, paint); | |
| } | |
| } | |
| virtual void onDrawBackground(SkCanvas* canvas) { | |
| fGM->drawBackground(canvas); | |
| } | |
| private: | |
| GM* fGM; | |
| typedef SampleView INHERITED; | |
| }; | |
| #endif |