// 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() = default; PropertyAnimationState::PropertyAnimationState( const PropertyAnimationState& rhs) = default; PropertyAnimationState::~PropertyAnimationState() = default; 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