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. 4 5 #ifndef SampledEffect_h 6 #define SampledEffect_h 7 8 #include "core/animation/Animation.h" 9 #include "core/animation/AnimationPlayer.h" 10 #include "core/animation/interpolation/Interpolation.h" 11 #include "wtf/BitArray.h" 12 #include "wtf/Vector.h" 13 14 namespace WebCore { 15 16 class SampledEffect : public NoBaseWillBeGarbageCollected<SampledEffect> { 17 public: 18 static PassOwnPtrWillBeRawPtr<SampledEffect> create(Animation* animation, PassOwnPtrWillBeRawPtr<WillBeHeapVector<RefPtrWillBeMember<Interpolation> > > interpolations) 19 { 20 return adoptPtrWillBeNoop(new SampledEffect(animation, interpolations)); 21 } 22 23 bool canChange() const; 24 void clear(); 25 26 const WillBeHeapVector<RefPtrWillBeMember<Interpolation> >& interpolations() const { return *m_interpolations; } 27 void setInterpolations(PassOwnPtrWillBeRawPtr<WillBeHeapVector<RefPtrWillBeMember<Interpolation> > > interpolations) { m_interpolations = interpolations; } 28 29 Animation* animation() const { return m_animation; } 30 const AnimationPlayer::SortInfo& sortInfo() const { return m_playerSortInfo; } 31 Animation::Priority priority() const { return m_priority; } 32 33 void removeReplacedInterpolationsIfNeeded(const BitArray<numCSSProperties>&); 34 35 void trace(Visitor*); 36 37 private: 38 SampledEffect(Animation*, PassOwnPtrWillBeRawPtr<WillBeHeapVector<RefPtrWillBeMember<Interpolation> > >); 39 40 RawPtrWillBeWeakMember<Animation> m_animation; 41 #if !ENABLE(OILPAN) 42 RefPtr<AnimationPlayer> m_player; 43 #endif 44 OwnPtrWillBeMember<WillBeHeapVector<RefPtrWillBeMember<Interpolation> > > m_interpolations; 45 AnimationPlayer::SortInfo m_playerSortInfo; 46 Animation::Priority m_priority; 47 }; 48 49 } // namespace WebCore 50 51 #endif 52