Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(611)

Side by Side Diff: Source/core/platform/animation/AnimationValue.h

Issue 112463008: Move core/platform/animation files (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add comments and platform tests Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Intel Corporation. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27 #ifndef AnimationValue_h
28 #define AnimationValue_h
29
30 #include "core/platform/animation/TimingFunction.h"
31 #include "platform/graphics/filters/FilterOperations.h"
32 #include "platform/transforms/TransformOperations.h"
33
34 #include "wtf/PassRefPtr.h"
35 #include "wtf/RefPtr.h"
36
37 namespace WebCore {
38
39 // Base class for animation values (also used for transitions). Here to
40 // represent values for properties being animated via the GraphicsLayer,
41 // without pulling in style-related data from outside of the platform directory.
42 class AnimationValue {
43 WTF_MAKE_FAST_ALLOCATED;
44 public:
45 explicit AnimationValue(double keyTime, PassRefPtr<TimingFunction> timingFun ction = 0)
46 : m_keyTime(keyTime)
47 , m_timingFunction(timingFunction)
48 {
49 }
50
51 virtual ~AnimationValue() { }
52
53 double keyTime() const { return m_keyTime; }
54 const TimingFunction* timingFunction() const { return m_timingFunction.get() ; }
55 virtual PassOwnPtr<AnimationValue> clone() const = 0;
56
57 private:
58 double m_keyTime;
59 RefPtr<TimingFunction> m_timingFunction;
60 };
61
62 // Used to store one float value of an animation.
63 class FloatAnimationValue : public AnimationValue {
64 public:
65 FloatAnimationValue(double keyTime, float value, PassRefPtr<TimingFunction> timingFunction = 0)
66 : AnimationValue(keyTime, timingFunction)
67 , m_value(value)
68 {
69 }
70 virtual PassOwnPtr<AnimationValue> clone() const OVERRIDE { return adoptPtr( new FloatAnimationValue(*this)); }
71
72 float value() const { return m_value; }
73
74 private:
75 float m_value;
76 };
77
78 // Used to store one transform value in a keyframe list.
79 class TransformAnimationValue : public AnimationValue {
80 public:
81 explicit TransformAnimationValue(double keyTime, const TransformOperations* value = 0, PassRefPtr<TimingFunction> timingFunction = 0)
82 : AnimationValue(keyTime, timingFunction)
83 {
84 if (value)
85 m_value = *value;
86 }
87 virtual PassOwnPtr<AnimationValue> clone() const OVERRIDE { return adoptPtr( new TransformAnimationValue(*this)); }
88
89 const TransformOperations* value() const { return &m_value; }
90
91 private:
92 TransformOperations m_value;
93 };
94
95 // Used to store one filter value in a keyframe list.
96 class FilterAnimationValue : public AnimationValue {
97 public:
98 explicit FilterAnimationValue(double keyTime, const FilterOperations* value = 0, PassRefPtr<TimingFunction> timingFunction = 0)
99 : AnimationValue(keyTime, timingFunction)
100 {
101 if (value)
102 m_value = *value;
103 }
104 virtual PassOwnPtr<AnimationValue> clone() const OVERRIDE { return adoptPtr( new FilterAnimationValue(*this)); }
105
106 const FilterOperations* value() const { return &m_value; }
107
108 private:
109 FilterOperations m_value;
110 };
111
112 } // namespace WebCore
113
114 #endif // AnimationValue_h
OLDNEW
« no previous file with comments | « Source/core/platform/animation/AnimationTranslationUtilTest.cpp ('k') | Source/core/platform/animation/CSSAnimationData.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698