Rename rendering/RenderFileUploadControl to layout/LayoutFileUploadControl.
[chromium-blink-merge.git] / third_party / WebKit / Source / core / animation / AnimationNodeTiming.cpp
blob07624e869ad207df05a6318f3216d3ea59b51208
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
3 // found in the LICENSE file.
5 #include "config.h"
6 #include "core/animation/AnimationNodeTiming.h"
8 #include "bindings/core/v8/UnionTypesCore.h"
9 #include "core/animation/Animation.h"
10 #include "core/animation/AnimationNode.h"
11 #include "platform/animation/TimingFunction.h"
13 namespace blink {
15 PassRefPtrWillBeRawPtr<AnimationNodeTiming> AnimationNodeTiming::create(AnimationNode* parent)
17 return adoptRefWillBeNoop(new AnimationNodeTiming(parent));
20 AnimationNodeTiming::AnimationNodeTiming(AnimationNode* parent)
21 : m_parent(parent)
25 double AnimationNodeTiming::delay()
27 return m_parent->specifiedTiming().startDelay * 1000;
30 double AnimationNodeTiming::endDelay()
32 return m_parent->specifiedTiming().endDelay * 1000;
35 String AnimationNodeTiming::fill()
37 return Timing::fillModeString(m_parent->specifiedTiming().fillMode);
40 double AnimationNodeTiming::iterationStart()
42 return m_parent->specifiedTiming().iterationStart;
45 double AnimationNodeTiming::iterations()
47 return m_parent->specifiedTiming().iterationCount;
50 void AnimationNodeTiming::duration(UnrestrictedDoubleOrString& returnValue)
52 if (std::isnan(m_parent->specifiedTiming().iterationDuration))
53 returnValue.setString("auto");
54 else
55 returnValue.setUnrestrictedDouble(m_parent->specifiedTiming().iterationDuration * 1000);
58 double AnimationNodeTiming::playbackRate()
60 return m_parent->specifiedTiming().playbackRate;
63 String AnimationNodeTiming::direction()
65 return Timing::playbackDirectionString(m_parent->specifiedTiming().direction);
68 String AnimationNodeTiming::easing()
70 return m_parent->specifiedTiming().timingFunction->toString();
73 void AnimationNodeTiming::setDelay(double delay)
75 Timing timing = m_parent->specifiedTiming();
76 TimingInput::setStartDelay(timing, delay);
77 m_parent->updateSpecifiedTiming(timing);
80 void AnimationNodeTiming::setEndDelay(double endDelay)
82 Timing timing = m_parent->specifiedTiming();
83 TimingInput::setEndDelay(timing, endDelay);
84 m_parent->updateSpecifiedTiming(timing);
87 void AnimationNodeTiming::setFill(String fill)
89 Timing timing = m_parent->specifiedTiming();
90 TimingInput::setFillMode(timing, fill);
91 m_parent->updateSpecifiedTiming(timing);
94 void AnimationNodeTiming::setIterationStart(double iterationStart)
96 Timing timing = m_parent->specifiedTiming();
97 TimingInput::setIterationStart(timing, iterationStart);
98 m_parent->updateSpecifiedTiming(timing);
101 void AnimationNodeTiming::setIterations(double iterations)
103 Timing timing = m_parent->specifiedTiming();
104 TimingInput::setIterationCount(timing, iterations);
105 m_parent->updateSpecifiedTiming(timing);
108 void AnimationNodeTiming::setDuration(const UnrestrictedDoubleOrString& durationOrAuto)
110 // Any strings other than "auto" are coerced to "auto".
111 double duration = durationOrAuto.isString() ? std::numeric_limits<double>::quiet_NaN() : durationOrAuto.getAsUnrestrictedDouble();
112 Timing timing = m_parent->specifiedTiming();
113 TimingInput::setIterationDuration(timing, duration);
114 m_parent->updateSpecifiedTiming(timing);
117 void AnimationNodeTiming::setPlaybackRate(double playbackRate)
119 Timing timing = m_parent->specifiedTiming();
120 TimingInput::setPlaybackRate(timing, playbackRate);
121 m_parent->updateSpecifiedTiming(timing);
124 void AnimationNodeTiming::setDirection(String direction)
126 Timing timing = m_parent->specifiedTiming();
127 TimingInput::setPlaybackDirection(timing, direction);
128 m_parent->updateSpecifiedTiming(timing);
131 void AnimationNodeTiming::setEasing(String easing)
133 Timing timing = m_parent->specifiedTiming();
134 TimingInput::setTimingFunction(timing, easing);
135 m_parent->updateSpecifiedTiming(timing);
138 DEFINE_TRACE(AnimationNodeTiming)
140 visitor->trace(m_parent);
143 } // namespace blink