Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(523)

Unified Diff: third_party/WebKit/Source/core/animation/TransitionEffectModel.h

Issue 2236193002: WIP: Implement CSS transitions on top of InterpolationTypes instead of AnimatableValues (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@_environmentStyle
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/animation/TransitionEffectModel.h
diff --git a/third_party/WebKit/Source/core/animation/TransitionEffectModel.h b/third_party/WebKit/Source/core/animation/TransitionEffectModel.h
new file mode 100644
index 0000000000000000000000000000000000000000..d19874b4d1d07c1b17aca3001202ecf582e0488c
--- /dev/null
+++ b/third_party/WebKit/Source/core/animation/TransitionEffectModel.h
@@ -0,0 +1,63 @@
+// Copyright 2016 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 TransitionEffectModel_h
+#define TransitionEffectModel_h
+
+#include "core/animation/EffectModel.h"
+#include "core/animation/PairwiseInterpolation.h"
+#include "platform/animation/TimingFunction.h"
+
+namespace blink {
+
+class Element;
+class TransitionEffectModelTest;
+
+class TransitionEffectModel : public EffectModel {
+public:
+ static TransitionEffectModel* create(PassRefPtr<PairwiseInterpolation> pairwiseInterpolation, double delayOffset, PassRefPtr<TimingFunction> timingFunction)
+ {
+ return new TransitionEffectModel(pairwiseInterpolation, delayOffset, timingFunction);
+ }
+
+private:
+ TransitionEffectModel(PassRefPtr<PairwiseInterpolation> pairwiseInterpolation, double delayOffset, PassRefPtr<TimingFunction> timingFunction)
+ : m_interpolation(pairwiseInterpolation)
+ , m_delayOffset(delayOffset)
+ , m_timingFunction(timingFunction)
+ {
+ DCHECK(delayOffset >= 0 && delayOffset < 1);
+ }
+
+ bool affects(PropertyHandle property) const final
+ {
+ return m_interpolation->getProperty() == property;
+ }
+
+ bool isTransitionEffectModel() const final { return true; }
+
+ void sampleImpl(int iteration, double fraction, double iterationDuration, Vector<RefPtr<Interpolation>>& result) const final
+ {
+ double delayedFraction = 0;
+ if (fraction > m_delayOffset) {
+ delayedFraction = (fraction - m_delayOffset) / (1 - m_delayOffset);
+ }
+ delayedFraction = m_timingFunction->evaluate(delayedFraction, iterationDuration);
+ m_interpolation->interpolate(0, delayedFraction);
+ if (result.isEmpty()) {
+ result.append(m_interpolation);
+ } else {
+ result[0] = m_interpolation;
+ result.shrink(1);
+ }
+ }
+
+ const RefPtr<PairwiseInterpolation> m_interpolation;
+ const double m_delayOffset;
+ RefPtr<TimingFunction> m_timingFunction;
+};
+
+} // namespace blink
+
+#endif // TransitionEffectModel_h

Powered by Google App Engine
This is Rietveld 408576698