/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SampleCode.h" #include "SkView.h" #include "SkCanvas.h" #include "SkMovie.h" #include "SkTime.h" #include <new> class AnimGifView : public SkView { SkMovie* fMovie; public: AnimGifView() { fMovie = SkMovie::DecodeFile("/skimages/dollarblk.gif"); } virtual ~AnimGifView() { SkSafeUnref(fMovie); } protected: // overrides from SkEventSink virtual bool onQuery(SkEvent* evt) { if (SampleCode::TitleQ(*evt)) { SampleCode::TitleR(evt, "Animated Gif"); return true; } return this->INHERITED::onQuery(evt); } void drawBG(SkCanvas* canvas) { canvas->drawColor(0xFFDDDDDD); } virtual void onDraw(SkCanvas* canvas) { this->drawBG(canvas); if (fMovie) { if (fMovie->duration()) { fMovie->setTime(SkTime::GetMSecs() % fMovie->duration()); } else { fMovie->setTime(0); } canvas->drawBitmap(fMovie->bitmap(), SkIntToScalar(20), SkIntToScalar(20)); this->inval(NULL); } } private: SkPath fPath; typedef SkView INHERITED; }; ////////////////////////////////////////////////////////////////////////////// static SkView* MyFactory() { return new AnimGifView; } static SkViewRegister reg(MyFactory);