// Copyright 2014 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 "sky/engine/core/animation/SampledEffect.h" #include "sky/engine/core/animation/StyleInterpolation.h" namespace blink { SampledEffect::SampledEffect(Animation* animation, PassOwnPtr > > interpolations) : m_animation(animation) #if !ENABLE(OILPAN) , m_player(animation->player()) #endif , m_interpolations(interpolations) , m_sequenceNumber(animation->player()->sequenceNumber()) , m_priority(animation->priority()) { ASSERT(m_interpolations && !m_interpolations->isEmpty()); } bool SampledEffect::canChange() const { #if ENABLE(OILPAN) return m_animation; #else if (!m_animation) return false; // FIXME: This check won't be needed when Animation and AnimationPlayer are moved to Oilpan. return !m_player->canFree(); #endif } void SampledEffect::clear() { #if !ENABLE(OILPAN) m_player = nullptr; #endif m_animation = nullptr; m_interpolations->clear(); } void SampledEffect::removeReplacedInterpolationsIfNeeded(const BitArray& replacedProperties) { if (canChange() && m_animation->isCurrent()) return; size_t dest = 0; for (size_t i = 0; i < m_interpolations->size(); i++) { if (!replacedProperties.get(toStyleInterpolation(m_interpolations->at(i).get())->id())) m_interpolations->at(dest++) = m_interpolations->at(i); } m_interpolations->shrink(dest); } } // namespace blink