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

Unified Diff: Source/platform/animation/TimingFunction.h

Issue 149363002: Web Animations API: Implement step-middle and steps(x, middle) timing functions. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Merged patch into fresh branch (to avoid scary rebase) Created 6 years, 10 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
« no previous file with comments | « Source/core/css/resolver/CSSToStyleMap.cpp ('k') | Source/platform/animation/TimingFunction.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/animation/TimingFunction.h
diff --git a/Source/platform/animation/TimingFunction.h b/Source/platform/animation/TimingFunction.h
index c5c6c0620d38ae1f762554604c571b8f5a132474..e384dc5be6deba8b28bc7626503b09ac4f3a1041 100644
--- a/Source/platform/animation/TimingFunction.h
+++ b/Source/platform/animation/TimingFunction.h
@@ -38,7 +38,6 @@
#include "wtf/text/WTFString.h"
#include <algorithm>
-
namespace WebCore {
class PLATFORM_EXPORT TimingFunction : public RefCounted<TimingFunction> {
@@ -56,7 +55,7 @@ public:
// Evaluates the timing function at the given fraction. The accuracy parameter provides a hint as to the required
// accuracy and is not guaranteed.
- virtual double evaluate(double fraction, double accuracy) const =0;
+ virtual double evaluate(double fraction, double accuracy) const = 0;
protected:
TimingFunction(Type type)
@@ -88,9 +87,6 @@ private:
}
};
-// Forward declare so we can friend it below. Don't use in production code!
-class ChainedTimingFunctionTestHelper;
-
class PLATFORM_EXPORT CubicBezierTimingFunction FINAL : public TimingFunction {
public:
enum SubType {
@@ -172,12 +168,19 @@ public:
enum SubType {
Start,
End,
+ Middle,
Custom
};
- static PassRefPtr<StepsTimingFunction> create(int steps, bool stepAtStart)
+ enum StepAtPosition {
+ StepAtStart,
+ StepAtMiddle,
+ StepAtEnd
+ };
+
+ static PassRefPtr<StepsTimingFunction> create(int steps, StepAtPosition stepAtPosition)
{
- return adoptRef(new StepsTimingFunction(Custom, steps, stepAtStart));
+ return adoptRef(new StepsTimingFunction(Custom, steps, stepAtPosition));
}
static StepsTimingFunction* preset(SubType subType)
@@ -185,12 +188,17 @@ public:
switch (subType) {
case Start:
{
- DEFINE_STATIC_REF(StepsTimingFunction, start, (adoptRef(new StepsTimingFunction(Start, 1, true))));
+ DEFINE_STATIC_REF(StepsTimingFunction, start, (adoptRef(new StepsTimingFunction(Start, 1, StepAtStart))));
return start;
}
+ case Middle:
+ {
+ DEFINE_STATIC_REF(StepsTimingFunction, middle, (adoptRef(new StepsTimingFunction(Middle, 1, StepAtMiddle))));
+ return middle;
+ }
case End:
{
- DEFINE_STATIC_REF(StepsTimingFunction, end, (adoptRef(new StepsTimingFunction(End, 1, false))));
+ DEFINE_STATIC_REF(StepsTimingFunction, end, (adoptRef(new StepsTimingFunction(End, 1, StepAtEnd))));
return end;
}
default:
@@ -207,21 +215,21 @@ public:
virtual double evaluate(double fraction, double) const OVERRIDE;
int numberOfSteps() const { return m_steps; }
- bool stepAtStart() const { return m_stepAtStart; }
+ StepAtPosition stepAtPosition() const { return m_stepAtPosition; }
SubType subType() const { return m_subType; }
private:
- StepsTimingFunction(SubType subType, int steps, bool stepAtStart)
+ StepsTimingFunction(SubType subType, int steps, StepAtPosition stepAtPosition)
: TimingFunction(StepsFunction)
, m_steps(steps)
- , m_stepAtStart(stepAtStart)
+ , m_stepAtPosition(stepAtPosition)
, m_subType(subType)
{
}
int m_steps;
- bool m_stepAtStart;
+ StepAtPosition m_stepAtPosition;
SubType m_subType;
};
@@ -275,7 +283,6 @@ private:
// Allow PrintTo/operator== of the segments. Can be removed once
// ChainedTimingFunction has a public API for segments.
- friend class ChainedTimingFunctionTestHelper;
friend class ChainedTimingFunction;
};
@@ -298,6 +305,13 @@ private:
friend class ChainedTimingFunctionTestHelper;
};
+PLATFORM_EXPORT bool operator==(const LinearTimingFunction&, const TimingFunction&);
+PLATFORM_EXPORT bool operator==(const CubicBezierTimingFunction&, const TimingFunction&);
+PLATFORM_EXPORT bool operator==(const StepsTimingFunction&, const TimingFunction&);
+
+PLATFORM_EXPORT bool operator==(const TimingFunction&, const TimingFunction&);
+PLATFORM_EXPORT bool operator!=(const TimingFunction&, const TimingFunction&);
+
#define DEFINE_TIMING_FUNCTION_TYPE_CASTS(typeName) \
DEFINE_TYPE_CASTS( \
typeName##TimingFunction, TimingFunction, value, \
« no previous file with comments | « Source/core/css/resolver/CSSToStyleMap.cpp ('k') | Source/platform/animation/TimingFunction.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698