| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "cc/trees/property_animation_state.h" |
| |
| #include "base/logging.h" |
| |
| namespace cc { |
| |
| PropertyAnimationState::PropertyAnimationState() {} |
| |
| PropertyAnimationState::PropertyAnimationState( |
| const PropertyAnimationState& rhs) |
| : currently_running(rhs.currently_running), |
| potentially_animating(rhs.potentially_animating) {} |
| |
| PropertyAnimationState::~PropertyAnimationState() {} |
| |
| bool PropertyAnimationState::operator==( |
| const PropertyAnimationState& other) const { |
| return currently_running == other.currently_running && |
| potentially_animating == other.potentially_animating; |
| } |
| |
| bool PropertyAnimationState::operator!=( |
| const PropertyAnimationState& other) const { |
| return !operator==(other); |
| } |
| |
| PropertyAnimationState& PropertyAnimationState::operator|=( |
| const PropertyAnimationState& other) { |
| currently_running |= other.currently_running; |
| potentially_animating |= other.potentially_animating; |
| |
| return *this; |
| } |
| |
| PropertyAnimationState& PropertyAnimationState::operator^=( |
| const PropertyAnimationState& other) { |
| currently_running ^= other.currently_running; |
| potentially_animating ^= other.potentially_animating; |
| |
| return *this; |
| } |
| |
| PropertyAnimationState& PropertyAnimationState::operator&=( |
| const PropertyAnimationState& other) { |
| currently_running &= other.currently_running; |
| potentially_animating &= other.potentially_animating; |
| |
| return *this; |
| } |
| |
| PropertyAnimationState operator^(const PropertyAnimationState& lhs, |
| const PropertyAnimationState& rhs) { |
| PropertyAnimationState result = lhs; |
| result ^= rhs; |
| return result; |
| } |
| |
| bool PropertyAnimationState::IsValid() const { |
| // currently_running must be a subset for potentially_animating. |
| // currently <= potentially i.e. potentially || !currently. |
| TargetProperties result = potentially_animating | ~currently_running; |
| return result.all(); |
| } |
| |
| void PropertyAnimationState::Clear() { |
| currently_running.reset(); |
| potentially_animating.reset(); |
| } |
| |
| } // namespace cc |