• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2011 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 #include "SampleCode.h"
9 #include "SkView.h"
10 #include "SkCanvas.h"
11 #include "SkMovie.h"
12 #include "SkTime.h"
13 #include <new>
14 
15 class AnimGifView : public SkView {
16     SkMovie*    fMovie;
17 public:
AnimGifView()18     AnimGifView() {
19         fMovie = SkMovie::DecodeFile("/skimages/dollarblk.gif");
20     }
21 
~AnimGifView()22     virtual ~AnimGifView() {
23         SkSafeUnref(fMovie);
24     }
25 
26 protected:
27     // overrides from SkEventSink
onQuery(SkEvent * evt)28     virtual bool onQuery(SkEvent* evt) {
29         if (SampleCode::TitleQ(*evt)) {
30             SampleCode::TitleR(evt, "Animated Gif");
31             return true;
32         }
33         return this->INHERITED::onQuery(evt);
34     }
35 
drawBG(SkCanvas * canvas)36     void drawBG(SkCanvas* canvas) {
37         canvas->drawColor(0xFFDDDDDD);
38     }
39 
onDraw(SkCanvas * canvas)40     virtual void onDraw(SkCanvas* canvas) {
41         this->drawBG(canvas);
42 
43         if (fMovie) {
44             if (fMovie->duration()) {
45                 fMovie->setTime(SkTime::GetMSecs() % fMovie->duration());
46             } else {
47                 fMovie->setTime(0);
48             }
49             canvas->drawBitmap(fMovie->bitmap(), SkIntToScalar(20),
50                                SkIntToScalar(20));
51             this->inval(NULL);
52         }
53     }
54 
55 private:
56     SkPath      fPath;
57 
58     typedef SkView INHERITED;
59 };
60 
61 //////////////////////////////////////////////////////////////////////////////
62 
MyFactory()63 static SkView* MyFactory() { return new AnimGifView; }
64 static SkViewRegister reg(MyFactory);
65