blob: f573c2ed0938db3af8f2aa7d5d88fa236176bbdc [file] [log] [blame]
Florin Malita54f65c42018-01-16 17:04:30 -05001/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkottieSlide_DEFINED
9#define SkottieSlide_DEFINED
10
11#include "Slide.h"
12
13namespace skottie { class Animation; }
Florin Malitabcd07232018-01-31 11:08:58 -050014namespace sksg { class Scene; }
Florin Malita54f65c42018-01-16 17:04:30 -050015
16class SkottieSlide : public Slide {
17public:
18 SkottieSlide(const SkString& name, const SkString& path);
19 ~SkottieSlide() override = default;
20
21 void load(SkScalar winWidth, SkScalar winHeight) override;
22 void unload() override;
23
24 SkISize getDimensions() const override;
25
26 void draw(SkCanvas*) override;
27 bool animate(const SkAnimTimer&) override;
28
29 bool onChar(SkUnichar) override;
30
31private:
32 SkString fPath;
33 std::unique_ptr<skottie::Animation> fAnimation;
34 SkMSec fTimeBase = 0;
35 bool fShowAnimationInval = false;
36
37 typedef Slide INHERITED;
38};
39
40class SkottieSlide2 : public Slide {
41public:
42 SkottieSlide2(const SkString& path);
43 ~SkottieSlide2() override = default;
44
45 void load(SkScalar winWidth, SkScalar winHeight) override;
46 void unload() override;
47
48 SkISize getDimensions() const override;
49
50 void draw(SkCanvas*) override;
51 bool animate(const SkAnimTimer&) override;
52 bool onMouse(SkScalar x, SkScalar y, sk_app::Window::InputState, uint32_t modifiers) override;
53private:
Florin Malitabcd07232018-01-31 11:08:58 -050054 class AnimationWrapper;
55
Florin Malita54f65c42018-01-16 17:04:30 -050056 struct Rec {
Florin Malitabcd07232018-01-31 11:08:58 -050057 sk_sp<AnimationWrapper> fWrapper;
Florin Malita54f65c42018-01-16 17:04:30 -050058 SkMSec fTimeBase = 0;
59 SkString fName;
60 bool fShowAnimationInval = false;
61
Florin Malitabcd07232018-01-31 11:08:58 -050062 explicit Rec(sk_sp<AnimationWrapper>);
Florin Malita54f65c42018-01-16 17:04:30 -050063 Rec(Rec&& o);
64 };
65
66 int findCell(float x, float y) const;
67
Florin Malitabcd07232018-01-31 11:08:58 -050068 SkString fPath;
69 SkTArray<Rec> fAnims;
70 std::unique_ptr<sksg::Scene> fScene;
Florin Malita54f65c42018-01-16 17:04:30 -050071
72 int fTrackingCell = -1;
73
74 typedef Slide INHERITED;
75};
76
77#endif // SkottieSlide_DEFINED