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

Unified Diff: Source/core/animation/Timing.h

Issue 182063005: Web Animations API: Refactor IDL input conversion out of Animation (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Move timing input conversion from Animation into Timing 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
Index: Source/core/animation/Timing.h
diff --git a/Source/core/animation/Timing.h b/Source/core/animation/Timing.h
index fb2ef0921f2734ae3e161425a2b8be825c6db7e0..d7a318368b8bdea7557774559ff47411804b28a5 100644
--- a/Source/core/animation/Timing.h
+++ b/Source/core/animation/Timing.h
@@ -37,6 +37,8 @@
namespace WebCore {
+class Dictionary;
+
struct Timing {
enum FillMode {
FillModeAuto,
@@ -54,18 +56,55 @@ struct Timing {
};
Timing()
- : startDelay(0)
- , endDelay(0)
- , fillMode(FillModeAuto)
- , iterationStart(0)
- , iterationCount(1)
- , iterationDuration(std::numeric_limits<double>::quiet_NaN())
- , playbackRate(1)
- , direction(PlaybackDirectionNormal)
- , timingFunction(LinearTimingFunction::create())
+ : startDelay(initialStartDelay())
+ , endDelay(initialEndDelay())
+ , fillMode(initialFillMode())
+ , iterationStart(initialIterationStart())
+ , iterationCount(initialIterationCount())
+ , iterationDuration(initialIterationDuration())
+ , playbackRate(initialPlaybackRate())
+ , direction(initialDirection())
+ , timingFunction(initialTimingFunction())
+ {
+ }
+
+ Timing(double duration)
Timothy Loh 2014/02/28 00:55:24 I wouldn't add an extra ctor here, just call the r
esprehn 2014/02/28 00:57:16 explicit
alancutter (OOO until 2018) 2014/03/03 05:09:45 Done.
+ : startDelay(initialStartDelay())
+ , endDelay(initialEndDelay())
+ , fillMode(initialFillMode())
+ , iterationStart(initialIterationStart())
+ , iterationCount(initialIterationCount())
+ , iterationDuration(duration)
+ , playbackRate(initialPlaybackRate())
+ , direction(initialDirection())
+ , timingFunction(initialTimingFunction())
{
}
+ static double initialStartDelay() { return 0; }
Timothy Loh 2014/02/28 00:55:24 Check with dstockwell here since he does a similar
dstockwell 2014/02/28 00:56:37 I'd rather keep these in the constructor and expos
alancutter (OOO until 2018) 2014/03/03 05:09:45 Done.
+ static double initialEndDelay() { return 0; }
+ static FillMode initialFillMode() { return FillModeAuto; }
+ static double initialIterationStart() { return 0; }
+ static double initialIterationCount() { return 1; }
+ static double initialIterationDuration() { return std::numeric_limits<double>::quiet_NaN(); }
+ static double initialPlaybackRate() { return 1; }
+ static PlaybackDirection initialDirection() { return PlaybackDirectionNormal; }
+ static PassRefPtr<TimingFunction> initialTimingFunction() { return LinearTimingFunction::create(); }
+
+ static Timing convertInput(const Dictionary& timingInputDictionary);
dstockwell 2014/02/28 00:56:37 Timing doesn't need to know anything about input.
alancutter (OOO until 2018) 2014/03/03 05:09:45 Done.
+ static Timing convertInput(double duration) { return Timing(std::max<double>(duration, 0)); }
+ static Timing convertInput(Timing timing) { return timing; }
+
+ void setStartDelay(double);
dstockwell 2014/02/28 00:56:37 These also belong in TimingInput, it's never valid
alancutter (OOO until 2018) 2014/03/03 05:09:45 Done.
+ void setEndDelay(double);
+ void setFillMode(const String&);
+ void setIterationStart(double);
+ void setIterationCount(double);
+ void setIterationDuration(double);
+ void setPlaybackRate(double);
+ void setPlaybackDirection(const String&);
+ void setTimingFunction(const String&);
+
void assertValid() const
{
ASSERT(std::isfinite(startDelay));

Powered by Google App Engine
This is Rietveld 408576698