OLD | NEW |
---|---|
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 Loading... | |
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 |
OLD | NEW |