2033bf9d00e3ac90e771b19c389842c1458a1b1d
[WebKit-https.git] / Source / WebKit / chromium / tests / CCAnimationTestCommon.h
1 /*
2  * Copyright (C) 2012 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1.  Redistributions of source code must retain the above copyright
8  *     notice, this list of conditions and the following disclaimer.
9  * 2.  Redistributions in binary form must reproduce the above copyright
10  *     notice, this list of conditions and the following disclaimer in the
11  *     documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16  * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23  */
24
25 #ifndef CCAnimationTestCommon_h
26 #define CCAnimationTestCommon_h
27
28 #include "cc/CCAnimationCurve.h"
29 #include "cc/CCLayerAnimationController.h"
30
31 #include <wtf/OwnPtr.h>
32
33 namespace WebCore {
34 class CCLayerImpl;
35 class LayerChromium;
36 }
37
38 namespace WebKitTests {
39
40 class FakeFloatAnimationCurve : public WebCore::CCFloatAnimationCurve {
41 public:
42     FakeFloatAnimationCurve();
43     virtual ~FakeFloatAnimationCurve();
44
45     virtual double duration() const { return 1; }
46     virtual float getValue(double now) const { return 0; }
47     virtual PassOwnPtr<WebCore::CCAnimationCurve> clone() const;
48 };
49
50 class FakeTransformTransition : public WebCore::CCTransformAnimationCurve {
51 public:
52     FakeTransformTransition(double duration);
53     virtual ~FakeTransformTransition();
54
55     virtual double duration() const { return m_duration; }
56     virtual WebCore::TransformationMatrix getValue(double time, const WebCore::IntSize&) const;
57
58     virtual PassOwnPtr<WebCore::CCAnimationCurve> clone() const;
59
60 private:
61     double m_duration;
62 };
63
64 class FakeFloatTransition : public WebCore::CCFloatAnimationCurve {
65 public:
66     FakeFloatTransition(double duration, float from, float to);
67     virtual ~FakeFloatTransition();
68
69     virtual double duration() const { return m_duration; }
70     virtual float getValue(double time) const;
71
72     virtual PassOwnPtr<WebCore::CCAnimationCurve> clone() const;
73
74 private:
75     double m_duration;
76     float m_from;
77     float m_to;
78 };
79
80 class FakeLayerAnimationControllerClient : public WebCore::CCLayerAnimationControllerClient {
81 public:
82     FakeLayerAnimationControllerClient();
83     virtual ~FakeLayerAnimationControllerClient();
84
85     // CCLayerAnimationControllerClient implementation
86     virtual int id() const { return 0; }
87     virtual void setOpacityFromAnimation(float opacity) { m_opacity = opacity; }
88     virtual float opacity() const { return m_opacity; }
89     virtual void setTransformFromAnimation(const WebCore::TransformationMatrix& transform) { m_transform = transform; }
90     virtual const WebCore::TransformationMatrix& transform() const { return m_transform; }
91     virtual const WebCore::IntSize& bounds() const { return m_bounds; }
92
93 private:
94     float m_opacity;
95     WebCore::TransformationMatrix m_transform;
96     WebCore::IntSize m_bounds;
97 };
98
99 void addOpacityTransitionToController(WebCore::CCLayerAnimationController&, double duration, float startOpacity, float endOpacity, bool useTimingFunction);
100
101 void addOpacityTransitionToLayer(WebCore::LayerChromium&, double duration, float startOpacity, float endOpacity, bool useTimingFunction);
102 void addOpacityTransitionToLayer(WebCore::CCLayerImpl&, double duration, float startOpacity, float endOpacity, bool useTimingFunction);
103
104 void addAnimatedTransformToLayer(WebCore::LayerChromium&, double duration, int deltaX, int deltaY);
105 void addAnimatedTransformToLayer(WebCore::CCLayerImpl&, double duration, int deltaX, int deltaY);
106
107 } // namespace WebKitTests
108
109 #endif // CCAnimationTesctCommon_h