| OLD | NEW |
| (Empty) |
| 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. | |
| 4 | |
| 5 #include "config.h" | |
| 6 #include "core/animation/TimedItemTiming.h" | |
| 7 | |
| 8 #include "core/animation/Animation.h" | |
| 9 #include "core/animation/TimedItem.h" | |
| 10 #include "platform/animation/TimingFunction.h" | |
| 11 | |
| 12 namespace WebCore { | |
| 13 | |
| 14 PassRefPtrWillBeRawPtr<TimedItemTiming> TimedItemTiming::create(TimedItem* paren
t) | |
| 15 { | |
| 16 return adoptRefWillBeNoop(new TimedItemTiming(parent)); | |
| 17 } | |
| 18 | |
| 19 TimedItemTiming::TimedItemTiming(TimedItem* parent) | |
| 20 : m_parent(parent) | |
| 21 { | |
| 22 } | |
| 23 | |
| 24 double TimedItemTiming::delay() | |
| 25 { | |
| 26 return m_parent->specifiedTiming().startDelay * 1000; | |
| 27 } | |
| 28 | |
| 29 double TimedItemTiming::endDelay() | |
| 30 { | |
| 31 return m_parent->specifiedTiming().endDelay * 1000; | |
| 32 } | |
| 33 | |
| 34 String TimedItemTiming::fill() | |
| 35 { | |
| 36 Timing::FillMode fillMode = m_parent->specifiedTiming().fillMode; | |
| 37 switch (fillMode) { | |
| 38 case Timing::FillModeNone: | |
| 39 return "none"; | |
| 40 case Timing::FillModeForwards: | |
| 41 return "forwards"; | |
| 42 case Timing::FillModeBackwards: | |
| 43 return "backwards"; | |
| 44 case Timing::FillModeBoth: | |
| 45 return "both"; | |
| 46 case Timing::FillModeAuto: | |
| 47 return "auto"; | |
| 48 } | |
| 49 ASSERT_NOT_REACHED(); | |
| 50 return "auto"; | |
| 51 } | |
| 52 | |
| 53 double TimedItemTiming::iterationStart() | |
| 54 { | |
| 55 return m_parent->specifiedTiming().iterationStart; | |
| 56 } | |
| 57 | |
| 58 double TimedItemTiming::iterations() | |
| 59 { | |
| 60 return m_parent->specifiedTiming().iterationCount; | |
| 61 } | |
| 62 | |
| 63 // This logic was copied from the example in bindings/tests/idls/TestInterface.i
dl | |
| 64 // and bindings/tests/results/V8TestInterface.cpp. | |
| 65 // FIXME: It might be possible to have 'duration' defined as an attribute in the
idl. | |
| 66 // If possible, fix will be in a follow-up patch. | |
| 67 void TimedItemTiming::getDuration(String propertyName, bool& element0Enabled, do
uble& element0, bool& element1Enabled, String& element1) | |
| 68 { | |
| 69 if (propertyName != "duration") | |
| 70 return; | |
| 71 | |
| 72 if (std::isnan(m_parent->specifiedTiming().iterationDuration)) { | |
| 73 element1Enabled = true; | |
| 74 element1 = "auto"; | |
| 75 return; | |
| 76 } | |
| 77 element0Enabled = true; | |
| 78 element0 = m_parent->specifiedTiming().iterationDuration * 1000; | |
| 79 return; | |
| 80 } | |
| 81 | |
| 82 double TimedItemTiming::playbackRate() | |
| 83 { | |
| 84 return m_parent->specifiedTiming().playbackRate; | |
| 85 } | |
| 86 | |
| 87 String TimedItemTiming::direction() | |
| 88 { | |
| 89 Timing::PlaybackDirection direction = m_parent->specifiedTiming().direction; | |
| 90 switch (direction) { | |
| 91 case Timing::PlaybackDirectionNormal: | |
| 92 return "normal"; | |
| 93 case Timing::PlaybackDirectionReverse: | |
| 94 return "reverse"; | |
| 95 case Timing::PlaybackDirectionAlternate: | |
| 96 return "alternate"; | |
| 97 case Timing::PlaybackDirectionAlternateReverse: | |
| 98 return "alternate-reverse"; | |
| 99 } | |
| 100 ASSERT_NOT_REACHED(); | |
| 101 return "normal"; | |
| 102 } | |
| 103 | |
| 104 String TimedItemTiming::easing() | |
| 105 { | |
| 106 return m_parent->specifiedTiming().timingFunction->toString(); | |
| 107 } | |
| 108 | |
| 109 void TimedItemTiming::setDelay(double delay) | |
| 110 { | |
| 111 Timing timing = m_parent->specifiedTiming(); | |
| 112 TimingInput::setStartDelay(timing, delay); | |
| 113 m_parent->updateSpecifiedTiming(timing); | |
| 114 } | |
| 115 | |
| 116 void TimedItemTiming::setEndDelay(double endDelay) | |
| 117 { | |
| 118 Timing timing = m_parent->specifiedTiming(); | |
| 119 TimingInput::setEndDelay(timing, endDelay); | |
| 120 m_parent->updateSpecifiedTiming(timing); | |
| 121 } | |
| 122 | |
| 123 void TimedItemTiming::setFill(String fill) | |
| 124 { | |
| 125 Timing timing = m_parent->specifiedTiming(); | |
| 126 TimingInput::setFillMode(timing, fill); | |
| 127 m_parent->updateSpecifiedTiming(timing); | |
| 128 } | |
| 129 | |
| 130 void TimedItemTiming::setIterationStart(double iterationStart) | |
| 131 { | |
| 132 Timing timing = m_parent->specifiedTiming(); | |
| 133 TimingInput::setIterationStart(timing, iterationStart); | |
| 134 m_parent->updateSpecifiedTiming(timing); | |
| 135 } | |
| 136 | |
| 137 void TimedItemTiming::setIterations(double iterations) | |
| 138 { | |
| 139 Timing timing = m_parent->specifiedTiming(); | |
| 140 TimingInput::setIterationCount(timing, iterations); | |
| 141 m_parent->updateSpecifiedTiming(timing); | |
| 142 } | |
| 143 | |
| 144 bool TimedItemTiming::setDuration(String name, double duration) | |
| 145 { | |
| 146 if (name != "duration") | |
| 147 return false; | |
| 148 Timing timing = m_parent->specifiedTiming(); | |
| 149 TimingInput::setIterationDuration(timing, duration); | |
| 150 m_parent->updateSpecifiedTiming(timing); | |
| 151 return true; | |
| 152 } | |
| 153 | |
| 154 void TimedItemTiming::setPlaybackRate(double playbackRate) | |
| 155 { | |
| 156 Timing timing = m_parent->specifiedTiming(); | |
| 157 TimingInput::setPlaybackRate(timing, playbackRate); | |
| 158 m_parent->updateSpecifiedTiming(timing); | |
| 159 } | |
| 160 | |
| 161 void TimedItemTiming::setDirection(String direction) | |
| 162 { | |
| 163 Timing timing = m_parent->specifiedTiming(); | |
| 164 TimingInput::setPlaybackDirection(timing, direction); | |
| 165 m_parent->updateSpecifiedTiming(timing); | |
| 166 } | |
| 167 | |
| 168 void TimedItemTiming::setEasing(String easing) | |
| 169 { | |
| 170 Timing timing = m_parent->specifiedTiming(); | |
| 171 TimingInput::setTimingFunction(timing, easing); | |
| 172 m_parent->updateSpecifiedTiming(timing); | |
| 173 } | |
| 174 | |
| 175 void TimedItemTiming::trace(Visitor* visitor) | |
| 176 { | |
| 177 visitor->trace(m_parent); | |
| 178 } | |
| 179 | |
| 180 } // namespace WebCore | |
| OLD | NEW |