aboutsummaryrefslogtreecommitdiff
path: root/src/ui/animations/animation.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/animations/animation.hpp')
-rw-r--r--src/ui/animations/animation.hpp130
1 files changed, 0 insertions, 130 deletions
diff --git a/src/ui/animations/animation.hpp b/src/ui/animations/animation.hpp
deleted file mode 100644
index 2226f021..00000000
--- a/src/ui/animations/animation.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-#pragma once
-
-// ReSharper disable once CppUnusedIncludeDirective
-#include "pre.hpp"
-
-#include <unordered_map>
-
-#include "base.hpp"
-#include "timer.hpp"
-
-namespace cru::ui::animations
-{
- using AnimationTimeUnit = FloatSecond;
-
- struct IAnimationDelegate : virtual Interface
- {
- virtual void Cancel() = 0;
- };
-
- using AnimationDelegatePtr = std::shared_ptr<IAnimationDelegate>;
-
- using AnimationStepHandler = std::function<void(AnimationDelegatePtr, double)>;
- using AnimationStartHandler = std::function<void(AnimationDelegatePtr)>;
- using AnimationFinishHandler = std::function<void()>;
- using AnimationCancelHandler = std::function<void()>;
-
- namespace details
- {
- class Animation;
- using AnimationPtr = std::unique_ptr<Animation>;
-
- class AnimationInfo
- {
- public:
- AnimationInfo(String tag, const AnimationTimeUnit duration)
- : tag(std::move(tag)),
- duration(duration)
- {
-
- }
- AnimationInfo(const AnimationInfo& other) = default;
- AnimationInfo(AnimationInfo&& other) = default;
- AnimationInfo& operator=(const AnimationInfo& other) = default;
- AnimationInfo& operator=(AnimationInfo&& other) = default;
- ~AnimationInfo() = default;
-
- String tag;
- AnimationTimeUnit duration;
- std::vector<AnimationStepHandler> step_handlers{};
- std::vector<AnimationStartHandler> start_handlers{};
- std::vector<AnimationFinishHandler> finish_handlers{};
- std::vector<AnimationCancelHandler> cancel_handlers{};
- };
-
- class AnimationManager : public Object
- {
- public:
- static AnimationManager* GetInstance();
- private:
- AnimationManager();
- public:
- AnimationManager(const AnimationManager& other) = delete;
- AnimationManager(AnimationManager&& other) = delete;
- AnimationManager& operator=(const AnimationManager& other) = delete;
- AnimationManager& operator=(AnimationManager&& other) = delete;
- ~AnimationManager() override;
-
- AnimationDelegatePtr CreateAnimation(AnimationInfo info);
- void RemoveAnimation(const String& tag);
-
- private:
- void SetTimer();
- void KillTimer();
-
- private:
- std::unordered_map<String, AnimationPtr> animations_;
- std::optional<TimerTask> timer_;
- };
- }
-
- class AnimationBuilder : public Object
- {
- public:
- AnimationBuilder(String tag, const AnimationTimeUnit duration)
- : info_(std::move(tag), duration)
- {
-
- }
-
- AnimationBuilder& AddStepHandler(const AnimationStepHandler& handler)
- {
- CheckValid();
- info_.step_handlers.push_back(handler);
- return *this;
- }
-
- AnimationBuilder& AddStartHandler(const AnimationStartHandler& handler)
- {
- CheckValid();
- info_.start_handlers.push_back(handler);
- return *this;
- }
-
- AnimationBuilder& AddFinishHandler(const AnimationFinishHandler& handler)
- {
- CheckValid();
- info_.finish_handlers.push_back(handler);
- return *this;
- }
-
- AnimationBuilder& AddCancelHandler(const AnimationCancelHandler& handler)
- {
- CheckValid();
- info_.cancel_handlers.push_back(handler);
- return *this;
- }
-
- AnimationDelegatePtr Start();
-
- private:
- void CheckValid() const
- {
- if (!valid_)
- throw std::runtime_error("The animation builder is invalid.");
- }
-
- bool valid_ = true;
- details::AnimationInfo info_;
- };
-}