Commit 470df4f9 authored by ikilpatrick's avatar ikilpatrick Committed by Commit bot

CC: Stop TimingFunction inheriting from AnimationCurve.

Simplifies code as TimingFunction has no logical reason to inherit from AnimationCurve (apart from sharing a few method names). Make code more clear.

BUG=

Review URL: https://codereview.chromium.org/606543002

Cr-Commit-Position: refs/heads/master@{#296862}
parent d3538166
......@@ -40,14 +40,6 @@ float GetProgress(double t, size_t i, const Keyframes& keyframes) {
return progress;
}
scoped_ptr<TimingFunction> CloneTimingFunction(
const TimingFunction* timing_function) {
DCHECK(timing_function);
scoped_ptr<AnimationCurve> curve(timing_function->Clone());
return scoped_ptr<TimingFunction>(
static_cast<TimingFunction*>(curve.release()));
}
} // namespace
Keyframe::Keyframe(double time, scoped_ptr<TimingFunction> timing_function)
......@@ -81,7 +73,7 @@ SkColor ColorKeyframe::Value() const { return value_; }
scoped_ptr<ColorKeyframe> ColorKeyframe::Clone() const {
scoped_ptr<TimingFunction> func;
if (timing_function())
func = CloneTimingFunction(timing_function());
func = timing_function()->Clone();
return ColorKeyframe::Create(Time(), Value(), func.Pass());
}
......@@ -108,7 +100,7 @@ float FloatKeyframe::Value() const {
scoped_ptr<FloatKeyframe> FloatKeyframe::Clone() const {
scoped_ptr<TimingFunction> func;
if (timing_function())
func = CloneTimingFunction(timing_function());
func = timing_function()->Clone();
return FloatKeyframe::Create(Time(), Value(), func.Pass());
}
......@@ -135,7 +127,7 @@ const TransformOperations& TransformKeyframe::Value() const {
scoped_ptr<TransformKeyframe> TransformKeyframe::Clone() const {
scoped_ptr<TimingFunction> func;
if (timing_function())
func = CloneTimingFunction(timing_function());
func = timing_function()->Clone();
return TransformKeyframe::Create(Time(), Value(), func.Pass());
}
......@@ -162,7 +154,7 @@ const FilterOperations& FilterKeyframe::Value() const {
scoped_ptr<FilterKeyframe> FilterKeyframe::Clone() const {
scoped_ptr<TimingFunction> func;
if (timing_function())
func = CloneTimingFunction(timing_function());
func = timing_function()->Clone();
return FilterKeyframe::Create(Time(), Value(), func.Pass());
}
......
......@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "cc/animation/timing_function.h"
namespace cc {
......@@ -11,10 +12,6 @@ TimingFunction::TimingFunction() {}
TimingFunction::~TimingFunction() {}
double TimingFunction::Duration() const {
return 1.0;
}
scoped_ptr<CubicBezierTimingFunction> CubicBezierTimingFunction::Create(
double x1, double y1, double x2, double y2) {
return make_scoped_ptr(new CubicBezierTimingFunction(x1, y1, x2, y2));
......@@ -32,9 +29,8 @@ float CubicBezierTimingFunction::GetValue(double x) const {
return static_cast<float>(bezier_.Solve(x));
}
scoped_ptr<AnimationCurve> CubicBezierTimingFunction::Clone() const {
return make_scoped_ptr(
new CubicBezierTimingFunction(*this)).PassAs<AnimationCurve>();
float CubicBezierTimingFunction::Velocity(double x) const {
return static_cast<float>(bezier_.Slope(x));
}
void CubicBezierTimingFunction::Range(float* min, float* max) const {
......@@ -45,8 +41,9 @@ void CubicBezierTimingFunction::Range(float* min, float* max) const {
*max = static_cast<float>(max_d);
}
float CubicBezierTimingFunction::Velocity(double x) const {
return static_cast<float>(bezier_.Slope(x));
scoped_ptr<TimingFunction> CubicBezierTimingFunction::Clone() const {
return make_scoped_ptr(new CubicBezierTimingFunction(*this))
.PassAs<TimingFunction>();
}
// These numbers come from
......
......@@ -5,24 +5,21 @@
#ifndef CC_ANIMATION_TIMING_FUNCTION_H_
#define CC_ANIMATION_TIMING_FUNCTION_H_
#include "cc/animation/animation_curve.h"
#include "cc/base/cc_export.h"
#include "ui/gfx/geometry/cubic_bezier.h"
namespace cc {
// See http://www.w3.org/TR/css3-transitions/.
class CC_EXPORT TimingFunction : public FloatAnimationCurve {
class CC_EXPORT TimingFunction {
public:
virtual ~TimingFunction();
// Partial implementation of FloatAnimationCurve.
virtual double Duration() const OVERRIDE;
// The smallest and largest values returned by GetValue for inputs in
// [0, 1].
virtual void Range(float* min, float* max) const = 0;
virtual float GetValue(double t) const = 0;
virtual float Velocity(double time) const = 0;
// The smallest and largest values returned by GetValue for inputs in [0, 1].
virtual void Range(float* min, float* max) const = 0;
virtual scoped_ptr<TimingFunction> Clone() const = 0;
protected:
TimingFunction();
......@@ -37,12 +34,11 @@ class CC_EXPORT CubicBezierTimingFunction : public TimingFunction {
double x2, double y2);
virtual ~CubicBezierTimingFunction();
// Partial implementation of FloatAnimationCurve.
// TimingFunction implementation.
virtual float GetValue(double time) const OVERRIDE;
virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
virtual void Range(float* min, float* max) const OVERRIDE;
virtual float Velocity(double time) const OVERRIDE;
virtual void Range(float* min, float* max) const OVERRIDE;
virtual scoped_ptr<TimingFunction> Clone() const OVERRIDE;
protected:
CubicBezierTimingFunction(double x1, double y1, double x2, double y2);
......
......@@ -697,7 +697,7 @@ class LayerTreeHostAnimationTestLayerAddedWithAnimation
layer->set_layer_animation_delegate(this);
// Any valid AnimationCurve will do here.
scoped_ptr<AnimationCurve> curve(EaseTimingFunction::Create());
scoped_ptr<AnimationCurve> curve(new FakeFloatAnimationCurve());
scoped_ptr<Animation> animation(
Animation::Create(curve.Pass(), 1, 1,
Animation::Opacity));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment