| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 CC_ANIMATION_ELEMENT_ANIMATIONS_H_ | 5 #ifndef CC_ANIMATION_ELEMENT_ANIMATIONS_H_ |
| 6 #define CC_ANIMATION_ELEMENT_ANIMATIONS_H_ | 6 #define CC_ANIMATION_ELEMENT_ANIMATIONS_H_ |
| 7 | 7 |
| 8 #include <bitset> | 8 #include <bitset> |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 } | 26 } |
| 27 | 27 |
| 28 namespace cc { | 28 namespace cc { |
| 29 | 29 |
| 30 class AnimationDelegate; | 30 class AnimationDelegate; |
| 31 class AnimationEvents; | 31 class AnimationEvents; |
| 32 class AnimationHost; | 32 class AnimationHost; |
| 33 class AnimationPlayer; | 33 class AnimationPlayer; |
| 34 class FilterOperations; | 34 class FilterOperations; |
| 35 class KeyframeValueList; | 35 class KeyframeValueList; |
| 36 enum class LayerTreeType; | 36 enum class ElementListType; |
| 37 | 37 |
| 38 // An ElementAnimations owns a list of all AnimationPlayers, attached to | 38 // An ElementAnimations owns a list of all AnimationPlayers, attached to |
| 39 // the layer. | 39 // the element. |
| 40 // This is a CC counterpart for blink::ElementAnimations (in 1:1 relationship). | 40 // This is a CC counterpart for blink::ElementAnimations (in 1:1 relationship). |
| 41 // No pointer to/from respective blink::ElementAnimations object for now. | 41 // No pointer to/from respective blink::ElementAnimations object for now. |
| 42 class CC_EXPORT ElementAnimations : public base::RefCounted<ElementAnimations> { | 42 class CC_EXPORT ElementAnimations : public base::RefCounted<ElementAnimations> { |
| 43 public: | 43 public: |
| 44 static scoped_refptr<ElementAnimations> Create(); | 44 static scoped_refptr<ElementAnimations> Create(); |
| 45 | 45 |
| 46 ElementId element_id() const { return element_id_; } | 46 ElementId element_id() const { return element_id_; } |
| 47 void SetElementId(ElementId element_id); | 47 void SetElementId(ElementId element_id); |
| 48 | 48 |
| 49 // Parent AnimationHost. | 49 // Parent AnimationHost. |
| 50 AnimationHost* animation_host() { return animation_host_; } | 50 AnimationHost* animation_host() { return animation_host_; } |
| 51 const AnimationHost* animation_host() const { return animation_host_; } | 51 const AnimationHost* animation_host() const { return animation_host_; } |
| 52 void SetAnimationHost(AnimationHost* host); | 52 void SetAnimationHost(AnimationHost* host); |
| 53 | 53 |
| 54 void InitAffectedElementTypes(); | 54 void InitAffectedElementTypes(); |
| 55 void ClearAffectedElementTypes(); | 55 void ClearAffectedElementTypes(); |
| 56 | 56 |
| 57 void LayerRegistered(ElementId element_id, LayerTreeType tree_type); | 57 void ElementRegistered(ElementId element_id, ElementListType list_type); |
| 58 void LayerUnregistered(ElementId element_id, LayerTreeType tree_type); | 58 void ElementUnregistered(ElementId element_id, ElementListType list_type); |
| 59 | 59 |
| 60 void AddPlayer(AnimationPlayer* player); | 60 void AddPlayer(AnimationPlayer* player); |
| 61 void RemovePlayer(AnimationPlayer* player); | 61 void RemovePlayer(AnimationPlayer* player); |
| 62 bool IsEmpty() const; | 62 bool IsEmpty() const; |
| 63 | 63 |
| 64 typedef base::LinkedList<AnimationPlayer> PlayersList; | 64 typedef base::LinkedList<AnimationPlayer> PlayersList; |
| 65 typedef base::LinkNode<AnimationPlayer> PlayersListNode; | 65 typedef base::LinkNode<AnimationPlayer> PlayersListNode; |
| 66 const PlayersList& players_list() const { return *players_list_.get(); } | 66 const PlayersList& players_list() const { return *players_list_.get(); } |
| 67 | 67 |
| 68 // Ensures that the list of active animations on the main thread and the impl | 68 // Ensures that the list of active animations on the main thread and the impl |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 // aborted. | 100 // aborted. |
| 101 bool HasActiveAnimation() const; | 101 bool HasActiveAnimation() const; |
| 102 | 102 |
| 103 // Returns true if there are any animations at all to process. | 103 // Returns true if there are any animations at all to process. |
| 104 bool has_any_animation() const { return !animations_.empty(); } | 104 bool has_any_animation() const { return !animations_.empty(); } |
| 105 | 105 |
| 106 // Returns true if there is an animation that is either currently animating | 106 // Returns true if there is an animation that is either currently animating |
| 107 // the given property or scheduled to animate this property in the future, and | 107 // the given property or scheduled to animate this property in the future, and |
| 108 // that affects the given tree type. | 108 // that affects the given tree type. |
| 109 bool IsPotentiallyAnimatingProperty(TargetProperty::Type target_property, | 109 bool IsPotentiallyAnimatingProperty(TargetProperty::Type target_property, |
| 110 LayerTreeType tree_type) const; | 110 ElementListType list_type) const; |
| 111 | 111 |
| 112 // Returns true if there is an animation that is currently animating the given | 112 // Returns true if there is an animation that is currently animating the given |
| 113 // property and that affects the given tree type. | 113 // property and that affects the given tree type. |
| 114 bool IsCurrentlyAnimatingProperty(TargetProperty::Type target_property, | 114 bool IsCurrentlyAnimatingProperty(TargetProperty::Type target_property, |
| 115 LayerTreeType tree_type) const; | 115 ElementListType list_type) const; |
| 116 | 116 |
| 117 void NotifyAnimationStarted(const AnimationEvent& event); | 117 void NotifyAnimationStarted(const AnimationEvent& event); |
| 118 void NotifyAnimationFinished(const AnimationEvent& event); | 118 void NotifyAnimationFinished(const AnimationEvent& event); |
| 119 void NotifyAnimationAborted(const AnimationEvent& event); | 119 void NotifyAnimationAborted(const AnimationEvent& event); |
| 120 void NotifyAnimationPropertyUpdate(const AnimationEvent& event); | 120 void NotifyAnimationPropertyUpdate(const AnimationEvent& event); |
| 121 void NotifyAnimationTakeover(const AnimationEvent& event); | 121 void NotifyAnimationTakeover(const AnimationEvent& event); |
| 122 | 122 |
| 123 bool has_element_in_active_list() const { | 123 bool has_element_in_active_list() const { |
| 124 return has_element_in_active_list_; | 124 return has_element_in_active_list_; |
| 125 } | 125 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 141 HasFilterAnimationThatInflatesBounds(); | 141 HasFilterAnimationThatInflatesBounds(); |
| 142 } | 142 } |
| 143 | 143 |
| 144 bool FilterAnimationBoundsForBox(const gfx::BoxF& box, | 144 bool FilterAnimationBoundsForBox(const gfx::BoxF& box, |
| 145 gfx::BoxF* bounds) const; | 145 gfx::BoxF* bounds) const; |
| 146 bool TransformAnimationBoundsForBox(const gfx::BoxF& box, | 146 bool TransformAnimationBoundsForBox(const gfx::BoxF& box, |
| 147 gfx::BoxF* bounds) const; | 147 gfx::BoxF* bounds) const; |
| 148 | 148 |
| 149 bool HasAnimationThatAffectsScale() const; | 149 bool HasAnimationThatAffectsScale() const; |
| 150 | 150 |
| 151 bool HasOnlyTranslationTransforms(LayerTreeType tree_type) const; | 151 bool HasOnlyTranslationTransforms(ElementListType list_type) const; |
| 152 | 152 |
| 153 bool AnimationsPreserveAxisAlignment() const; | 153 bool AnimationsPreserveAxisAlignment() const; |
| 154 | 154 |
| 155 // Sets |start_scale| to the maximum of starting animation scale along any | 155 // Sets |start_scale| to the maximum of starting animation scale along any |
| 156 // dimension at any destination in active animations. Returns false if the | 156 // dimension at any destination in active animations. Returns false if the |
| 157 // starting scale cannot be computed. | 157 // starting scale cannot be computed. |
| 158 bool AnimationStartScale(LayerTreeType tree_type, float* start_scale) const; | 158 bool AnimationStartScale(ElementListType list_type, float* start_scale) const; |
| 159 | 159 |
| 160 // Sets |max_scale| to the maximum scale along any dimension at any | 160 // Sets |max_scale| to the maximum scale along any dimension at any |
| 161 // destination in active animations. Returns false if the maximum scale cannot | 161 // destination in active animations. Returns false if the maximum scale cannot |
| 162 // be computed. | 162 // be computed. |
| 163 bool MaximumTargetScale(LayerTreeType tree_type, float* max_scale) const; | 163 bool MaximumTargetScale(ElementListType list_type, float* max_scale) const; |
| 164 | 164 |
| 165 // When a scroll animation is removed on the main thread, its compositor | 165 // When a scroll animation is removed on the main thread, its compositor |
| 166 // thread counterpart continues producing scroll deltas until activation. | 166 // thread counterpart continues producing scroll deltas until activation. |
| 167 // These scroll deltas need to be cleared at activation, so that the active | 167 // These scroll deltas need to be cleared at activation, so that the active |
| 168 // layer's scroll offset matches the offset provided by the main thread | 168 // element's scroll offset matches the offset provided by the main thread |
| 169 // rather than a combination of this offset and scroll deltas produced by | 169 // rather than a combination of this offset and scroll deltas produced by |
| 170 // the removed animation. This is to provide the illusion of synchronicity to | 170 // the removed animation. This is to provide the illusion of synchronicity to |
| 171 // JS that simultaneously removes an animation and sets the scroll offset. | 171 // JS that simultaneously removes an animation and sets the scroll offset. |
| 172 bool scroll_offset_animation_was_interrupted() const { | 172 bool scroll_offset_animation_was_interrupted() const { |
| 173 return scroll_offset_animation_was_interrupted_; | 173 return scroll_offset_animation_was_interrupted_; |
| 174 } | 174 } |
| 175 | 175 |
| 176 bool needs_to_start_animations_for_testing() { | 176 bool needs_to_start_animations_for_testing() { |
| 177 return needs_to_start_animations_; | 177 return needs_to_start_animations_; |
| 178 } | 178 } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 bool notify_pending_elements); | 222 bool notify_pending_elements); |
| 223 | 223 |
| 224 void NotifyClientAnimationWaitingForDeletion(); | 224 void NotifyClientAnimationWaitingForDeletion(); |
| 225 | 225 |
| 226 void NotifyClientTransformIsPotentiallyAnimatingChanged( | 226 void NotifyClientTransformIsPotentiallyAnimatingChanged( |
| 227 bool notify_active_elements, | 227 bool notify_active_elements, |
| 228 bool notify_pending_elements); | 228 bool notify_pending_elements); |
| 229 | 229 |
| 230 void UpdatePotentiallyAnimatingTransform(); | 230 void UpdatePotentiallyAnimatingTransform(); |
| 231 | 231 |
| 232 void OnFilterAnimated(LayerTreeType tree_type, | 232 void OnFilterAnimated(ElementListType list_type, |
| 233 const FilterOperations& filters); | 233 const FilterOperations& filters); |
| 234 void OnOpacityAnimated(LayerTreeType tree_type, float opacity); | 234 void OnOpacityAnimated(ElementListType list_type, float opacity); |
| 235 void OnTransformAnimated(LayerTreeType tree_type, | 235 void OnTransformAnimated(ElementListType list_type, |
| 236 const gfx::Transform& transform); | 236 const gfx::Transform& transform); |
| 237 void OnScrollOffsetAnimated(LayerTreeType tree_type, | 237 void OnScrollOffsetAnimated(ElementListType list_type, |
| 238 const gfx::ScrollOffset& scroll_offset); | 238 const gfx::ScrollOffset& scroll_offset); |
| 239 void OnAnimationWaitingForDeletion(); | 239 void OnAnimationWaitingForDeletion(); |
| 240 void OnTransformIsPotentiallyAnimatingChanged(LayerTreeType tree_type, | 240 void OnTransformIsPotentiallyAnimatingChanged(ElementListType list_type, |
| 241 bool is_animating); | 241 bool is_animating); |
| 242 gfx::ScrollOffset ScrollOffsetForAnimation() const; | 242 gfx::ScrollOffset ScrollOffsetForAnimation() const; |
| 243 | 243 |
| 244 void NotifyPlayersAnimationStarted(base::TimeTicks monotonic_time, | 244 void NotifyPlayersAnimationStarted(base::TimeTicks monotonic_time, |
| 245 TargetProperty::Type target_property, | 245 TargetProperty::Type target_property, |
| 246 int group); | 246 int group); |
| 247 void NotifyPlayersAnimationFinished(base::TimeTicks monotonic_time, | 247 void NotifyPlayersAnimationFinished(base::TimeTicks monotonic_time, |
| 248 TargetProperty::Type target_property, | 248 TargetProperty::Type target_property, |
| 249 int group); | 249 int group); |
| 250 void NotifyPlayersAnimationAborted(base::TimeTicks monotonic_time, | 250 void NotifyPlayersAnimationAborted(base::TimeTicks monotonic_time, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 277 | 277 |
| 278 bool potentially_animating_transform_for_active_elements_; | 278 bool potentially_animating_transform_for_active_elements_; |
| 279 bool potentially_animating_transform_for_pending_elements_; | 279 bool potentially_animating_transform_for_pending_elements_; |
| 280 | 280 |
| 281 DISALLOW_COPY_AND_ASSIGN(ElementAnimations); | 281 DISALLOW_COPY_AND_ASSIGN(ElementAnimations); |
| 282 }; | 282 }; |
| 283 | 283 |
| 284 } // namespace cc | 284 } // namespace cc |
| 285 | 285 |
| 286 #endif // CC_ANIMATION_ELEMENT_ANIMATIONS_H_ | 286 #endif // CC_ANIMATION_ELEMENT_ANIMATIONS_H_ |
| OLD | NEW |