/* * 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 "tools/viewer/Slide.h" #if defined(SK_ENABLE_SKOTTIE) #include "modules/skottie/include/Skottie.h" #include "modules/sksg/include/SkSGInvalidationController.h" namespace sksg { class Scene; } 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(double) override; bool onChar(SkUnichar) override; bool onMouse(SkScalar x, SkScalar y, InputState, ModifierKey modifiers) override; private: SkString fPath; sk_sp fAnimation; skottie::Animation::Builder::Stats fAnimationStats; sksg::InvalidationController fInvalController; SkSize fWinSize = SkSize::MakeEmpty(); SkMSec fTimeBase = 0; bool fShowAnimationInval = false, fShowAnimationStats = false; typedef Slide INHERITED; }; #endif // SK_ENABLE_SKOTTIE #endif // SkottieSlide_DEFINED