// SPDX-License-Identifier: MIT // // EmulationStation Desktop Edition // LottieComponent.h // // Component to play Lottie animations using the rlottie library. // #ifndef ES_CORE_COMPONENTS_LOTTIE_COMPONENT_H #define ES_CORE_COMPONENTS_LOTTIE_COMPONENT_H #include "GuiComponent.h" #include "renderers/Renderer.h" #include "resources/TextureResource.h" #include "rlottie.h" #include class LottieComponent : public GuiComponent { public: LottieComponent(Window* window); virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; private: void update(int deltaTime) override; void render(const glm::mat4& parentTrans) override; std::shared_ptr mTexture; std::vector mPictureRGBA; std::vector> mBuffer2; std::unique_ptr mAnimation; Renderer::Vertex mVertices[4]; std::vector mBuffer; std::unique_ptr mSurface; size_t mTotalFrames; size_t mLastRenderedFrame; size_t mLastDisplayedFrame; double mFrameRate; int mTargetPacing; int mSkipAccumulator; bool mSkipFrame; std::chrono::time_point mAnimationStartTime; std::chrono::time_point mAnimationEndTime; }; #endif // ES_CORE_COMPONENTS_LOTTIE_COMPONENT_H