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

Side by Side Diff: ui/compositor/layer_animation_element.h

Issue 134453004: Use a bitfield to store animatable properties. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix win build error 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_ 5 #ifndef UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_
6 #define UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_ 6 #define UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_
7 7
8 #include <set> 8 #include <set>
9 9
10 #include "base/memory/weak_ptr.h" 10 #include "base/memory/weak_ptr.h"
(...skipping 10 matching lines...) Expand all
21 21
22 class InterpolatedTransform; 22 class InterpolatedTransform;
23 class LayerAnimationDelegate; 23 class LayerAnimationDelegate;
24 24
25 // LayerAnimationElements represent one segment of an animation between two 25 // LayerAnimationElements represent one segment of an animation between two
26 // keyframes. They know how to update a LayerAnimationDelegate given a value 26 // keyframes. They know how to update a LayerAnimationDelegate given a value
27 // between 0 and 1 (0 for initial, and 1 for final). 27 // between 0 and 1 (0 for initial, and 1 for final).
28 class COMPOSITOR_EXPORT LayerAnimationElement { 28 class COMPOSITOR_EXPORT LayerAnimationElement {
29 public: 29 public:
30 enum AnimatableProperty { 30 enum AnimatableProperty {
31 TRANSFORM = 0, 31 UNKNOWN = 0,
32 BOUNDS, 32 TRANSFORM = (1 << 0),
33 OPACITY, 33 BOUNDS = (1 << 1),
34 VISIBILITY, 34 OPACITY = (1 << 2),
35 BRIGHTNESS, 35 VISIBILITY = (1 << 3),
36 GRAYSCALE, 36 BRIGHTNESS = (1 << 4),
37 COLOR, 37 GRAYSCALE = (1 << 5),
38 COLOR = (1 << 6),
39
40 // Used when iterating over properties.
41 FIRST_PROPERTY = TRANSFORM,
42 SENTINEL = (1 << 7)
38 }; 43 };
39 44
40 static AnimatableProperty ToAnimatableProperty( 45 static AnimatableProperty ToAnimatableProperty(
41 cc::Animation::TargetProperty property); 46 cc::Animation::TargetProperty property);
42 47
43 struct COMPOSITOR_EXPORT TargetValue { 48 struct COMPOSITOR_EXPORT TargetValue {
44 TargetValue(); 49 TargetValue();
45 // Initializes the target value to match the delegate. NULL may be supplied. 50 // Initializes the target value to match the delegate. NULL may be supplied.
46 explicit TargetValue(const LayerAnimationDelegate* delegate); 51 explicit TargetValue(const LayerAnimationDelegate* delegate);
47 52
48 gfx::Rect bounds; 53 gfx::Rect bounds;
49 gfx::Transform transform; 54 gfx::Transform transform;
50 float opacity; 55 float opacity;
51 bool visibility; 56 bool visibility;
52 float brightness; 57 float brightness;
53 float grayscale; 58 float grayscale;
54 SkColor color; 59 SkColor color;
55 }; 60 };
56 61
57 typedef std::set<AnimatableProperty> AnimatableProperties; 62 typedef unsigned AnimatableProperties;
sky 2014/01/13 14:26:42 I believe we generally use uint32 for these.
Ian Vollick 2014/01/13 19:03:59 Done.
58 63
59 LayerAnimationElement(const AnimatableProperties& properties, 64 LayerAnimationElement(AnimatableProperties properties,
60 base::TimeDelta duration); 65 base::TimeDelta duration);
61 66
62 virtual ~LayerAnimationElement(); 67 virtual ~LayerAnimationElement();
63 68
64 // Creates an element that transitions to the given transform. The caller owns 69 // Creates an element that transitions to the given transform. The caller owns
65 // the return value. 70 // the return value.
66 static LayerAnimationElement* CreateTransformElement( 71 static LayerAnimationElement* CreateTransformElement(
67 const gfx::Transform& transform, 72 const gfx::Transform& transform,
68 base::TimeDelta duration); 73 base::TimeDelta duration);
69 74
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 122
118 // Creates an element that transitions to the given grayscale value. 123 // Creates an element that transitions to the given grayscale value.
119 // The caller owns the return value. 124 // The caller owns the return value.
120 static LayerAnimationElement* CreateGrayscaleElement( 125 static LayerAnimationElement* CreateGrayscaleElement(
121 float grayscale, 126 float grayscale,
122 base::TimeDelta duration); 127 base::TimeDelta duration);
123 128
124 // Creates an element that pauses the given properties. The caller owns the 129 // Creates an element that pauses the given properties. The caller owns the
125 // return value. 130 // return value.
126 static LayerAnimationElement* CreatePauseElement( 131 static LayerAnimationElement* CreatePauseElement(
127 const AnimatableProperties& properties, 132 AnimatableProperties properties,
128 base::TimeDelta duration); 133 base::TimeDelta duration);
129 134
130 // Creates an element that transitions to the given color. The caller owns the 135 // Creates an element that transitions to the given color. The caller owns the
131 // return value. 136 // return value.
132 static LayerAnimationElement* CreateColorElement( 137 static LayerAnimationElement* CreateColorElement(
133 SkColor color, 138 SkColor color,
134 base::TimeDelta duration); 139 base::TimeDelta duration);
135 140
136 // Sets the start time for the animation. This must be called before the first 141 // Sets the start time for the animation. This must be called before the first
137 // call to {Start, IsFinished}. Once the animation is finished, this must 142 // call to {Start, IsFinished}. Once the animation is finished, this must
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 bool ProgressToEnd(LayerAnimationDelegate* delegate); 176 bool ProgressToEnd(LayerAnimationDelegate* delegate);
172 177
173 // Called if the animation is not allowed to complete. This may be called 178 // Called if the animation is not allowed to complete. This may be called
174 // before OnStarted or Progress. 179 // before OnStarted or Progress.
175 void Abort(LayerAnimationDelegate* delegate); 180 void Abort(LayerAnimationDelegate* delegate);
176 181
177 // Assigns the target value to |target|. 182 // Assigns the target value to |target|.
178 void GetTargetValue(TargetValue* target) const; 183 void GetTargetValue(TargetValue* target) const;
179 184
180 // The properties that the element modifies. 185 // The properties that the element modifies.
181 const AnimatableProperties& properties() const { return properties_; } 186 AnimatableProperties properties() const { return properties_; }
182 187
183 // Whether this element animates on the compositor thread. 188 // Whether this element animates on the compositor thread.
184 virtual bool IsThreaded() const; 189 virtual bool IsThreaded() const;
185 190
186 gfx::Tween::Type tween_type() const { return tween_type_; } 191 gfx::Tween::Type tween_type() const { return tween_type_; }
187 void set_tween_type(gfx::Tween::Type tween_type) { tween_type_ = tween_type; } 192 void set_tween_type(gfx::Tween::Type tween_type) { tween_type_ = tween_type; }
188 193
189 // Each LayerAnimationElement has a unique animation_id. Elements belonging 194 // Each LayerAnimationElement has a unique animation_id. Elements belonging
190 // to sequences that are supposed to start together have the same 195 // to sequences that are supposed to start together have the same
191 // animation_group_id. 196 // animation_group_id.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 double last_progressed_fraction_; 238 double last_progressed_fraction_;
234 239
235 base::WeakPtrFactory<LayerAnimationElement> weak_ptr_factory_; 240 base::WeakPtrFactory<LayerAnimationElement> weak_ptr_factory_;
236 241
237 DISALLOW_ASSIGN(LayerAnimationElement); 242 DISALLOW_ASSIGN(LayerAnimationElement);
238 }; 243 };
239 244
240 } // namespace ui 245 } // namespace ui
241 246
242 #endif // UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_ 247 #endif // UI_COMPOSITOR_LAYER_ANIMATION_ELEMENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698