| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008, 2009 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 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 | 93 |
| 94 RenderObjectAnimationMap::const_iterator animationsEnd = m_compositeAnimatio
ns.end(); | 94 RenderObjectAnimationMap::const_iterator animationsEnd = m_compositeAnimatio
ns.end(); |
| 95 for (RenderObjectAnimationMap::const_iterator it = m_compositeAnimations.beg
in(); it != animationsEnd; ++it) { | 95 for (RenderObjectAnimationMap::const_iterator it = m_compositeAnimations.beg
in(); it != animationsEnd; ++it) { |
| 96 CompositeAnimation* compAnim = it->second.get(); | 96 CompositeAnimation* compAnim = it->second.get(); |
| 97 if (!compAnim->suspended() && compAnim->hasAnimations()) { | 97 if (!compAnim->suspended() && compAnim->hasAnimations()) { |
| 98 double t = compAnim->timeToNextService(); | 98 double t = compAnim->timeToNextService(); |
| 99 if (t != -1 && (t < timeToNextService || timeToNextService == -1)) | 99 if (t != -1 && (t < timeToNextService || timeToNextService == -1)) |
| 100 timeToNextService = t; | 100 timeToNextService = t; |
| 101 if (!timeToNextService) { | 101 if (!timeToNextService) { |
| 102 if (callSetChanged == CallSetChanged) { | 102 if (callSetChanged == CallSetChanged) { |
| 103 Node* node = it->first->styledGeneratingNode(); | 103 Node* node = it->first->node(); |
| 104 ASSERT(!node || (node->document() && !node->document()->inPa
geCache())); | 104 ASSERT(!node || (node->document() && !node->document()->inPa
geCache())); |
| 105 node->setNeedsStyleRecalc(SyntheticStyleChange); | 105 node->setNeedsStyleRecalc(SyntheticStyleChange); |
| 106 calledSetChanged = true; | 106 calledSetChanged = true; |
| 107 } | 107 } |
| 108 else | 108 else |
| 109 break; | 109 break; |
| 110 } | 110 } |
| 111 } | 111 } |
| 112 } | 112 } |
| 113 | 113 |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 bool AnimationControllerPrivate::pauseAnimationAtTime(RenderObject* renderer, co
nst String& name, double t) | 321 bool AnimationControllerPrivate::pauseAnimationAtTime(RenderObject* renderer, co
nst String& name, double t) |
| 322 { | 322 { |
| 323 if (!renderer) | 323 if (!renderer) |
| 324 return false; | 324 return false; |
| 325 | 325 |
| 326 RefPtr<CompositeAnimation> compAnim = accessCompositeAnimation(renderer); | 326 RefPtr<CompositeAnimation> compAnim = accessCompositeAnimation(renderer); |
| 327 if (!compAnim) | 327 if (!compAnim) |
| 328 return false; | 328 return false; |
| 329 | 329 |
| 330 if (compAnim->pauseAnimationAtTime(name, t)) { | 330 if (compAnim->pauseAnimationAtTime(name, t)) { |
| 331 renderer->styledGeneratingNode()->setNeedsStyleRecalc(SyntheticStyleChan
ge); | 331 renderer->node()->setNeedsStyleRecalc(SyntheticStyleChange); |
| 332 startUpdateStyleIfNeededDispatcher(); | 332 startUpdateStyleIfNeededDispatcher(); |
| 333 return true; | 333 return true; |
| 334 } | 334 } |
| 335 | 335 |
| 336 return false; | 336 return false; |
| 337 } | 337 } |
| 338 | 338 |
| 339 bool AnimationControllerPrivate::pauseTransitionAtTime(RenderObject* renderer, c
onst String& property, double t) | 339 bool AnimationControllerPrivate::pauseTransitionAtTime(RenderObject* renderer, c
onst String& property, double t) |
| 340 { | 340 { |
| 341 if (!renderer) | 341 if (!renderer) |
| 342 return false; | 342 return false; |
| 343 | 343 |
| 344 RefPtr<CompositeAnimation> compAnim = accessCompositeAnimation(renderer); | 344 RefPtr<CompositeAnimation> compAnim = accessCompositeAnimation(renderer); |
| 345 if (!compAnim) | 345 if (!compAnim) |
| 346 return false; | 346 return false; |
| 347 | 347 |
| 348 if (compAnim->pauseTransitionAtTime(cssPropertyID(property), t)) { | 348 if (compAnim->pauseTransitionAtTime(cssPropertyID(property), t)) { |
| 349 renderer->styledGeneratingNode()->setNeedsStyleRecalc(SyntheticStyleChan
ge); | 349 renderer->node()->setNeedsStyleRecalc(SyntheticStyleChange); |
| 350 startUpdateStyleIfNeededDispatcher(); | 350 startUpdateStyleIfNeededDispatcher(); |
| 351 return true; | 351 return true; |
| 352 } | 352 } |
| 353 | 353 |
| 354 return false; | 354 return false; |
| 355 } | 355 } |
| 356 | 356 |
| 357 double AnimationControllerPrivate::beginAnimationUpdateTime() | 357 double AnimationControllerPrivate::beginAnimationUpdateTime() |
| 358 { | 358 { |
| 359 if (m_beginAnimationUpdateTime == cBeginAnimationUpdateTimeNotSet) | 359 if (m_beginAnimationUpdateTime == cBeginAnimationUpdateTimeNotSet) |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 AnimationController::~AnimationController() | 501 AnimationController::~AnimationController() |
| 502 { | 502 { |
| 503 } | 503 } |
| 504 | 504 |
| 505 void AnimationController::cancelAnimations(RenderObject* renderer) | 505 void AnimationController::cancelAnimations(RenderObject* renderer) |
| 506 { | 506 { |
| 507 if (!m_data->hasAnimations()) | 507 if (!m_data->hasAnimations()) |
| 508 return; | 508 return; |
| 509 | 509 |
| 510 if (m_data->clear(renderer)) { | 510 if (m_data->clear(renderer)) { |
| 511 Node* node = renderer->styledGeneratingNode(); | 511 Node* node = renderer->node(); |
| 512 ASSERT(!node || (node->document() && !node->document()->inPageCache())); | 512 ASSERT(!node || (node->document() && !node->document()->inPageCache())); |
| 513 node->setNeedsStyleRecalc(SyntheticStyleChange); | 513 node->setNeedsStyleRecalc(SyntheticStyleChange); |
| 514 } | 514 } |
| 515 } | 515 } |
| 516 | 516 |
| 517 PassRefPtr<RenderStyle> AnimationController::updateAnimations(RenderObject* rend
erer, RenderStyle* newStyle) | 517 PassRefPtr<RenderStyle> AnimationController::updateAnimations(RenderObject* rend
erer, RenderStyle* newStyle) |
| 518 { | 518 { |
| 519 // Don't do anything if we're in the cache | 519 // Don't do anything if we're in the cache |
| 520 if (!renderer->document() || renderer->document()->inPageCache()) | 520 if (!renderer->document() || renderer->document()->inPageCache()) |
| 521 return newStyle; | 521 return newStyle; |
| 522 | 522 |
| 523 RenderStyle* oldStyle = renderer->style(); | 523 RenderStyle* oldStyle = renderer->style(); |
| 524 | 524 |
| 525 if ((!oldStyle || (!oldStyle->animations() && !oldStyle->transitions())) &&
(!newStyle->animations() && !newStyle->transitions())) | 525 if ((!oldStyle || (!oldStyle->animations() && !oldStyle->transitions())) &&
(!newStyle->animations() && !newStyle->transitions())) |
| 526 return newStyle; | 526 return newStyle; |
| 527 | 527 |
| 528 // Don't run transitions when printing. | 528 // Don't run transitions when printing. |
| 529 if (renderer->view()->printing()) | 529 if (renderer->view()->printing()) |
| 530 return newStyle; | 530 return newStyle; |
| 531 | 531 |
| 532 // Fetch our current set of implicit animations from a hashtable. We then c
ompare them | 532 // Fetch our current set of implicit animations from a hashtable. We then c
ompare them |
| 533 // against the animations in the style and make sure we're in sync. If dest
ination values | 533 // against the animations in the style and make sure we're in sync. If dest
ination values |
| 534 // have changed, we reset the animation. We then do a blend to get new valu
es and we return | 534 // have changed, we reset the animation. We then do a blend to get new valu
es and we return |
| 535 // a new style. | 535 // a new style. |
| 536 ASSERT(renderer->node()); // FIXME: We do not animate generated content yet. |
| 536 | 537 |
| 537 RefPtr<CompositeAnimation> rendererAnimations = m_data->accessCompositeAnima
tion(renderer); | 538 RefPtr<CompositeAnimation> rendererAnimations = m_data->accessCompositeAnima
tion(renderer); |
| 538 RefPtr<RenderStyle> blendedStyle = rendererAnimations->animate(renderer, old
Style, newStyle); | 539 RefPtr<RenderStyle> blendedStyle = rendererAnimations->animate(renderer, old
Style, newStyle); |
| 539 | 540 |
| 540 if (renderer->parent() || newStyle->animations() || (oldStyle && oldStyle->a
nimations())) { | 541 if (renderer->parent() || newStyle->animations() || (oldStyle && oldStyle->a
nimations())) { |
| 541 m_data->updateAnimationTimerForRenderer(renderer); | 542 m_data->updateAnimationTimerForRenderer(renderer); |
| 542 #if ENABLE(REQUEST_ANIMATION_FRAME) | 543 #if ENABLE(REQUEST_ANIMATION_FRAME) |
| 543 if (FrameView* view = renderer->document()->view()) | 544 if (FrameView* view = renderer->document()->view()) |
| 544 view->scheduleAnimation(); | 545 view->scheduleAnimation(); |
| 545 #endif | 546 #endif |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 return false; | 642 return false; |
| 642 #endif | 643 #endif |
| 643 } | 644 } |
| 644 | 645 |
| 645 PassRefPtr<WebKitAnimationList> AnimationController::animationsForRenderer(Rende
rObject* renderer) const | 646 PassRefPtr<WebKitAnimationList> AnimationController::animationsForRenderer(Rende
rObject* renderer) const |
| 646 { | 647 { |
| 647 return m_data->animationsForRenderer(renderer); | 648 return m_data->animationsForRenderer(renderer); |
| 648 } | 649 } |
| 649 | 650 |
| 650 } // namespace WebCore | 651 } // namespace WebCore |
| OLD | NEW |