OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #include "cc/animation/property_animation_state.h" | 5 #include "cc/animation/property_animation_state.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 | 8 |
9 namespace cc { | 9 namespace cc { |
10 | 10 |
| 11 PropertyAnimationState::PropertyAnimationState() {} |
| 12 |
| 13 PropertyAnimationState::PropertyAnimationState( |
| 14 const PropertyAnimationState& rhs) |
| 15 : currently_running(rhs.currently_running), |
| 16 potentially_animating(rhs.potentially_animating) {} |
| 17 |
| 18 PropertyAnimationState::~PropertyAnimationState() {} |
| 19 |
11 bool PropertyAnimationState::operator==( | 20 bool PropertyAnimationState::operator==( |
12 const PropertyAnimationState& other) const { | 21 const PropertyAnimationState& other) const { |
13 return currently_running_for_active_elements == | 22 return currently_running == other.currently_running && |
14 other.currently_running_for_active_elements && | 23 potentially_animating == other.potentially_animating; |
15 currently_running_for_pending_elements == | |
16 other.currently_running_for_pending_elements && | |
17 potentially_animating_for_active_elements == | |
18 other.potentially_animating_for_active_elements && | |
19 potentially_animating_for_pending_elements == | |
20 other.potentially_animating_for_pending_elements; | |
21 } | 24 } |
22 | 25 |
23 bool PropertyAnimationState::operator!=( | 26 bool PropertyAnimationState::operator!=( |
24 const PropertyAnimationState& other) const { | 27 const PropertyAnimationState& other) const { |
25 return !operator==(other); | 28 return !operator==(other); |
26 } | 29 } |
27 | 30 |
28 PropertyAnimationState& PropertyAnimationState::operator|=( | 31 PropertyAnimationState& PropertyAnimationState::operator|=( |
29 const PropertyAnimationState& other) { | 32 const PropertyAnimationState& other) { |
30 currently_running_for_active_elements |= | 33 currently_running |= other.currently_running; |
31 other.currently_running_for_active_elements; | 34 potentially_animating |= other.potentially_animating; |
32 currently_running_for_pending_elements |= | |
33 other.currently_running_for_pending_elements; | |
34 potentially_animating_for_active_elements |= | |
35 other.potentially_animating_for_active_elements; | |
36 potentially_animating_for_pending_elements |= | |
37 other.potentially_animating_for_pending_elements; | |
38 | 35 |
39 return *this; | 36 return *this; |
40 } | 37 } |
41 | 38 |
42 PropertyAnimationState& PropertyAnimationState::operator^=( | 39 PropertyAnimationState& PropertyAnimationState::operator^=( |
43 const PropertyAnimationState& other) { | 40 const PropertyAnimationState& other) { |
44 currently_running_for_active_elements ^= | 41 currently_running ^= other.currently_running; |
45 other.currently_running_for_active_elements; | 42 potentially_animating ^= other.potentially_animating; |
46 currently_running_for_pending_elements ^= | |
47 other.currently_running_for_pending_elements; | |
48 potentially_animating_for_active_elements ^= | |
49 other.potentially_animating_for_active_elements; | |
50 potentially_animating_for_pending_elements ^= | |
51 other.potentially_animating_for_pending_elements; | |
52 | 43 |
53 return *this; | 44 return *this; |
54 } | 45 } |
| 46 |
| 47 PropertyAnimationState& PropertyAnimationState::operator&=( |
| 48 const PropertyAnimationState& other) { |
| 49 currently_running &= other.currently_running; |
| 50 potentially_animating &= other.potentially_animating; |
| 51 |
| 52 return *this; |
| 53 } |
55 | 54 |
56 PropertyAnimationState operator^(const PropertyAnimationState& lhs, | 55 PropertyAnimationState operator^(const PropertyAnimationState& lhs, |
57 const PropertyAnimationState& rhs) { | 56 const PropertyAnimationState& rhs) { |
58 PropertyAnimationState result = lhs; | 57 PropertyAnimationState result = lhs; |
59 result ^= rhs; | 58 result ^= rhs; |
60 return result; | 59 return result; |
61 } | 60 } |
62 | 61 |
63 bool PropertyAnimationState::IsValid() const { | 62 bool PropertyAnimationState::IsValid() const { |
64 // currently_running must be a subset for potentially_animating. | 63 // currently_running must be a subset for potentially_animating. |
65 // currently <= potentially. | 64 // currently <= potentially i.e. potentially || !currently. |
66 return currently_running_for_active_elements <= | 65 TargetProperties result = potentially_animating | ~currently_running; |
67 potentially_animating_for_active_elements && | 66 return result.all(); |
68 currently_running_for_pending_elements <= | |
69 potentially_animating_for_pending_elements; | |
70 } | 67 } |
71 | 68 |
72 void PropertyAnimationState::Clear() { | 69 void PropertyAnimationState::Clear() { |
73 currently_running_for_active_elements = false; | 70 currently_running.reset(); |
74 currently_running_for_pending_elements = false; | 71 potentially_animating.reset(); |
75 potentially_animating_for_active_elements = false; | |
76 potentially_animating_for_pending_elements = false; | |
77 } | 72 } |
78 | 73 |
79 } // namespace cc | 74 } // namespace cc |
OLD | NEW |