1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 #include "core/animation/SampledEffect.h"
8 #include "core/animation/StyleInterpolation.h"
12 SampledEffect::SampledEffect(Animation* animation, PassOwnPtrWillBeRawPtr<WillBeHeapVector<RefPtrWillBeMember<Interpolation> > > interpolations)
13 : m_animation(animation)
15 , m_player(animation->player())
17 , m_interpolations(interpolations)
18 , m_playerSortInfo(animation->player()->sortInfo())
19 , m_priority(animation->priority())
21 ASSERT(m_interpolations && !m_interpolations->isEmpty());
24 bool SampledEffect::canChange() const
31 // FIXME: This check won't be needed when Animation and AnimationPlayer are moved to Oilpan.
32 return !m_player->canFree();
36 void SampledEffect::clear()
41 m_animation = nullptr;
42 m_interpolations->clear();
45 void SampledEffect::removeReplacedInterpolationsIfNeeded(const BitArray<numCSSProperties>& replacedProperties)
47 if (canChange() && m_animation->isCurrent())
51 for (size_t i = 0; i < m_interpolations->size(); i++) {
52 if (!replacedProperties.get(toStyleInterpolation(m_interpolations->at(i).get())->id()))
53 m_interpolations->at(dest++) = m_interpolations->at(i);
55 m_interpolations->shrink(dest);
58 void SampledEffect::trace(Visitor* visitor)
60 visitor->trace(m_animation);
62 visitor->trace(m_interpolations);