Home | History | Annotate | Download | only in animation
      1 // Copyright 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "cc/animation/animation_registrar.h"
      6 
      7 #include "cc/animation/layer_animation_controller.h"
      8 
      9 namespace cc {
     10 
     11 AnimationRegistrar::AnimationRegistrar() : supports_scroll_animations_(false) {
     12 }
     13 
     14 AnimationRegistrar::~AnimationRegistrar() {
     15   AnimationControllerMap copy = all_animation_controllers_;
     16   for (AnimationControllerMap::iterator iter = copy.begin();
     17        iter != copy.end();
     18        ++iter)
     19     (*iter).second->SetAnimationRegistrar(NULL);
     20 }
     21 
     22 scoped_refptr<LayerAnimationController>
     23 AnimationRegistrar::GetAnimationControllerForId(int id) {
     24   scoped_refptr<LayerAnimationController> to_return;
     25   if (!ContainsKey(all_animation_controllers_, id)) {
     26     to_return = LayerAnimationController::Create(id);
     27     to_return->SetAnimationRegistrar(this);
     28     all_animation_controllers_[id] = to_return.get();
     29   } else {
     30     to_return = all_animation_controllers_[id];
     31   }
     32   return to_return;
     33 }
     34 
     35 void AnimationRegistrar::DidActivateAnimationController(
     36     LayerAnimationController* controller) {
     37   active_animation_controllers_[controller->id()] = controller;
     38 }
     39 
     40 void AnimationRegistrar::DidDeactivateAnimationController(
     41     LayerAnimationController* controller) {
     42   if (ContainsKey(active_animation_controllers_, controller->id()))
     43     active_animation_controllers_.erase(controller->id());
     44 }
     45 
     46 void AnimationRegistrar::RegisterAnimationController(
     47     LayerAnimationController* controller) {
     48   all_animation_controllers_[controller->id()] = controller;
     49 }
     50 
     51 void AnimationRegistrar::UnregisterAnimationController(
     52     LayerAnimationController* controller) {
     53   if (ContainsKey(all_animation_controllers_, controller->id()))
     54     all_animation_controllers_.erase(controller->id());
     55   DidDeactivateAnimationController(controller);
     56 }
     57 
     58 }  // namespace cc
     59