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

Unified Diff: third_party/WebKit/Source/platform/animation/TimingFunction.cpp

Issue 2775143002: Implement frames() timing function (Closed)
Patch Set: Created 3 years, 9 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/platform/animation/TimingFunction.cpp
diff --git a/third_party/WebKit/Source/platform/animation/TimingFunction.cpp b/third_party/WebKit/Source/platform/animation/TimingFunction.cpp
index 5749dbc5ea1e48a37b98b90ad695237e2c678a7b..9a5a0d6a49266847a0c769d1356ad278a5646611 100644
--- a/third_party/WebKit/Source/platform/animation/TimingFunction.cpp
+++ b/third_party/WebKit/Source/platform/animation/TimingFunction.cpp
@@ -108,6 +108,27 @@ std::unique_ptr<cc::TimingFunction> StepsTimingFunction::cloneToCC() const {
return m_steps->Clone();
}
+String FramesTimingFunction::toString() const {
+ StringBuilder builder;
+ builder.append("frames(");
+ builder.append(String::numberToStringECMAScript(this->numberOfFrames()));
+ builder.append(")");
+ return builder.toString();
+}
+
+void FramesTimingFunction::range(double* minValue, double* maxValue) const {
+ *minValue = 0;
+ *maxValue = 1;
+}
+
+double FramesTimingFunction::evaluate(double fraction, double) const {
+ return m_frames->GetPreciseValue(fraction);
+}
+
+std::unique_ptr<cc::TimingFunction> FramesTimingFunction::cloneToCC() const {
+ return m_frames->Clone();
+}
+
PassRefPtr<TimingFunction> createCompositorTimingFunctionFromCC(
const cc::TimingFunction* timingFunction) {
if (!timingFunction)
@@ -168,6 +189,14 @@ bool operator==(const StepsTimingFunction& lhs, const TimingFunction& rhs) {
(lhs.getStepPosition() == stf.getStepPosition());
}
+bool operator==(const FramesTimingFunction& lhs, const TimingFunction& rhs) {
+ if (rhs.getType() != TimingFunction::Type::FRAMES)
+ return false;
+
+ const FramesTimingFunction& stf = toFramesTimingFunction(rhs);
+ return lhs.numberOfFrames() == stf.numberOfFrames();
+}
+
// The generic operator== *must* come after the
// non-generic operator== otherwise it will end up calling itself.
bool operator==(const TimingFunction& lhs, const TimingFunction& rhs) {
@@ -184,6 +213,10 @@ bool operator==(const TimingFunction& lhs, const TimingFunction& rhs) {
const StepsTimingFunction& step = toStepsTimingFunction(lhs);
return (step == rhs);
}
+ case TimingFunction::Type::FRAMES: {
+ const FramesTimingFunction& frame = toFramesTimingFunction(lhs);
+ return (frame == rhs);
+ }
default:
ASSERT_NOT_REACHED();
}

Powered by Google App Engine
This is Rietveld 408576698