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

Side by Side Diff: Source/platform/scroll/ScrollAnimatorNone.cpp

Issue 244253002: Avoid useless initialization in ScrollAnimatorNone::PerAxisData::animateScroll() (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Move code to a new inline function Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/scroll/ScrollAnimatorNone.h ('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) 2011, Google Inc. All rights reserved. 2 * Copyright (c) 2011, 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 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 m_attackPosition = m_releasePosition - (m_animationTime - m_releaseTime - m_attackTime) * m_desiredVelocity; 317 m_attackPosition = m_releasePosition - (m_animationTime - m_releaseTime - m_attackTime) * m_desiredVelocity;
318 318
319 if (sustainTimeLeft) { 319 if (sustainTimeLeft) {
320 double roundOff = m_releasePosition - ((attackAreaLeft ? m_attackPositio n : *m_currentPosition) + m_desiredVelocity * sustainTimeLeft); 320 double roundOff = m_releasePosition - ((attackAreaLeft ? m_attackPositio n : *m_currentPosition) + m_desiredVelocity * sustainTimeLeft);
321 m_desiredVelocity += roundOff / sustainTimeLeft; 321 m_desiredVelocity += roundOff / sustainTimeLeft;
322 } 322 }
323 323
324 return true; 324 return true;
325 } 325 }
326 326
327 inline double ScrollAnimatorNone::PerAxisData::newScrollAnimationPosition(double deltaTime)
328 {
329 if (deltaTime < m_attackTime)
330 return attackCurve(m_attackCurve, deltaTime, m_attackTime, m_startPositi on, m_attackPosition);
331 if (deltaTime < (m_animationTime - m_releaseTime))
332 return m_attackPosition + (deltaTime - m_attackTime) * m_desiredVelocity ;
333 // release is based on targeting the exact final position.
334 double releaseDeltaT = deltaTime - (m_animationTime - m_releaseTime);
335 return releaseCurve(m_releaseCurve, releaseDeltaT, m_releaseTime, m_releaseP osition, m_desiredPosition);
336 }
337
327 // FIXME: Add in jank detection trace events into this function. 338 // FIXME: Add in jank detection trace events into this function.
328 bool ScrollAnimatorNone::PerAxisData::animateScroll(double currentTime) 339 bool ScrollAnimatorNone::PerAxisData::animateScroll(double currentTime)
329 { 340 {
330 double lastScrollInterval = currentTime - m_lastAnimationTime; 341 double lastScrollInterval = currentTime - m_lastAnimationTime;
331 if (lastScrollInterval < kMinimumTimerInterval) 342 if (lastScrollInterval < kMinimumTimerInterval)
332 return true; 343 return true;
333 344
334 m_lastAnimationTime = currentTime; 345 m_lastAnimationTime = currentTime;
335 346
336 double deltaTime = currentTime - m_startTime; 347 double deltaTime = currentTime - m_startTime;
337 double newPosition = *m_currentPosition;
338 348
339 if (deltaTime > m_animationTime) { 349 if (deltaTime > m_animationTime) {
340 *m_currentPosition = m_desiredPosition; 350 *m_currentPosition = m_desiredPosition;
341 reset(); 351 reset();
342 return false; 352 return false;
343 } 353 }
344 if (deltaTime < m_attackTime) 354 double newPosition = newScrollAnimationPosition(deltaTime);
345 newPosition = attackCurve(m_attackCurve, deltaTime, m_attackTime, m_star tPosition, m_attackPosition);
346 else if (deltaTime < (m_animationTime - m_releaseTime))
347 newPosition = m_attackPosition + (deltaTime - m_attackTime) * m_desiredV elocity;
348 else {
349 // release is based on targeting the exact final position.
350 double releaseDeltaT = deltaTime - (m_animationTime - m_releaseTime);
351 newPosition = releaseCurve(m_releaseCurve, releaseDeltaT, m_releaseTime, m_releasePosition, m_desiredPosition);
352 }
353
354 // Normalize velocity to a per second amount. Could be used to check for jan k. 355 // Normalize velocity to a per second amount. Could be used to check for jan k.
355 if (lastScrollInterval > 0) 356 if (lastScrollInterval > 0)
356 m_currentVelocity = (newPosition - *m_currentPosition) / lastScrollInter val; 357 m_currentVelocity = (newPosition - *m_currentPosition) / lastScrollInter val;
357 *m_currentPosition = newPosition; 358 *m_currentPosition = newPosition;
358 359
359 return true; 360 return true;
360 } 361 }
361 362
362 void ScrollAnimatorNone::PerAxisData::updateVisibleLength(int visibleLength) 363 void ScrollAnimatorNone::PerAxisData::updateVisibleLength(int visibleLength)
363 { 364 {
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 return m_animationActive; 518 return m_animationActive;
518 } 519 }
519 520
520 void ScrollAnimatorNone::stopAnimationTimerIfNeeded() 521 void ScrollAnimatorNone::stopAnimationTimerIfNeeded()
521 { 522 {
522 if (animationTimerActive()) 523 if (animationTimerActive())
523 m_animationActive = false; 524 m_animationActive = false;
524 } 525 }
525 526
526 } // namespace WebCore 527 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/platform/scroll/ScrollAnimatorNone.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698