1d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// found in the LICENSE file.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#ifndef CSSAnimationData_h
653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#define CSSAnimationData_h
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
8d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "core/animation/Timing.h"
9d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "core/animation/css/CSSTimingData.h"
1053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/style/RenderStyleConstants.h"
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
12c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
14d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)class CSSAnimationData FINAL : public CSSTimingData {
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
16d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    static PassOwnPtrWillBeRawPtr<CSSAnimationData> create()
1707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    {
18d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        return adoptPtrWillBeNoop(new CSSAnimationData);
1907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    }
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    static PassOwnPtrWillBeRawPtr<CSSAnimationData> create(const CSSAnimationData& animationData)
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
23d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        return adoptPtrWillBeNoop(new CSSAnimationData(animationData));
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    }
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
26d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    bool animationsMatchForStyleRecalc(const CSSAnimationData& other) const;
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
28d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Timing convertToTiming(size_t index) const;
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
30d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    const Vector<AtomicString>& nameList() const { return m_nameList; }
31d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    const Vector<double>& iterationCountList() const { return m_iterationCountList; }
32d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    const Vector<Timing::PlaybackDirection>& directionList() const { return m_directionList; }
33d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    const Vector<Timing::FillMode>& fillModeList() const { return m_fillModeList; }
34d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    const Vector<EAnimPlayState>& playStateList() const { return m_playStateList; }
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
36d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<AtomicString>& nameList() { return m_nameList; }
37d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<double>& iterationCountList() { return m_iterationCountList; }
38d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<Timing::PlaybackDirection>& directionList() { return m_directionList; }
39d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<Timing::FillMode>& fillModeList() { return m_fillModeList; }
40d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<EAnimPlayState>& playStateList() { return m_playStateList; }
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
42d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    static const AtomicString& initialName();
43d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    static Timing::PlaybackDirection initialDirection() { return Timing::PlaybackDirectionNormal; }
44d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    static Timing::FillMode initialFillMode() { return Timing::FillModeNone; }
45d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    static double initialIterationCount() { return 1.0; }
46d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    static EAnimPlayState initialPlayState() { return AnimPlayStatePlaying; }
4707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
4953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    CSSAnimationData();
50e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    explicit CSSAnimationData(const CSSAnimationData&);
5153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)
52d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<AtomicString> m_nameList;
53d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<double> m_iterationCountList;
54d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<Timing::PlaybackDirection> m_directionList;
55d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<Timing::FillMode> m_fillModeList;
56d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    Vector<EAnimPlayState> m_playStateList;
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
59c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
6153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#endif // CSSAnimationData_h
62