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 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 // will treat these as undefined. | 108 // will treat these as undefined. |
109 if (ensureCalculated().isInEffect) { | 109 if (ensureCalculated().isInEffect) { |
110 computedTiming.setLocalTime(ensureCalculated().localTime * 1000); | 110 computedTiming.setLocalTime(ensureCalculated().localTime * 1000); |
111 computedTiming.setTimeFraction(ensureCalculated().timeFraction); | 111 computedTiming.setTimeFraction(ensureCalculated().timeFraction); |
112 computedTiming.setCurrentIteration(ensureCalculated().currentIteration); | 112 computedTiming.setCurrentIteration(ensureCalculated().currentIteration); |
113 } | 113 } |
114 | 114 |
115 // KeyframeEffectOptions members. | 115 // KeyframeEffectOptions members. |
116 computedTiming.setDelay(specifiedTiming().startDelay * 1000); | 116 computedTiming.setDelay(specifiedTiming().startDelay * 1000); |
117 computedTiming.setEndDelay(specifiedTiming().endDelay * 1000); | 117 computedTiming.setEndDelay(specifiedTiming().endDelay * 1000); |
118 computedTiming.setFill(Timing::fillModeString(resolvedFillMode(specifiedTimi
ng().fillMode, isAnimation()))); | 118 computedTiming.setFill(Timing::fillModeString(resolvedFillMode(specifiedTimi
ng().fillMode, isKeyframeEffect()))); |
119 computedTiming.setIterationStart(specifiedTiming().iterationStart); | 119 computedTiming.setIterationStart(specifiedTiming().iterationStart); |
120 computedTiming.setIterations(specifiedTiming().iterationCount); | 120 computedTiming.setIterations(specifiedTiming().iterationCount); |
121 | 121 |
122 UnrestrictedDoubleOrString duration; | 122 UnrestrictedDoubleOrString duration; |
123 duration.setUnrestrictedDouble(iterationDuration() * 1000); | 123 duration.setUnrestrictedDouble(iterationDuration() * 1000); |
124 computedTiming.setDuration(duration); | 124 computedTiming.setDuration(duration); |
125 | 125 |
126 computedTiming.setPlaybackRate(specifiedTiming().playbackRate); | 126 computedTiming.setPlaybackRate(specifiedTiming().playbackRate); |
127 computedTiming.setDirection(Timing::playbackDirectionString(specifiedTiming(
).direction)); | 127 computedTiming.setDirection(Timing::playbackDirectionString(specifiedTiming(
).direction)); |
128 computedTiming.setEasing(specifiedTiming().timingFunction->toString()); | 128 computedTiming.setEasing(specifiedTiming().timingFunction->toString()); |
(...skipping 14 matching lines...) Expand all Loading... |
143 m_lastUpdateTime = inheritedTime; | 143 m_lastUpdateTime = inheritedTime; |
144 | 144 |
145 const double localTime = inheritedTime - m_startTime; | 145 const double localTime = inheritedTime - m_startTime; |
146 double timeToNextIteration = std::numeric_limits<double>::infinity(); | 146 double timeToNextIteration = std::numeric_limits<double>::infinity(); |
147 if (needsUpdate) { | 147 if (needsUpdate) { |
148 const double activeDuration = this->activeDurationInternal(); | 148 const double activeDuration = this->activeDurationInternal(); |
149 | 149 |
150 const Phase currentPhase = calculatePhase(activeDuration, localTime, m_t
iming); | 150 const Phase currentPhase = calculatePhase(activeDuration, localTime, m_t
iming); |
151 // FIXME: parentPhase depends on groups being implemented. | 151 // FIXME: parentPhase depends on groups being implemented. |
152 const AnimationEffect::Phase parentPhase = AnimationEffect::PhaseActive; | 152 const AnimationEffect::Phase parentPhase = AnimationEffect::PhaseActive; |
153 const double activeTime = calculateActiveTime(activeDuration, resolvedFi
llMode(m_timing.fillMode, isAnimation()), localTime, parentPhase, currentPhase,
m_timing); | 153 const double activeTime = calculateActiveTime(activeDuration, resolvedFi
llMode(m_timing.fillMode, isKeyframeEffect()), localTime, parentPhase, currentPh
ase, m_timing); |
154 | 154 |
155 double currentIteration; | 155 double currentIteration; |
156 double timeFraction; | 156 double timeFraction; |
157 if (const double iterationDuration = this->iterationDuration()) { | 157 if (const double iterationDuration = this->iterationDuration()) { |
158 const double startOffset = multiplyZeroAlwaysGivesZero(m_timing.iter
ationStart, iterationDuration); | 158 const double startOffset = multiplyZeroAlwaysGivesZero(m_timing.iter
ationStart, iterationDuration); |
159 ASSERT(startOffset >= 0); | 159 ASSERT(startOffset >= 0); |
160 const double scaledActiveTime = calculateScaledActiveTime(activeDura
tion, activeTime, startOffset, m_timing); | 160 const double scaledActiveTime = calculateScaledActiveTime(activeDura
tion, activeTime, startOffset, m_timing); |
161 const double iterationTime = calculateIterationTime(iterationDuratio
n, repeatedDuration(), scaledActiveTime, startOffset, m_timing); | 161 const double iterationTime = calculateIterationTime(iterationDuratio
n, repeatedDuration(), scaledActiveTime, startOffset, m_timing); |
162 | 162 |
163 currentIteration = calculateCurrentIteration(iterationDuration, iter
ationTime, scaledActiveTime, m_timing); | 163 currentIteration = calculateCurrentIteration(iterationDuration, iter
ationTime, scaledActiveTime, m_timing); |
164 timeFraction = calculateTransformedTime(currentIteration, iterationD
uration, iterationTime, m_timing) / iterationDuration; | 164 timeFraction = calculateTransformedTime(currentIteration, iterationD
uration, iterationTime, m_timing) / iterationDuration; |
165 | 165 |
166 if (!isNull(iterationTime)) { | 166 if (!isNull(iterationTime)) { |
167 timeToNextIteration = (iterationDuration - iterationTime) / std:
:abs(m_timing.playbackRate); | 167 timeToNextIteration = (iterationDuration - iterationTime) / std:
:abs(m_timing.playbackRate); |
168 if (activeDuration - activeTime < timeToNextIteration) | 168 if (activeDuration - activeTime < timeToNextIteration) |
169 timeToNextIteration = std::numeric_limits<double>::infinity(
); | 169 timeToNextIteration = std::numeric_limits<double>::infinity(
); |
170 } | 170 } |
171 } else { | 171 } else { |
172 const double localIterationDuration = 1; | 172 const double localIterationDuration = 1; |
173 const double localRepeatedDuration = localIterationDuration * m_timi
ng.iterationCount; | 173 const double localRepeatedDuration = localIterationDuration * m_timi
ng.iterationCount; |
174 ASSERT(localRepeatedDuration >= 0); | 174 ASSERT(localRepeatedDuration >= 0); |
175 const double localActiveDuration = m_timing.playbackRate ? localRepe
atedDuration / std::abs(m_timing.playbackRate) : std::numeric_limits<double>::in
finity(); | 175 const double localActiveDuration = m_timing.playbackRate ? localRepe
atedDuration / std::abs(m_timing.playbackRate) : std::numeric_limits<double>::in
finity(); |
176 ASSERT(localActiveDuration >= 0); | 176 ASSERT(localActiveDuration >= 0); |
177 const double localLocalTime = localTime < m_timing.startDelay ? loca
lTime : localActiveDuration + m_timing.startDelay; | 177 const double localLocalTime = localTime < m_timing.startDelay ? loca
lTime : localActiveDuration + m_timing.startDelay; |
178 const AnimationEffect::Phase localCurrentPhase = calculatePhase(loca
lActiveDuration, localLocalTime, m_timing); | 178 const AnimationEffect::Phase localCurrentPhase = calculatePhase(loca
lActiveDuration, localLocalTime, m_timing); |
179 const double localActiveTime = calculateActiveTime(localActiveDurati
on, resolvedFillMode(m_timing.fillMode, isAnimation()), localLocalTime, parentPh
ase, localCurrentPhase, m_timing); | 179 const double localActiveTime = calculateActiveTime(localActiveDurati
on, resolvedFillMode(m_timing.fillMode, isKeyframeEffect()), localLocalTime, par
entPhase, localCurrentPhase, m_timing); |
180 const double startOffset = m_timing.iterationStart * localIterationD
uration; | 180 const double startOffset = m_timing.iterationStart * localIterationD
uration; |
181 ASSERT(startOffset >= 0); | 181 ASSERT(startOffset >= 0); |
182 const double scaledActiveTime = calculateScaledActiveTime(localActiv
eDuration, localActiveTime, startOffset, m_timing); | 182 const double scaledActiveTime = calculateScaledActiveTime(localActiv
eDuration, localActiveTime, startOffset, m_timing); |
183 const double iterationTime = calculateIterationTime(localIterationDu
ration, localRepeatedDuration, scaledActiveTime, startOffset, m_timing); | 183 const double iterationTime = calculateIterationTime(localIterationDu
ration, localRepeatedDuration, scaledActiveTime, startOffset, m_timing); |
184 | 184 |
185 currentIteration = calculateCurrentIteration(localIterationDuration,
iterationTime, scaledActiveTime, m_timing); | 185 currentIteration = calculateCurrentIteration(localIterationDuration,
iterationTime, scaledActiveTime, m_timing); |
186 timeFraction = calculateTransformedTime(currentIteration, localItera
tionDuration, iterationTime, m_timing); | 186 timeFraction = calculateTransformedTime(currentIteration, localItera
tionDuration, iterationTime, m_timing); |
187 } | 187 } |
188 | 188 |
189 m_calculated.currentIteration = currentIteration; | 189 m_calculated.currentIteration = currentIteration; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 } | 227 } |
228 | 228 |
229 DEFINE_TRACE(AnimationEffect) | 229 DEFINE_TRACE(AnimationEffect) |
230 { | 230 { |
231 visitor->trace(m_parent); | 231 visitor->trace(m_parent); |
232 visitor->trace(m_animation); | 232 visitor->trace(m_animation); |
233 visitor->trace(m_eventDelegate); | 233 visitor->trace(m_eventDelegate); |
234 } | 234 } |
235 | 235 |
236 } // namespace blink | 236 } // namespace blink |
OLD | NEW |