summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/core/animation/InterpolationEffect.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/animation/InterpolationEffect.h')
-rw-r--r--chromium/third_party/WebKit/Source/core/animation/InterpolationEffect.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/chromium/third_party/WebKit/Source/core/animation/InterpolationEffect.h b/chromium/third_party/WebKit/Source/core/animation/InterpolationEffect.h
new file mode 100644
index 00000000000..c189f86deca
--- /dev/null
+++ b/chromium/third_party/WebKit/Source/core/animation/InterpolationEffect.h
@@ -0,0 +1,66 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef InterpolationEffect_h
+#define InterpolationEffect_h
+
+#include "core/animation/interpolation/Interpolation.h"
+#include "platform/animation/TimingFunction.h"
+#include "wtf/PassOwnPtr.h"
+#include "wtf/RefCounted.h"
+
+namespace WebCore {
+
+class InterpolationEffect : public RefCountedWillBeGarbageCollected<InterpolationEffect> {
+public:
+ static PassRefPtrWillBeRawPtr<InterpolationEffect> create() { return adoptRefWillBeNoop(new InterpolationEffect()); }
+
+ PassOwnPtrWillBeRawPtr<WillBeHeapVector<RefPtrWillBeMember<Interpolation> > > getActiveInterpolations(double fraction, double iterationDuration) const;
+
+ void addInterpolation(PassRefPtrWillBeRawPtr<Interpolation> interpolation, PassRefPtr<TimingFunction> easing, double start, double end, double applyFrom, double applyTo)
+ {
+ m_interpolations.append(InterpolationRecord::create(interpolation, easing, start, end, applyFrom, applyTo));
+ }
+
+ void trace(Visitor*);
+
+private:
+ InterpolationEffect()
+ {
+ }
+
+ class InterpolationRecord : public NoBaseWillBeGarbageCollectedFinalized<InterpolationRecord> {
+ public:
+ RefPtrWillBeMember<Interpolation> m_interpolation;
+ RefPtr<TimingFunction> m_easing;
+ double m_start;
+ double m_end;
+ double m_applyFrom;
+ double m_applyTo;
+
+ static PassOwnPtrWillBeRawPtr<InterpolationRecord> create(PassRefPtrWillBeRawPtr<Interpolation> interpolation, PassRefPtr<TimingFunction> easing, double start, double end, double applyFrom, double applyTo)
+ {
+ return adoptPtrWillBeNoop(new InterpolationRecord(interpolation, easing, start, end, applyFrom, applyTo));
+ }
+
+ void trace(Visitor*);
+
+ private:
+ InterpolationRecord(PassRefPtrWillBeRawPtr<Interpolation> interpolation, PassRefPtr<TimingFunction> easing, double start, double end, double applyFrom, double applyTo)
+ : m_interpolation(interpolation)
+ , m_easing(easing)
+ , m_start(start)
+ , m_end(end)
+ , m_applyFrom(applyFrom)
+ , m_applyTo(applyTo)
+ {
+ }
+ };
+
+ WillBeHeapVector<OwnPtrWillBeMember<InterpolationRecord> > m_interpolations;
+};
+
+}
+
+#endif