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

Side by Side Diff: third_party/WebKit/Source/core/animation/AnimationEffectReadOnly.cpp

Issue 2236583003: Rename AnimationEffect to AnimationEffectReadOnly (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@deprecated-assert
Patch Set: Rebase Created 4 years, 4 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 /* 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 10 matching lines...) Expand all
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "core/animation/AnimationEffect.h" 31 #include "core/animation/AnimationEffectReadOnly.h"
32 32
33 #include "core/animation/Animation.h" 33 #include "core/animation/Animation.h"
34 #include "core/animation/AnimationEffectTiming.h" 34 #include "core/animation/AnimationEffectTiming.h"
35 #include "core/animation/ComputedTimingProperties.h" 35 #include "core/animation/ComputedTimingProperties.h"
36 #include "core/animation/TimingCalculations.h" 36 #include "core/animation/TimingCalculations.h"
37 37
38 namespace blink { 38 namespace blink {
39 39
40 namespace { 40 namespace {
41 41
42 Timing::FillMode resolvedFillMode(Timing::FillMode fillMode, bool isAnimation) 42 Timing::FillMode resolvedFillMode(Timing::FillMode fillMode, bool isAnimation)
43 { 43 {
44 if (fillMode != Timing::FillMode::AUTO) 44 if (fillMode != Timing::FillMode::AUTO)
45 return fillMode; 45 return fillMode;
46 if (isAnimation) 46 if (isAnimation)
47 return Timing::FillMode::NONE; 47 return Timing::FillMode::NONE;
48 return Timing::FillMode::BOTH; 48 return Timing::FillMode::BOTH;
49 } 49 }
50 50
51 } // namespace 51 } // namespace
52 52
53 AnimationEffect::AnimationEffect(const Timing& timing, EventDelegate* eventDeleg ate) 53 AnimationEffectReadOnly::AnimationEffectReadOnly(const Timing& timing, EventDele gate* eventDelegate)
54 : m_animation(nullptr) 54 : m_animation(nullptr)
55 , m_timing(timing) 55 , m_timing(timing)
56 , m_eventDelegate(eventDelegate) 56 , m_eventDelegate(eventDelegate)
57 , m_calculated() 57 , m_calculated()
58 , m_needsUpdate(true) 58 , m_needsUpdate(true)
59 , m_lastUpdateTime(nullValue()) 59 , m_lastUpdateTime(nullValue())
60 { 60 {
61 m_timing.assertValid(); 61 m_timing.assertValid();
62 } 62 }
63 63
64 double AnimationEffect::iterationDuration() const 64 double AnimationEffectReadOnly::iterationDuration() const
65 { 65 {
66 double result = std::isnan(m_timing.iterationDuration) ? intrinsicIterationD uration() : m_timing.iterationDuration; 66 double result = std::isnan(m_timing.iterationDuration) ? intrinsicIterationD uration() : m_timing.iterationDuration;
67 DCHECK_GE(result, 0); 67 DCHECK_GE(result, 0);
68 return result; 68 return result;
69 } 69 }
70 70
71 double AnimationEffect::repeatedDuration() const 71 double AnimationEffectReadOnly::repeatedDuration() const
72 { 72 {
73 const double result = multiplyZeroAlwaysGivesZero(iterationDuration(), m_tim ing.iterationCount); 73 const double result = multiplyZeroAlwaysGivesZero(iterationDuration(), m_tim ing.iterationCount);
74 DCHECK_GE(result, 0); 74 DCHECK_GE(result, 0);
75 return result; 75 return result;
76 } 76 }
77 77
78 double AnimationEffect::activeDurationInternal() const 78 double AnimationEffectReadOnly::activeDurationInternal() const
79 { 79 {
80 const double result = m_timing.playbackRate 80 const double result = m_timing.playbackRate
81 ? repeatedDuration() / std::abs(m_timing.playbackRate) 81 ? repeatedDuration() / std::abs(m_timing.playbackRate)
82 : std::numeric_limits<double>::infinity(); 82 : std::numeric_limits<double>::infinity();
83 DCHECK_GE(result, 0); 83 DCHECK_GE(result, 0);
84 return result; 84 return result;
85 } 85 }
86 86
87 void AnimationEffect::updateSpecifiedTiming(const Timing& timing) 87 void AnimationEffectReadOnly::updateSpecifiedTiming(const Timing& timing)
88 { 88 {
89 // FIXME: Test whether the timing is actually different? 89 // FIXME: Test whether the timing is actually different?
90 m_timing = timing; 90 m_timing = timing;
91 invalidate(); 91 invalidate();
92 if (m_animation) 92 if (m_animation)
93 m_animation->setOutdated(); 93 m_animation->setOutdated();
94 specifiedTimingChanged(); 94 specifiedTimingChanged();
95 } 95 }
96 96
97 void AnimationEffect::getComputedTiming(ComputedTimingProperties& computedTiming ) 97 void AnimationEffectReadOnly::getComputedTiming(ComputedTimingProperties& comput edTiming)
98 { 98 {
99 // ComputedTimingProperties members. 99 // ComputedTimingProperties members.
100 computedTiming.setEndTime(endTimeInternal() * 1000); 100 computedTiming.setEndTime(endTimeInternal() * 1000);
101 computedTiming.setActiveDuration(activeDurationInternal() * 1000); 101 computedTiming.setActiveDuration(activeDurationInternal() * 1000);
102 102
103 if (ensureCalculated().isInEffect) { 103 if (ensureCalculated().isInEffect) {
104 computedTiming.setLocalTime(ensureCalculated().localTime * 1000); 104 computedTiming.setLocalTime(ensureCalculated().localTime * 1000);
105 computedTiming.setProgress(ensureCalculated().progress); 105 computedTiming.setProgress(ensureCalculated().progress);
106 computedTiming.setCurrentIteration(ensureCalculated().currentIteration); 106 computedTiming.setCurrentIteration(ensureCalculated().currentIteration);
107 } else { 107 } else {
(...skipping 10 matching lines...) Expand all
118 computedTiming.setIterations(specifiedTiming().iterationCount); 118 computedTiming.setIterations(specifiedTiming().iterationCount);
119 119
120 UnrestrictedDoubleOrString duration; 120 UnrestrictedDoubleOrString duration;
121 duration.setUnrestrictedDouble(iterationDuration() * 1000); 121 duration.setUnrestrictedDouble(iterationDuration() * 1000);
122 computedTiming.setDuration(duration); 122 computedTiming.setDuration(duration);
123 123
124 computedTiming.setDirection(Timing::playbackDirectionString(specifiedTiming( ).direction)); 124 computedTiming.setDirection(Timing::playbackDirectionString(specifiedTiming( ).direction));
125 computedTiming.setEasing(specifiedTiming().timingFunction->toString()); 125 computedTiming.setEasing(specifiedTiming().timingFunction->toString());
126 } 126 }
127 127
128 ComputedTimingProperties AnimationEffect::getComputedTiming() 128 ComputedTimingProperties AnimationEffectReadOnly::getComputedTiming()
129 { 129 {
130 ComputedTimingProperties result; 130 ComputedTimingProperties result;
131 getComputedTiming(result); 131 getComputedTiming(result);
132 return result; 132 return result;
133 } 133 }
134 134
135 135
136 void AnimationEffect::updateInheritedTime(double inheritedTime, TimingUpdateReas on reason) const 136 void AnimationEffectReadOnly::updateInheritedTime(double inheritedTime, TimingUp dateReason reason) const
137 { 137 {
138 bool needsUpdate = m_needsUpdate || (m_lastUpdateTime != inheritedTime && !( isNull(m_lastUpdateTime) && isNull(inheritedTime))) || (animation() && animation ()->effectSuppressed()); 138 bool needsUpdate = m_needsUpdate || (m_lastUpdateTime != inheritedTime && !( isNull(m_lastUpdateTime) && isNull(inheritedTime))) || (animation() && animation ()->effectSuppressed());
139 m_needsUpdate = false; 139 m_needsUpdate = false;
140 m_lastUpdateTime = inheritedTime; 140 m_lastUpdateTime = inheritedTime;
141 141
142 const double localTime = inheritedTime; 142 const double localTime = inheritedTime;
143 double timeToNextIteration = std::numeric_limits<double>::infinity(); 143 double timeToNextIteration = std::numeric_limits<double>::infinity();
144 if (needsUpdate) { 144 if (needsUpdate) {
145 const double activeDuration = this->activeDurationInternal(); 145 const double activeDuration = this->activeDurationInternal();
146 146
147 const Phase currentPhase = calculatePhase(activeDuration, localTime, m_t iming); 147 const Phase currentPhase = calculatePhase(activeDuration, localTime, m_t iming);
148 // FIXME: parentPhase depends on groups being implemented. 148 // FIXME: parentPhase depends on groups being implemented.
149 const AnimationEffect::Phase parentPhase = AnimationEffect::PhaseActive; 149 const AnimationEffectReadOnly::Phase parentPhase = AnimationEffectReadOn ly::PhaseActive;
150 const double activeTime = calculateActiveTime(activeDuration, resolvedFi llMode(m_timing.fillMode, isKeyframeEffect()), localTime, parentPhase, currentPh ase, m_timing); 150 const double activeTime = calculateActiveTime(activeDuration, resolvedFi llMode(m_timing.fillMode, isKeyframeEffect()), localTime, parentPhase, currentPh ase, m_timing);
151 151
152 double currentIteration; 152 double currentIteration;
153 double progress; 153 double progress;
154 if (const double iterationDuration = this->iterationDuration()) { 154 if (const double iterationDuration = this->iterationDuration()) {
155 const double startOffset = multiplyZeroAlwaysGivesZero(m_timing.iter ationStart, iterationDuration); 155 const double startOffset = multiplyZeroAlwaysGivesZero(m_timing.iter ationStart, iterationDuration);
156 DCHECK_GE(startOffset, 0); 156 DCHECK_GE(startOffset, 0);
157 const double scaledActiveTime = calculateScaledActiveTime(activeDura tion, activeTime, startOffset, m_timing); 157 const double scaledActiveTime = calculateScaledActiveTime(activeDura tion, activeTime, startOffset, m_timing);
158 const double iterationTime = calculateIterationTime(iterationDuratio n, repeatedDuration(), scaledActiveTime, startOffset, currentPhase, m_timing); 158 const double iterationTime = calculateIterationTime(iterationDuratio n, repeatedDuration(), scaledActiveTime, startOffset, currentPhase, m_timing);
159 159
(...skipping 14 matching lines...) Expand all
174 if (activeDuration - activeTime < timeToNextIteration) 174 if (activeDuration - activeTime < timeToNextIteration)
175 timeToNextIteration = std::numeric_limits<double>::infinity( ); 175 timeToNextIteration = std::numeric_limits<double>::infinity( );
176 } 176 }
177 } else { 177 } else {
178 const double localIterationDuration = 1; 178 const double localIterationDuration = 1;
179 const double localRepeatedDuration = localIterationDuration * m_timi ng.iterationCount; 179 const double localRepeatedDuration = localIterationDuration * m_timi ng.iterationCount;
180 DCHECK_GE(localRepeatedDuration, 0); 180 DCHECK_GE(localRepeatedDuration, 0);
181 const double localActiveDuration = m_timing.playbackRate ? localRepe atedDuration / std::abs(m_timing.playbackRate) : std::numeric_limits<double>::in finity(); 181 const double localActiveDuration = m_timing.playbackRate ? localRepe atedDuration / std::abs(m_timing.playbackRate) : std::numeric_limits<double>::in finity();
182 DCHECK_GE(localActiveDuration, 0); 182 DCHECK_GE(localActiveDuration, 0);
183 const double localLocalTime = localTime < m_timing.startDelay ? loca lTime : localActiveDuration + m_timing.startDelay; 183 const double localLocalTime = localTime < m_timing.startDelay ? loca lTime : localActiveDuration + m_timing.startDelay;
184 const AnimationEffect::Phase localCurrentPhase = calculatePhase(loca lActiveDuration, localLocalTime, m_timing); 184 const AnimationEffectReadOnly::Phase localCurrentPhase = calculatePh ase(localActiveDuration, localLocalTime, m_timing);
185 const double localActiveTime = calculateActiveTime(localActiveDurati on, resolvedFillMode(m_timing.fillMode, isKeyframeEffect()), localLocalTime, par entPhase, localCurrentPhase, m_timing); 185 const double localActiveTime = calculateActiveTime(localActiveDurati on, resolvedFillMode(m_timing.fillMode, isKeyframeEffect()), localLocalTime, par entPhase, localCurrentPhase, m_timing);
186 const double startOffset = m_timing.iterationStart * localIterationD uration; 186 const double startOffset = m_timing.iterationStart * localIterationD uration;
187 DCHECK_GE(startOffset, 0); 187 DCHECK_GE(startOffset, 0);
188 const double scaledActiveTime = calculateScaledActiveTime(localActiv eDuration, localActiveTime, startOffset, m_timing); 188 const double scaledActiveTime = calculateScaledActiveTime(localActiv eDuration, localActiveTime, startOffset, m_timing);
189 const double iterationTime = calculateIterationTime(localIterationDu ration, localRepeatedDuration, scaledActiveTime, startOffset, currentPhase, m_ti ming); 189 const double iterationTime = calculateIterationTime(localIterationDu ration, localRepeatedDuration, scaledActiveTime, startOffset, currentPhase, m_ti ming);
190 190
191 currentIteration = calculateCurrentIteration(localIterationDuration, iterationTime, scaledActiveTime, m_timing); 191 currentIteration = calculateCurrentIteration(localIterationDuration, iterationTime, scaledActiveTime, m_timing);
192 progress = calculateTransformedTime(currentIteration, localIteration Duration, iterationTime, m_timing); 192 progress = calculateTransformedTime(currentIteration, localIteration Duration, iterationTime, m_timing);
193 } 193 }
194 194
(...skipping 15 matching lines...) Expand all
210 } 210 }
211 211
212 if (needsUpdate) { 212 if (needsUpdate) {
213 // FIXME: This probably shouldn't be recursive. 213 // FIXME: This probably shouldn't be recursive.
214 updateChildrenAndEffects(); 214 updateChildrenAndEffects();
215 m_calculated.timeToForwardsEffectChange = calculateTimeToEffectChange(tr ue, localTime, timeToNextIteration); 215 m_calculated.timeToForwardsEffectChange = calculateTimeToEffectChange(tr ue, localTime, timeToNextIteration);
216 m_calculated.timeToReverseEffectChange = calculateTimeToEffectChange(fal se, localTime, timeToNextIteration); 216 m_calculated.timeToReverseEffectChange = calculateTimeToEffectChange(fal se, localTime, timeToNextIteration);
217 } 217 }
218 } 218 }
219 219
220 const AnimationEffect::CalculatedTiming& AnimationEffect::ensureCalculated() con st 220 const AnimationEffectReadOnly::CalculatedTiming& AnimationEffectReadOnly::ensure Calculated() const
221 { 221 {
222 if (!m_animation) 222 if (!m_animation)
223 return m_calculated; 223 return m_calculated;
224 if (m_animation->outdated()) 224 if (m_animation->outdated())
225 m_animation->update(TimingUpdateOnDemand); 225 m_animation->update(TimingUpdateOnDemand);
226 DCHECK(!m_animation->outdated()); 226 DCHECK(!m_animation->outdated());
227 return m_calculated; 227 return m_calculated;
228 } 228 }
229 229
230 AnimationEffectTiming* AnimationEffect::timing() 230 AnimationEffectTiming* AnimationEffectReadOnly::timing()
231 { 231 {
232 return AnimationEffectTiming::create(this); 232 return AnimationEffectTiming::create(this);
233 } 233 }
234 234
235 DEFINE_TRACE(AnimationEffect) 235 DEFINE_TRACE(AnimationEffectReadOnly)
236 { 236 {
237 visitor->trace(m_animation); 237 visitor->trace(m_animation);
238 visitor->trace(m_eventDelegate); 238 visitor->trace(m_eventDelegate);
239 } 239 }
240 240
241 } // namespace blink 241 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698