Index: cc/animation/timing_function.cc |
diff --git a/cc/animation/timing_function.cc b/cc/animation/timing_function.cc |
index e33943cbdf711e1d81a3d078e93cd17ca05fc4d7..23f75d517c826d6f8acebcdf52dbc45843230b5b 100644 |
--- a/cc/animation/timing_function.cc |
+++ b/cc/animation/timing_function.cc |
@@ -20,32 +20,41 @@ std::unique_ptr<TimingFunction> CubicBezierTimingFunction::CreatePreset( |
EaseType ease_type) { |
switch (ease_type) { |
case EaseType::EASE: |
- return EaseTimingFunction::Create(); |
+ return base::WrapUnique( |
+ new CubicBezierTimingFunction(EaseType::EASE, 0.25, 0.1, 0.25, 1.0)); |
case EaseType::EASE_IN: |
- return EaseInTimingFunction::Create(); |
+ return base::WrapUnique(new CubicBezierTimingFunction( |
+ EaseType::EASE_IN, 0.42, 0.0, 1.0, 1.0)); |
case EaseType::EASE_OUT: |
- return EaseOutTimingFunction::Create(); |
+ return base::WrapUnique(new CubicBezierTimingFunction( |
+ EaseType::EASE_OUT, 0.0, 0.0, 0.58, 1.0)); |
case EaseType::EASE_IN_OUT: |
- return EaseInOutTimingFunction::Create(); |
+ return base::WrapUnique(new CubicBezierTimingFunction( |
+ EaseType::EASE_IN_OUT, 0.42, 0.0, 0.58, 1)); |
default: |
NOTREACHED(); |
return nullptr; |
} |
} |
- |
std::unique_ptr<CubicBezierTimingFunction> |
CubicBezierTimingFunction::Create(double x1, double y1, double x2, double y2) { |
- return base::WrapUnique(new CubicBezierTimingFunction(x1, y1, x2, y2)); |
+ return base::WrapUnique( |
+ new CubicBezierTimingFunction(EaseType::CUSTOM, x1, y1, x2, y2)); |
} |
-CubicBezierTimingFunction::CubicBezierTimingFunction(double x1, |
+CubicBezierTimingFunction::CubicBezierTimingFunction(EaseType ease_type, |
+ double x1, |
double y1, |
double x2, |
double y2) |
- : bezier_(x1, y1, x2, y2) {} |
+ : bezier_(x1, y1, x2, y2), ease_type_(ease_type) {} |
CubicBezierTimingFunction::~CubicBezierTimingFunction() {} |
+TimingFunction::Type CubicBezierTimingFunction::GetType() const { |
+ return Type::CUBIC_BEZIER; |
+} |
+ |
float CubicBezierTimingFunction::GetValue(double x) const { |
return static_cast<float>(bezier_.Solve(x)); |
} |
@@ -66,19 +75,23 @@ std::unique_ptr<TimingFunction> CubicBezierTimingFunction::Clone() const { |
// These numbers come from |
// http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag. |
std::unique_ptr<TimingFunction> EaseTimingFunction::Create() { |
- return CubicBezierTimingFunction::Create(0.25, 0.1, 0.25, 1.0); |
+ return CubicBezierTimingFunction::CreatePreset( |
+ CubicBezierTimingFunction::EaseType::EASE); |
} |
std::unique_ptr<TimingFunction> EaseInTimingFunction::Create() { |
- return CubicBezierTimingFunction::Create(0.42, 0.0, 1.0, 1.0); |
+ return CubicBezierTimingFunction::CreatePreset( |
+ CubicBezierTimingFunction::EaseType::EASE_IN); |
} |
std::unique_ptr<TimingFunction> EaseOutTimingFunction::Create() { |
- return CubicBezierTimingFunction::Create(0.0, 0.0, 0.58, 1.0); |
+ return CubicBezierTimingFunction::CreatePreset( |
+ CubicBezierTimingFunction::EaseType::EASE_OUT); |
} |
std::unique_ptr<TimingFunction> EaseInOutTimingFunction::Create() { |
- return CubicBezierTimingFunction::Create(0.42, 0.0, 0.58, 1); |
+ return CubicBezierTimingFunction::CreatePreset( |
+ CubicBezierTimingFunction::EaseType::EASE_IN_OUT); |
} |
std::unique_ptr<StepsTimingFunction> StepsTimingFunction::Create( |
@@ -105,6 +118,10 @@ StepsTimingFunction::StepsTimingFunction(int steps, StepPosition step_position) |
StepsTimingFunction::~StepsTimingFunction() { |
} |
+TimingFunction::Type StepsTimingFunction::GetType() const { |
+ return Type::STEPS; |
+} |
+ |
float StepsTimingFunction::GetValue(double t) const { |
const double steps = static_cast<double>(steps_); |
const double value = MathUtil::ClampToRange( |