summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/Source/platform/animation/CompositorAnimation.h
blob: e4f2b99b8ab2e6a892887450b4fd6e925ed9bda0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Copyright 2016 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 CompositorAnimation_h
#define CompositorAnimation_h

#include "base/memory/scoped_ptr.h"
#include "platform/PlatformExport.h"
#include "platform/animation/CompositorTargetProperty.h"
#include "wtf/Noncopyable.h"

namespace cc {
class Animation;
}

namespace blink {

class CompositorAnimationCurve;

// A compositor driven animation.
class PLATFORM_EXPORT CompositorAnimation {
    WTF_MAKE_NONCOPYABLE(CompositorAnimation);
public:
    enum Direction {
        DirectionNormal,
        DirectionReverse,
        DirectionAlternate,
        DirectionAlternateReverse
    };

    enum FillMode {
        FillModeNone,
        FillModeForwards,
        FillModeBackwards,
        FillModeBoth
    };

    CompositorAnimation(const CompositorAnimationCurve&, CompositorTargetProperty::Type, int animationId, int groupId);
    virtual ~CompositorAnimation();

    // An id must be unique.
    virtual int id();
    virtual int group();

    virtual CompositorTargetProperty::Type targetProperty() const;

    // This is the number of times that the animation will play. If this
    // value is zero the animation will not play. If it is negative, then
    // the animation will loop indefinitely.
    virtual double iterations() const;
    virtual void setIterations(double);

    virtual double startTime() const;
    virtual void setStartTime(double monotonicTime);

    virtual double timeOffset() const;
    virtual void setTimeOffset(double monotonicTime);

    virtual Direction direction() const;
    virtual void setDirection(Direction);

    virtual double playbackRate() const;
    virtual void setPlaybackRate(double);

    virtual FillMode fillMode() const;
    virtual void setFillMode(FillMode);

    virtual double iterationStart() const;
    virtual void setIterationStart(double);

    scoped_ptr<cc::Animation> passAnimation();

protected:
    CompositorAnimation();

private:
    scoped_ptr<cc::Animation> m_animation;
};

} // namespace blink

#endif // CompositorAnimation_h