Hyprland/src/managers/AnimationManager.hpp

65 lines
2.5 KiB
C++
Raw Normal View History

2022-03-23 22:01:59 +01:00
#pragma once
#include <hyprutils/animation/AnimationManager.hpp>
#include <hyprutils/animation/AnimatedVariable.hpp>
2022-03-23 22:01:59 +01:00
#include "../defines.hpp"
2022-04-23 14:16:02 +02:00
#include "../helpers/AnimatedVariable.hpp"
2025-01-07 19:13:35 +01:00
#include "../desktop/DesktopTypes.hpp"
#include "eventLoop/EventLoopTimer.hpp"
2022-03-23 22:01:59 +01:00
class CHyprAnimationManager : public Hyprutils::Animation::CAnimationManager {
public:
CHyprAnimationManager();
2022-04-23 21:47:16 +02:00
void tick();
virtual void scheduleTick();
virtual void onTicked();
2022-03-23 22:01:59 +01:00
using SAnimationPropertyConfig = Hyprutils::Animation::SAnimationPropertyConfig;
template <Animable VarType>
void createAnimation(const VarType& v, PHLANIMVAR<VarType>& pav, SP<SAnimationPropertyConfig> pConfig, eAVarDamagePolicy policy) {
constexpr const eAnimatedVarType EAVTYPE = typeToeAnimatedVarType<VarType>;
const auto PAV = makeShared<CAnimatedVariable<VarType>>();
2022-05-14 16:43:30 +02:00
PAV->create(EAVTYPE, static_cast<Hyprutils::Animation::CAnimationManager*>(this), PAV, v);
PAV->setConfig(pConfig);
PAV->m_Context.eDamagePolicy = policy;
2022-08-07 19:28:46 +02:00
pav = std::move(PAV);
}
2022-08-07 19:28:46 +02:00
template <Animable VarType>
void createAnimation(const VarType& v, PHLANIMVAR<VarType>& pav, SP<SAnimationPropertyConfig> pConfig, PHLWINDOW pWindow, eAVarDamagePolicy policy) {
createAnimation(v, pav, pConfig, policy);
pav->m_Context.pWindow = pWindow;
}
template <Animable VarType>
void createAnimation(const VarType& v, PHLANIMVAR<VarType>& pav, SP<SAnimationPropertyConfig> pConfig, PHLWORKSPACE pWorkspace, eAVarDamagePolicy policy) {
createAnimation(v, pav, pConfig, policy);
pav->m_Context.pWorkspace = pWorkspace;
}
template <Animable VarType>
void createAnimation(const VarType& v, PHLANIMVAR<VarType>& pav, SP<SAnimationPropertyConfig> pConfig, PHLLS pLayer, eAVarDamagePolicy policy) {
createAnimation(v, pav, pConfig, policy);
pav->m_Context.pLayer = pLayer;
}
2023-01-25 15:16:28 +00:00
void onWindowPostCreateClose(PHLWINDOW, bool close = false);
2022-04-23 14:16:02 +02:00
std::string styleValidInConfigVar(const std::string&, const std::string&);
SP<CEventLoopTimer> m_pAnimationTimer;
2023-03-03 12:15:59 +00:00
float m_fLastTickTime; // in ms
2022-04-23 21:47:16 +02:00
private:
bool m_bTickScheduled = false;
2023-08-05 23:29:33 +02:00
2022-05-15 14:18:31 +02:00
// Anim stuff
void animationPopin(PHLWINDOW, bool close = false, float minPerc = 0.f);
void animationSlide(PHLWINDOW, std::string force = "", bool close = false);
2022-03-23 22:01:59 +01:00
};
inline std::unique_ptr<CHyprAnimationManager> g_pAnimationManager;