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

Side by Side 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, 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 19 matching lines...) Expand all
30 30
31 #ifndef Timing_h 31 #ifndef Timing_h
32 #define Timing_h 32 #define Timing_h
33 33
34 #include "platform/animation/TimingFunction.h" 34 #include "platform/animation/TimingFunction.h"
35 #include "wtf/MathExtras.h" 35 #include "wtf/MathExtras.h"
36 #include "wtf/RefPtr.h" 36 #include "wtf/RefPtr.h"
37 37
38 namespace WebCore { 38 namespace WebCore {
39 39
40 class Dictionary;
41
40 struct Timing { 42 struct Timing {
41 enum FillMode { 43 enum FillMode {
42 FillModeAuto, 44 FillModeAuto,
43 FillModeNone, 45 FillModeNone,
44 FillModeForwards, 46 FillModeForwards,
45 FillModeBackwards, 47 FillModeBackwards,
46 FillModeBoth 48 FillModeBoth
47 }; 49 };
48 50
49 enum PlaybackDirection { 51 enum PlaybackDirection {
50 PlaybackDirectionNormal, 52 PlaybackDirectionNormal,
51 PlaybackDirectionReverse, 53 PlaybackDirectionReverse,
52 PlaybackDirectionAlternate, 54 PlaybackDirectionAlternate,
53 PlaybackDirectionAlternateReverse 55 PlaybackDirectionAlternateReverse
54 }; 56 };
55 57
56 Timing() 58 Timing()
57 : startDelay(0) 59 : startDelay(initialStartDelay())
58 , endDelay(0) 60 , endDelay(initialEndDelay())
59 , fillMode(FillModeAuto) 61 , fillMode(initialFillMode())
60 , iterationStart(0) 62 , iterationStart(initialIterationStart())
61 , iterationCount(1) 63 , iterationCount(initialIterationCount())
62 , iterationDuration(std::numeric_limits<double>::quiet_NaN()) 64 , iterationDuration(initialIterationDuration())
63 , playbackRate(1) 65 , playbackRate(initialPlaybackRate())
64 , direction(PlaybackDirectionNormal) 66 , direction(initialDirection())
65 , timingFunction(LinearTimingFunction::create()) 67 , timingFunction(initialTimingFunction())
66 { 68 {
67 } 69 }
68 70
71 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.
72 : startDelay(initialStartDelay())
73 , endDelay(initialEndDelay())
74 , fillMode(initialFillMode())
75 , iterationStart(initialIterationStart())
76 , iterationCount(initialIterationCount())
77 , iterationDuration(duration)
78 , playbackRate(initialPlaybackRate())
79 , direction(initialDirection())
80 , timingFunction(initialTimingFunction())
81 {
82 }
83
84 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.
85 static double initialEndDelay() { return 0; }
86 static FillMode initialFillMode() { return FillModeAuto; }
87 static double initialIterationStart() { return 0; }
88 static double initialIterationCount() { return 1; }
89 static double initialIterationDuration() { return std::numeric_limits<double >::quiet_NaN(); }
90 static double initialPlaybackRate() { return 1; }
91 static PlaybackDirection initialDirection() { return PlaybackDirectionNormal ; }
92 static PassRefPtr<TimingFunction> initialTimingFunction() { return LinearTim ingFunction::create(); }
93
94 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.
95 static Timing convertInput(double duration) { return Timing(std::max<double> (duration, 0)); }
96 static Timing convertInput(Timing timing) { return timing; }
97
98 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.
99 void setEndDelay(double);
100 void setFillMode(const String&);
101 void setIterationStart(double);
102 void setIterationCount(double);
103 void setIterationDuration(double);
104 void setPlaybackRate(double);
105 void setPlaybackDirection(const String&);
106 void setTimingFunction(const String&);
107
69 void assertValid() const 108 void assertValid() const
70 { 109 {
71 ASSERT(std::isfinite(startDelay)); 110 ASSERT(std::isfinite(startDelay));
72 ASSERT(std::isfinite(endDelay)); 111 ASSERT(std::isfinite(endDelay));
73 ASSERT(std::isfinite(iterationStart)); 112 ASSERT(std::isfinite(iterationStart));
74 ASSERT(iterationStart >= 0); 113 ASSERT(iterationStart >= 0);
75 ASSERT(iterationCount >= 0); 114 ASSERT(iterationCount >= 0);
76 ASSERT(std::isnan(iterationDuration) || iterationDuration >= 0); 115 ASSERT(std::isnan(iterationDuration) || iterationDuration >= 0);
77 ASSERT(std::isfinite(playbackRate)); 116 ASSERT(std::isfinite(playbackRate));
78 ASSERT(timingFunction); 117 ASSERT(timingFunction);
79 } 118 }
80 119
81 double startDelay; 120 double startDelay;
82 double endDelay; 121 double endDelay;
83 FillMode fillMode; 122 FillMode fillMode;
84 double iterationStart; 123 double iterationStart;
85 double iterationCount; 124 double iterationCount;
86 double iterationDuration; 125 double iterationDuration;
87 // FIXME: Add activeDuration. 126 // FIXME: Add activeDuration.
88 double playbackRate; 127 double playbackRate;
89 PlaybackDirection direction; 128 PlaybackDirection direction;
90 RefPtr<TimingFunction> timingFunction; 129 RefPtr<TimingFunction> timingFunction;
91 }; 130 };
92 131
93 } // namespace WebCore 132 } // namespace WebCore
94 133
95 #endif 134 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698