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

Side by Side Diff: Source/core/svg/animation/SVGSMILElement.cpp

Issue 19946002: [SVG] Handle animation freeze when 'repeatDur' is not a multiple of 'dur' (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 5 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
« no previous file with comments | « LayoutTests/svg/animations/script-tests/animate-fill-freeze-with-repeatDur.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple 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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after
994 } 994 }
995 if (!simpleDuration) { 995 if (!simpleDuration) {
996 repeat = 0; 996 repeat = 0;
997 return 1.f; 997 return 1.f;
998 } 998 }
999 ASSERT(m_intervalBegin.isFinite()); 999 ASSERT(m_intervalBegin.isFinite());
1000 ASSERT(simpleDuration.isFinite()); 1000 ASSERT(simpleDuration.isFinite());
1001 SMILTime activeTime = elapsed - m_intervalBegin; 1001 SMILTime activeTime = elapsed - m_intervalBegin;
1002 SMILTime repeatingDuration = this->repeatingDuration(); 1002 SMILTime repeatingDuration = this->repeatingDuration();
1003 if (elapsed >= m_intervalEnd || activeTime > repeatingDuration) { 1003 if (elapsed >= m_intervalEnd || activeTime > repeatingDuration) {
1004 repeat = static_cast<unsigned>(repeatingDuration.value() / simpleDuratio n.value()) - 1; 1004 repeat = static_cast<unsigned>(repeatingDuration.value() / simpleDuratio n.value());
1005 if (!fmod(repeatingDuration.value(), simpleDuration.value()))
1006 repeat--;
1005 1007
1006 double percent = (m_intervalEnd.value() - m_intervalBegin.value()) / sim pleDuration.value(); 1008 double percent = (m_intervalEnd.value() - m_intervalBegin.value()) / sim pleDuration.value();
1007 percent = percent - floor(percent); 1009 percent = percent - floor(percent);
1008 if (percent < numeric_limits<float>::epsilon() || 1 - percent < numeric_ limits<float>::epsilon()) 1010 if (percent < numeric_limits<float>::epsilon() || 1 - percent < numeric_ limits<float>::epsilon())
1009 return 1.0f; 1011 return 1.0f;
1010 return narrowPrecisionToFloat(percent); 1012 return narrowPrecisionToFloat(percent);
1011 } 1013 }
1012 repeat = static_cast<unsigned>(activeTime.value() / simpleDuration.value()); 1014 repeat = static_cast<unsigned>(activeTime.value() / simpleDuration.value());
1013 SMILTime simpleTime = fmod(activeTime.value(), simpleDuration.value()); 1015 SMILTime simpleTime = fmod(activeTime.value(), simpleDuration.value());
1014 return narrowPrecisionToFloat(simpleTime.value() / simpleDuration.value()); 1016 return narrowPrecisionToFloat(simpleTime.value() / simpleDuration.value());
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 addBeginTime(elapsed, elapsed); 1188 addBeginTime(elapsed, elapsed);
1187 } 1189 }
1188 1190
1189 void SVGSMILElement::endedActiveInterval() 1191 void SVGSMILElement::endedActiveInterval()
1190 { 1192 {
1191 clearTimesWithDynamicOrigins(m_beginTimes); 1193 clearTimesWithDynamicOrigins(m_beginTimes);
1192 clearTimesWithDynamicOrigins(m_endTimes); 1194 clearTimesWithDynamicOrigins(m_endTimes);
1193 } 1195 }
1194 1196
1195 } 1197 }
OLDNEW
« no previous file with comments | « LayoutTests/svg/animations/script-tests/animate-fill-freeze-with-repeatDur.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698