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 #include "config.h" 6 #include "core/animation/InterpolationEffect.h" 7 8 namespace blink { 9 getActiveInterpolations(double fraction,double iterationDuration) const10PassOwnPtrWillBeRawPtr<WillBeHeapVector<RefPtrWillBeMember<Interpolation> > > InterpolationEffect::getActiveInterpolations(double fraction, double iterationDuration) const 11 { 12 13 WillBeHeapVector<RefPtrWillBeMember<Interpolation> >* result = new WillBeHeapVector<RefPtrWillBeMember<Interpolation> >(); 14 15 for (size_t i = 0; i < m_interpolations.size(); ++i) { 16 const InterpolationRecord* record = m_interpolations[i].get(); 17 if (fraction >= record->m_applyFrom && fraction < record->m_applyTo) { 18 RefPtrWillBeRawPtr<Interpolation> interpolation = record->m_interpolation; 19 double localFraction = (fraction - record->m_start) / (record->m_end - record->m_start); 20 if (record->m_easing) 21 localFraction = record->m_easing->evaluate(localFraction, accuracyForDuration(iterationDuration)); 22 interpolation->interpolate(0, localFraction); 23 result->append(interpolation); 24 } 25 } 26 27 return adoptPtrWillBeNoop(result); 28 } 29 trace(Visitor * visitor)30void InterpolationEffect::InterpolationRecord::trace(Visitor* visitor) 31 { 32 visitor->trace(m_interpolation); 33 } 34 trace(Visitor * visitor)35void InterpolationEffect::trace(Visitor* visitor) 36 { 37 #if ENABLE_OILPAN 38 visitor->trace(m_interpolations); 39 #endif 40 } 41 42 } 43