12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/animation_registrar.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/layer_animation_controller.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AnimationRegistrar::AnimationRegistrar() {} 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AnimationRegistrar::~AnimationRegistrar() { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AnimationControllerMap copy = all_animation_controllers_; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (AnimationControllerMap::iterator iter = copy.begin(); 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) iter != copy.end(); 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ++iter) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) (*iter).second->SetAnimationRegistrar(NULL); 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_refptr<LayerAnimationController> 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AnimationRegistrar::GetAnimationControllerForId(int id) { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<LayerAnimationController> to_return; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!ContainsKey(all_animation_controllers_, id)) { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) to_return = LayerAnimationController::Create(id); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) to_return->SetAnimationRegistrar(this); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) all_animation_controllers_[id] = to_return.get(); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) to_return = all_animation_controllers_[id]; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return to_return; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AnimationRegistrar::DidActivateAnimationController( 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationController* controller) { 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) active_animation_controllers_[controller->id()] = controller; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AnimationRegistrar::DidDeactivateAnimationController( 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationController* controller) { 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (ContainsKey(active_animation_controllers_, controller->id())) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) active_animation_controllers_.erase(controller->id()); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AnimationRegistrar::RegisterAnimationController( 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationController* controller) { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) all_animation_controllers_[controller->id()] = controller; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AnimationRegistrar::UnregisterAnimationController( 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationController* controller) { 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (ContainsKey(all_animation_controllers_, controller->id())) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) all_animation_controllers_.erase(controller->id()); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DidDeactivateAnimationController(controller); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 58