/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkottieSlide_DEFINED #define SkottieSlide_DEFINED #include "Slide.h" namespace skottie { class Animation; } class SkottieSlide : public Slide { public: SkottieSlide(const SkString& name, const SkString& path); ~SkottieSlide() override = default; void load(SkScalar winWidth, SkScalar winHeight) override; void unload() override; SkISize getDimensions() const override; void draw(SkCanvas*) override; bool animate(const SkAnimTimer&) override; bool onChar(SkUnichar) override; private: SkString fPath; std::unique_ptr fAnimation; SkMSec fTimeBase = 0; bool fShowAnimationInval = false; typedef Slide INHERITED; }; class SkottieSlide2 : public Slide { public: SkottieSlide2(const SkString& path); ~SkottieSlide2() override = default; void load(SkScalar winWidth, SkScalar winHeight) override; void unload() override; SkISize getDimensions() const override; void draw(SkCanvas*) override; bool animate(const SkAnimTimer&) override; bool onMouse(SkScalar x, SkScalar y, sk_app::Window::InputState, uint32_t modifiers) override; private: struct Rec { std::unique_ptr fAnimation; SkMSec fTimeBase = 0; SkString fName; bool fShowAnimationInval = false; Rec(std::unique_ptr anim); Rec(Rec&& o); }; int findCell(float x, float y) const; SkString fPath; SkTArray fAnims; int fTrackingCell = -1; typedef Slide INHERITED; }; #endif // SkottieSlide_DEFINED