// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SKY_ENGINE_CORE_ANIMATION_CSS_CSSANIMATIONDATA_H_ #define SKY_ENGINE_CORE_ANIMATION_CSS_CSSANIMATIONDATA_H_ #include "sky/engine/core/animation/Timing.h" #include "sky/engine/core/animation/css/CSSTimingData.h" #include "sky/engine/core/rendering/style/RenderStyleConstants.h" namespace blink { class CSSAnimationData final : public CSSTimingData { public: static PassOwnPtr create() { return adoptPtr(new CSSAnimationData); } static PassOwnPtr create(const CSSAnimationData& animationData) { return adoptPtr(new CSSAnimationData(animationData)); } bool animationsMatchForStyleRecalc(const CSSAnimationData& other) const; Timing convertToTiming(size_t index) const; const Vector& nameList() const { return m_nameList; } const Vector& iterationCountList() const { return m_iterationCountList; } const Vector& directionList() const { return m_directionList; } const Vector& fillModeList() const { return m_fillModeList; } const Vector& playStateList() const { return m_playStateList; } Vector& nameList() { return m_nameList; } Vector& iterationCountList() { return m_iterationCountList; } Vector& directionList() { return m_directionList; } Vector& fillModeList() { return m_fillModeList; } Vector& playStateList() { return m_playStateList; } static const AtomicString& initialName(); static Timing::PlaybackDirection initialDirection() { return Timing::PlaybackDirectionNormal; } static Timing::FillMode initialFillMode() { return Timing::FillModeNone; } static double initialIterationCount() { return 1.0; } static EAnimPlayState initialPlayState() { return AnimPlayStatePlaying; } private: CSSAnimationData(); explicit CSSAnimationData(const CSSAnimationData&); Vector m_nameList; Vector m_iterationCountList; Vector m_directionList; Vector m_fillModeList; Vector m_playStateList; }; } // namespace blink #endif // SKY_ENGINE_CORE_ANIMATION_CSS_CSSANIMATIONDATA_H_