Chromium Code Reviews| 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 |