1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SampleCode.h" 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkView.h" 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkCanvas.h" 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkMovie.h" 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTime.h" 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include <new> 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass AnimGifView : public SkView { 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkMovie* fMovie; 178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic: 18ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com AnimGifView() { 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fMovie = SkMovie::DecodeFile("/skimages/dollarblk.gif"); 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 2182065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual ~AnimGifView() { 2382065d667f64e232bcde2ad849756a6096fcbe6freed@google.com SkSafeUnref(fMovie); 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected: 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com // overrides from SkEventSink 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool onQuery(SkEvent* evt) { 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (SampleCode::TitleQ(*evt)) { 308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SampleCode::TitleR(evt, "Animated Gif"); 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return this->INHERITED::onQuery(evt); 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 3582065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void drawBG(SkCanvas* canvas) { 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->drawColor(0xFFDDDDDD); 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 3982065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void onDraw(SkCanvas* canvas) { 418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com this->drawBG(canvas); 4282065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fMovie) { 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fMovie->duration()) { 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fMovie->setTime(SkTime::GetMSecs() % fMovie->duration()); 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } else { 478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fMovie->setTime(0); 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->drawBitmap(fMovie->bitmap(), SkIntToScalar(20), 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkIntToScalar(20)); 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com this->inval(NULL); 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 5482065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPath fPath; 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef SkView INHERITED; 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com////////////////////////////////////////////////////////////////////////////// 628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkView* MyFactory() { return new AnimGifView; } 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkViewRegister reg(MyFactory); 65