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

Side by Side Diff: Source/core/animation/TimingInput.cpp

Issue 947923002: Add AnimationTimingProperties dictionary (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/animation/TimingInput.h" 6 #include "core/animation/TimingInput.h"
7 7
8 #include "bindings/core/v8/Dictionary.h"
9 #include "core/animation/AnimationInputHelpers.h" 8 #include "core/animation/AnimationInputHelpers.h"
9 #include "core/animation/AnimationTimingProperties.h"
10 10
11 namespace blink { 11 namespace blink {
12 12
13 void TimingInput::setStartDelay(Timing& timing, double startDelay) 13 void TimingInput::setStartDelay(Timing& timing, double startDelay)
14 { 14 {
15 if (std::isfinite(startDelay)) 15 if (std::isfinite(startDelay))
16 timing.startDelay = startDelay / 1000; 16 timing.startDelay = startDelay / 1000;
17 else 17 else
18 timing.startDelay = Timing::defaults().startDelay; 18 timing.startDelay = Timing::defaults().startDelay;
19 } 19 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 } 87 }
88 88
89 void TimingInput::setTimingFunction(Timing& timing, const String& timingFunction String) 89 void TimingInput::setTimingFunction(Timing& timing, const String& timingFunction String)
90 { 90 {
91 if (RefPtr<TimingFunction> timingFunction = AnimationInputHelpers::parseTimi ngFunction(timingFunctionString)) 91 if (RefPtr<TimingFunction> timingFunction = AnimationInputHelpers::parseTimi ngFunction(timingFunctionString))
92 timing.timingFunction = timingFunction; 92 timing.timingFunction = timingFunction;
93 else 93 else
94 timing.timingFunction = Timing::defaults().timingFunction; 94 timing.timingFunction = Timing::defaults().timingFunction;
95 } 95 }
96 96
97 Timing TimingInput::convert(const Dictionary& timingInputDictionary) 97 Timing TimingInput::convert(const AnimationTimingProperties& timingInput)
98 { 98 {
99 Timing result; 99 Timing result;
100 100
101 // FIXME: This method needs to be refactored to handle invalid 101 setStartDelay(result, timingInput.delay());
102 // null, NaN, Infinity values better. 102 setEndDelay(result, timingInput.endDelay());
103 // See: http://www.w3.org/TR/WebIDL/#es-double 103 setFillMode(result, timingInput.fill());
104 double startDelay = Timing::defaults().startDelay; 104 setIterationStart(result, timingInput.iterationStart());
105 DictionaryHelper::get(timingInputDictionary, "delay", startDelay); 105 setIterationCount(result, timingInput.iterations());
106 setStartDelay(result, startDelay); 106 if (timingInput.duration().isUnrestrictedDouble())
107 107 setIterationDuration(result, timingInput.duration().getAsUnrestrictedDou ble());
108 double endDelay = Timing::defaults().endDelay; 108 else
109 DictionaryHelper::get(timingInputDictionary, "endDelay", endDelay); 109 setIterationDuration(result, -1);
110 setEndDelay(result, endDelay); 110 setPlaybackRate(result, timingInput.playbackRate());
111 111 setPlaybackDirection(result, timingInput.direction());
112 String fillMode; 112 setTimingFunction(result, timingInput.easing());
113 DictionaryHelper::get(timingInputDictionary, "fill", fillMode);
114 setFillMode(result, fillMode);
115
116 double iterationStart = Timing::defaults().iterationStart;
117 DictionaryHelper::get(timingInputDictionary, "iterationStart", iterationStar t);
118 setIterationStart(result, iterationStart);
119
120 double iterationCount = Timing::defaults().iterationCount;
121 DictionaryHelper::get(timingInputDictionary, "iterations", iterationCount);
122 setIterationCount(result, iterationCount);
123
124 double iterationDuration = 0;
125 if (DictionaryHelper::get(timingInputDictionary, "duration", iterationDurati on)) {
126 setIterationDuration(result, iterationDuration);
127 }
128
129 double playbackRate = Timing::defaults().playbackRate;
130 DictionaryHelper::get(timingInputDictionary, "playbackRate", playbackRate);
131 setPlaybackRate(result, playbackRate);
132
133 String direction;
134 DictionaryHelper::get(timingInputDictionary, "direction", direction);
135 setPlaybackDirection(result, direction);
136
137 String timingFunctionString;
138 DictionaryHelper::get(timingInputDictionary, "easing", timingFunctionString) ;
139 setTimingFunction(result, timingFunctionString);
140 113
141 result.assertValid(); 114 result.assertValid();
142 115
143 return result; 116 return result;
144 } 117 }
145 118
146 Timing TimingInput::convert(double duration) 119 Timing TimingInput::convert(double duration)
147 { 120 {
148 Timing result; 121 Timing result;
149 setIterationDuration(result, duration); 122 setIterationDuration(result, duration);
150 return result; 123 return result;
151 } 124 }
152 125
153 } // namespace blink 126 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698