DeclarativeAnimation.h [plain text]
#pragma once
#include "AnimationEffectReadOnly.h"
#include "GenericEventQueue.h"
#include "WebAnimation.h"
#include <wtf/Ref.h>
namespace WebCore {
class Animation;
class Element;
class RenderStyle;
class DeclarativeAnimation : public WebAnimation {
public:
~DeclarativeAnimation();
bool isDeclarativeAnimation() const final { return true; }
const Animation& backingAnimation() const { return m_backingAnimation; }
void setBackingAnimation(const Animation&);
void invalidateDOMEvents(Seconds elapsedTime = 0_s);
void setTimeline(RefPtr<AnimationTimeline>&&) final;
void cancel() final;
protected:
DeclarativeAnimation(Element&, const Animation&);
virtual void initialize(const Element&, const RenderStyle* oldStyle, const RenderStyle& newStyle);
virtual void syncPropertiesWithBackingAnimation();
private:
AnimationEffectReadOnly::Phase phaseWithoutEffect() const;
void enqueueDOMEvent(const AtomicString&, Seconds);
void remove() final;
Element& m_target;
Ref<Animation> m_backingAnimation;
bool m_wasPending { false };
AnimationEffectReadOnly::Phase m_previousPhase { AnimationEffectReadOnly::Phase::Idle };
double m_previousIteration;
GenericEventQueue m_eventQueue;
};
}
SPECIALIZE_TYPE_TRAITS_WEB_ANIMATION(DeclarativeAnimation, isDeclarativeAnimation())