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

Unified Diff: third_party/WebKit/Source/core/animation/PrimitiveInterpolation.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/PrimitiveInterpolation.h
diff --git a/third_party/WebKit/Source/core/animation/PrimitiveInterpolation.h b/third_party/WebKit/Source/core/animation/PrimitiveInterpolation.h
index 5a74b4be30e4e3ff4ad41752785bbcb3317b5935..76951c1ddb5cdeede1e23c2edc79679a441471f5 100644
--- a/third_party/WebKit/Source/core/animation/PrimitiveInterpolation.h
+++ b/third_party/WebKit/Source/core/animation/PrimitiveInterpolation.h
@@ -5,6 +5,7 @@
#ifndef PrimitiveInterpolation_h
#define PrimitiveInterpolation_h
+#include "core/animation/PairwiseInterpolationValue.h"
#include "core/animation/TypedInterpolationValue.h"
#include "platform/animation/AnimationUtilities.h"
#include "platform/heap/Handle.h"
@@ -38,43 +39,39 @@ class PairwisePrimitiveInterpolation : public PrimitiveInterpolation {
public:
~PairwisePrimitiveInterpolation() override { }
- static std::unique_ptr<PairwisePrimitiveInterpolation> create(const InterpolationType& type, std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end, PassRefPtr<NonInterpolableValue> nonInterpolableValue)
+ static std::unique_ptr<PairwisePrimitiveInterpolation> create(const InterpolationType& type, PairwiseInterpolationValue&& pairwiseInterpolationValue)
{
- return wrapUnique(new PairwisePrimitiveInterpolation(type, std::move(start), std::move(end), nonInterpolableValue));
+ return wrapUnique(new PairwisePrimitiveInterpolation(type, std::move(pairwiseInterpolationValue)));
}
const InterpolationType& type() const { return m_type; }
std::unique_ptr<TypedInterpolationValue> initialValue() const
{
- return TypedInterpolationValue::create(m_type, m_start->clone(), m_nonInterpolableValue);
+ return TypedInterpolationValue::create(m_type, InterpolationValue(m_pairwise.startInterpolableValue->clone(), m_pairwise.nonInterpolableValue));
}
-private:
- PairwisePrimitiveInterpolation(const InterpolationType& type, std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end, PassRefPtr<NonInterpolableValue> nonInterpolableValue)
- : m_type(type)
- , m_start(std::move(start))
- , m_end(std::move(end))
- , m_nonInterpolableValue(nonInterpolableValue)
+ void interpolateValue(double fraction, std::unique_ptr<TypedInterpolationValue>& result) const final
{
- ASSERT(m_start);
- ASSERT(m_end);
+ DCHECK(result);
+ DCHECK(&result->type() == &m_type);
+ DCHECK(result->getNonInterpolableValue() == m_pairwise.nonInterpolableValue.get());
+ m_pairwise.startInterpolableValue->interpolate(
+ *m_pairwise.endInterpolableValue, fraction, *result->mutableValue().interpolableValue);
}
- void interpolateValue(double fraction, std::unique_ptr<TypedInterpolationValue>& result) const final
+private:
+ PairwisePrimitiveInterpolation(const InterpolationType& type, PairwiseInterpolationValue&& pairwiseInterpolationValue)
+ : m_type(type)
+ , m_pairwise(std::move(pairwiseInterpolationValue))
{
- ASSERT(result);
- ASSERT(&result->type() == &m_type);
- ASSERT(result->getNonInterpolableValue() == m_nonInterpolableValue.get());
- m_start->interpolate(*m_end, fraction, *result->mutableValue().interpolableValue);
+ DCHECK(m_pairwise);
}
double interpolateUnderlyingFraction(double start, double end, double fraction) const final { return blend(start, end, fraction); }
const InterpolationType& m_type;
- std::unique_ptr<InterpolableValue> m_start;
- std::unique_ptr<InterpolableValue> m_end;
- RefPtr<NonInterpolableValue> m_nonInterpolableValue;
+ PairwiseInterpolationValue m_pairwise;
};
// Represents a pair of incompatible keyframes that fall back to 50% flip behaviour eg. "auto" and "0px".

Powered by Google App Engine
This is Rietveld 408576698