SkottieSlide.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  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. #ifndef SkottieSlide_DEFINED
  8. #define SkottieSlide_DEFINED
  9. #include "tools/viewer/Slide.h"
  10. #if defined(SK_ENABLE_SKOTTIE)
  11. #include "modules/skottie/include/Skottie.h"
  12. #include "modules/sksg/include/SkSGInvalidationController.h"
  13. namespace sksg { class Scene; }
  14. class SkottieSlide : public Slide {
  15. public:
  16. SkottieSlide(const SkString& name, const SkString& path);
  17. ~SkottieSlide() override = default;
  18. void load(SkScalar winWidth, SkScalar winHeight) override;
  19. void unload() override;
  20. SkISize getDimensions() const override;
  21. void draw(SkCanvas*) override;
  22. bool animate(double) override;
  23. bool onChar(SkUnichar) override;
  24. bool onMouse(SkScalar x, SkScalar y, InputState, ModifierKey modifiers) override;
  25. private:
  26. SkString fPath;
  27. sk_sp<skottie::Animation> fAnimation;
  28. skottie::Animation::Builder::Stats fAnimationStats;
  29. sksg::InvalidationController fInvalController;
  30. SkSize fWinSize = SkSize::MakeEmpty();
  31. SkMSec fTimeBase = 0;
  32. bool fShowAnimationInval = false,
  33. fShowAnimationStats = false;
  34. typedef Slide INHERITED;
  35. };
  36. #endif // SK_ENABLE_SKOTTIE
  37. #endif // SkottieSlide_DEFINED