Home | History | Annotate | Download | only in animation
      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 WebCore {
      9 
     10 PassOwnPtrWillBeRawPtr<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 
     30 void InterpolationEffect::InterpolationRecord::trace(Visitor* visitor)
     31 {
     32     visitor->trace(m_interpolation);
     33 }
     34 
     35 void InterpolationEffect::trace(Visitor* visitor)
     36 {
     37 #if ENABLE_OILPAN
     38     visitor->trace(m_interpolations);
     39 #endif
     40 }
     41 
     42 }
     43