1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// found in the LICENSE file. 4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "config.h" 6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/animation/InterpolationEffect.h" 7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 8c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 1007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben MurdochPassOwnPtrWillBeRawPtr<WillBeHeapVector<RefPtrWillBeMember<Interpolation> > > InterpolationEffect::getActiveInterpolations(double fraction, double iterationDuration) const 11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 1307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch WillBeHeapVector<RefPtrWillBeMember<Interpolation> >* result = new WillBeHeapVector<RefPtrWillBeMember<Interpolation> >(); 14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) for (size_t i = 0; i < m_interpolations.size(); ++i) { 16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) const InterpolationRecord* record = m_interpolations[i].get(); 17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (fraction >= record->m_applyFrom && fraction < record->m_applyTo) { 1807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch RefPtrWillBeRawPtr<Interpolation> interpolation = record->m_interpolation; 19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) double localFraction = (fraction - record->m_start) / (record->m_end - record->m_start); 20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (record->m_easing) 2107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch localFraction = record->m_easing->evaluate(localFraction, accuracyForDuration(iterationDuration)); 22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) interpolation->interpolate(0, localFraction); 23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) result->append(interpolation); 24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 2707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return adoptPtrWillBeNoop(result); 2807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch} 2907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 3007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvoid InterpolationEffect::InterpolationRecord::trace(Visitor* visitor) 3107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch{ 3207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch visitor->trace(m_interpolation); 3307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch} 3407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 3507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvoid InterpolationEffect::trace(Visitor* visitor) 3607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch{ 3707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch#if ENABLE_OILPAN 3807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch visitor->trace(m_interpolations); 3907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch#endif 40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 43