1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2017 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef SkottieSlide_DEFINED 9cb93a386Sopenharmony_ci#define SkottieSlide_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "tools/viewer/Slide.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci#if defined(SK_ENABLE_SKOTTIE) 14cb93a386Sopenharmony_ci#include "modules/skottie/include/Skottie.h" 15cb93a386Sopenharmony_ci#include "modules/sksg/include/SkSGInvalidationController.h" 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_ci#include <vector> 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_cinamespace sksg { class Scene; } 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_ciclass SkottieSlide : public Slide { 22cb93a386Sopenharmony_cipublic: 23cb93a386Sopenharmony_ci SkottieSlide(const SkString& name, const SkString& path); 24cb93a386Sopenharmony_ci ~SkottieSlide() override = default; 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ci void load(SkScalar winWidth, SkScalar winHeight) override; 27cb93a386Sopenharmony_ci void unload() override; 28cb93a386Sopenharmony_ci void resize(SkScalar, SkScalar) override; 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_ci SkISize getDimensions() const override; 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ci void draw(SkCanvas*) override; 33cb93a386Sopenharmony_ci bool animate(double) override; 34cb93a386Sopenharmony_ci 35cb93a386Sopenharmony_ci bool onChar(SkUnichar) override; 36cb93a386Sopenharmony_ci bool onMouse(SkScalar x, SkScalar y, skui::InputState, skui::ModifierKey modifiers) override; 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ciprivate: 39cb93a386Sopenharmony_ci SkRect UIArea() const; 40cb93a386Sopenharmony_ci void renderUI(); 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_ci const SkString fPath; 43cb93a386Sopenharmony_ci 44cb93a386Sopenharmony_ci sk_sp<skottie::Animation> fAnimation; 45cb93a386Sopenharmony_ci skottie::Animation::Builder::Stats fAnimationStats; 46cb93a386Sopenharmony_ci sksg::InvalidationController fInvalController; 47cb93a386Sopenharmony_ci std::vector<float> fFrameTimes; 48cb93a386Sopenharmony_ci SkSize fWinSize = SkSize::MakeEmpty(); 49cb93a386Sopenharmony_ci double fTimeBase = 0, 50cb93a386Sopenharmony_ci fFrameRate = 0; 51cb93a386Sopenharmony_ci const char* fFrameRateLabel = nullptr; 52cb93a386Sopenharmony_ci float fCurrentFrame = 0; 53cb93a386Sopenharmony_ci bool fShowAnimationInval = false, 54cb93a386Sopenharmony_ci fShowAnimationStats = false, 55cb93a386Sopenharmony_ci fShowUI = false, 56cb93a386Sopenharmony_ci fDraggingProgress = false, 57cb93a386Sopenharmony_ci fPreferGlyphPaths = false; 58cb93a386Sopenharmony_ci 59cb93a386Sopenharmony_ci using INHERITED = Slide; 60cb93a386Sopenharmony_ci}; 61cb93a386Sopenharmony_ci 62cb93a386Sopenharmony_ci#endif // SK_ENABLE_SKOTTIE 63cb93a386Sopenharmony_ci 64cb93a386Sopenharmony_ci#endif // SkottieSlide_DEFINED 65