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

Unified Diff: Source/core/animation/CompositorAnimations.cpp

Issue 768653002: Revert "Animations: Pass animation timing function through to compositor." (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month 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: Source/core/animation/CompositorAnimations.cpp
diff --git a/Source/core/animation/CompositorAnimations.cpp b/Source/core/animation/CompositorAnimations.cpp
index a5f0b357727986f6f4f819f1f9d62939ac71de25..c8ef3c372b033fae62cba48ddede5cd149878abd 100644
--- a/Source/core/animation/CompositorAnimations.cpp
+++ b/Source/core/animation/CompositorAnimations.cpp
@@ -178,23 +178,15 @@ bool CompositorAnimations::isCandidateForAnimationOnCompositor(const Timing& tim
if (!CompositorAnimationsImpl::convertTimingForCompositor(timing, 0, out, playerPlaybackRate))
return false;
- if (timing.timingFunction->type() == TimingFunction::StepsFunction) {
- // FIXME: Support step timing functions in the compositor.
- return false;
- }
-
- if (timing.timingFunction->type() == TimingFunction::CubicBezierFunction) {
- // FIXME: Fix compositor timing functions to accept inputs outside of
- // [0,1].
- const CubicBezierTimingFunction& cubic = toCubicBezierTimingFunction(*timing.timingFunction);
+ if (timing.timingFunction->type() != TimingFunction::LinearFunction) {
+ // Checks the of size of KeyframeVector instead of PropertySpecificKeyframeVector.
const KeyframeVector& keyframes = keyframeEffect.getFrames();
- double startRange;
- double endRange;
- cubic.range(&startRange, &endRange);
+ if (keyframes.size() == 2 && keyframes.first()->easing().type() == TimingFunction::LinearFunction && timing.timingFunction->type() != TimingFunction::StepsFunction)
+ return true;
- ASSERT(keyframes.size() >= 2);
- if ((startRange < 0 || endRange > 1) && (keyframes.first()->easing().type() != TimingFunction::LinearFunction || keyframes[keyframes.size()-2]->easing().type() != TimingFunction::LinearFunction))
- return false;
+ // FIXME: Support non-linear timing functions in the compositor for
+ // more than two keyframes and step timing functions in the compositor.
+ return false;
}
return true;
@@ -344,27 +336,6 @@ void addKeyframeWithTimingFunction(PlatformAnimationCurveType& curve, const Plat
}
}
-template <typename PlatformAnimationCurveType>
-void setTimingFunctionOnCurve(PlatformAnimationCurveType& curve, const Timing& timing)
-{
- switch (timing.timingFunction->type()) {
- case TimingFunction::LinearFunction:
- curve.setTimingFunction(WebCompositorAnimationCurve::TimingFunctionTypeLinear);
- return;
-
- case TimingFunction::CubicBezierFunction: {
- const CubicBezierTimingFunction& cubic = toCubicBezierTimingFunction(*timing.timingFunction);
- curve.setTimingFunction(cubic.x1(), cubic.y1(), cubic.x2(), cubic.y2());
- return;
- }
-
- case TimingFunction::StepsFunction:
- default:
- ASSERT_NOT_REACHED();
- return;
- }
-}
-
} // namespace anoymous
void CompositorAnimationsImpl::addKeyframesToCurve(WebCompositorAnimationCurve& curve, const PropertySpecificKeyframeVector& keyframes, const Timing& timing)
@@ -373,7 +344,10 @@ void CompositorAnimationsImpl::addKeyframesToCurve(WebCompositorAnimationCurve&
for (const auto& keyframe : keyframes) {
const TimingFunction* keyframeTimingFunction = 0;
if (keyframe != lastKeyframe) { // Ignore timing function of last frame.
- keyframeTimingFunction = &keyframe->easing();
+ if (keyframes.size() == 2 && keyframes.first()->easing().type() == TimingFunction::LinearFunction)
+ keyframeTimingFunction = timing.timingFunction.get();
+ else
+ keyframeTimingFunction = &keyframe->easing();
}
// FIXME: This relies on StringKeyframes being eagerly evaluated, which will
@@ -433,7 +407,6 @@ void CompositorAnimationsImpl::getAnimationOnCompositor(const Timing& timing, do
WebFloatAnimationCurve* floatCurve = Platform::current()->compositorSupport()->createFloatAnimationCurve();
addKeyframesToCurve(*floatCurve, values, timing);
- setTimingFunctionOnCurve(*floatCurve, timing);
curve = adoptPtr(floatCurve);
break;
}
@@ -441,7 +414,6 @@ void CompositorAnimationsImpl::getAnimationOnCompositor(const Timing& timing, do
targetProperty = WebCompositorAnimation::TargetPropertyFilter;
WebFilterAnimationCurve* filterCurve = Platform::current()->compositorSupport()->createFilterAnimationCurve();
addKeyframesToCurve(*filterCurve, values, timing);
- setTimingFunctionOnCurve(*filterCurve, timing);
curve = adoptPtr(filterCurve);
break;
}
@@ -449,7 +421,6 @@ void CompositorAnimationsImpl::getAnimationOnCompositor(const Timing& timing, do
targetProperty = WebCompositorAnimation::TargetPropertyTransform;
WebTransformAnimationCurve* transformCurve = Platform::current()->compositorSupport()->createTransformAnimationCurve();
addKeyframesToCurve(*transformCurve, values, timing);
- setTimingFunctionOnCurve(*transformCurve, timing);
curve = adoptPtr(transformCurve);
break;
}
« no previous file with comments | « ManualTests/animation/compositor-animation-cubic.html ('k') | Source/core/animation/CompositorAnimationsTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698