• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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) const10 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 
trace(Visitor * visitor)30 void InterpolationEffect::InterpolationRecord::trace(Visitor* visitor)
31 {
32     visitor->trace(m_interpolation);
33 }
34 
trace(Visitor * visitor)35 void InterpolationEffect::trace(Visitor* visitor)
36 {
37 #if ENABLE_OILPAN
38     visitor->trace(m_interpolations);
39 #endif
40 }
41 
42 }
43