animations: Refactor AnimatedVariable (#4911)

* animation: Refactor AnimatedVariable

This commit decomposes the AnimatedVariable class into a base class
with the common attribute to all variable types and a templated derived
type containing strongly typed info on the type being animated.

Access to the typed version is perfomed using the visitor pattern. A
utility is provided to build a visitor on the fly using lambdas.

Adding a new type to be animated should just be a matter of adding the
typed in the list defined by the ANIMABLE_TYPES macro

The size of the commit is justified by the API change in the
AnimatedVariable class. No more vec(), fl() or col() method but a unified
value() method.

* animation: Remove visitor pattern

* animation: Fix coding style

* animation: Fix coding style
This commit is contained in:
GartoxFR
2024-03-02 01:35:17 +01:00
committed by GitHub
parent f115ba94d2
commit b2c3440477
37 changed files with 491 additions and 589 deletions

View File

@@ -19,19 +19,19 @@ struct SLayerSurface {
SLayerSurface();
~SLayerSurface();
void applyRules();
void startAnimation(bool in, bool instant = false);
bool isFadedOut();
void applyRules();
void startAnimation(bool in, bool instant = false);
bool isFadedOut();
CAnimatedVariable realPosition;
CAnimatedVariable realSize;
CAnimatedVariable<Vector2D> realPosition;
CAnimatedVariable<Vector2D> realSize;
wlr_layer_surface_v1* layerSurface;
wl_list link;
wlr_layer_surface_v1* layerSurface;
wl_list link;
bool keyboardExclusive = false;
bool keyboardExclusive = false;
CWLSurface surface;
CWLSurface surface;
// desktop components
std::unique_ptr<CPopup> popupHead;
@@ -51,7 +51,7 @@ struct SLayerSurface {
std::string szNamespace = "";
CAnimatedVariable alpha;
CAnimatedVariable<float> alpha;
bool fadingOut = false;
bool readyToDelete = false;
bool noProcess = false;