Updating trunk VERSION from 843.0 to 844.0
[chromium-blink-merge.git] / views / layer_property_setter.cc
blobe5b6e94fbb24b607d54450f305184d58aa6964d4
1 // Copyright (c) 2011 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.
5 #include "views/layer_property_setter.h"
7 #include "base/scoped_ptr.h"
8 #include "ui/gfx/compositor/compositor.h"
9 #include "ui/gfx/compositor/layer.h"
10 #include "ui/gfx/compositor/layer_animator.h"
12 namespace views {
14 namespace {
16 // DefaultSetter ---------------------------------------------------------------
18 class DefaultSetter : public LayerPropertySetter {
19 public:
20 DefaultSetter();
22 // LayerPropertySetter:
23 virtual void Installed(ui::Layer* layer) OVERRIDE;
24 virtual void Uninstalled(ui::Layer* layer) OVERRIDE;
25 virtual void SetTransform(ui::Layer* layer,
26 const ui::Transform& transform) OVERRIDE;
27 virtual void SetBounds(ui::Layer* layer, const gfx::Rect& bounds) OVERRIDE;
29 private:
30 DISALLOW_COPY_AND_ASSIGN(DefaultSetter);
33 DefaultSetter::DefaultSetter() {
36 void DefaultSetter::Installed(ui::Layer* layer) {
39 void DefaultSetter::Uninstalled(ui::Layer* layer) {
42 void DefaultSetter::SetTransform(ui::Layer* layer,
43 const ui::Transform& transform) {
44 layer->SetTransform(transform);
47 void DefaultSetter::SetBounds(ui::Layer* layer, const gfx::Rect& bounds) {
48 layer->SetBounds(bounds);
51 // AnimatingSetter -------------------------------------------------------------
53 class AnimatingSetter : public LayerPropertySetter {
54 public:
55 AnimatingSetter();
57 // LayerPropertySetter:
58 virtual void Installed(ui::Layer* layer) OVERRIDE;
59 virtual void Uninstalled(ui::Layer* layer) OVERRIDE;
60 virtual void SetTransform(ui::Layer* layer,
61 const ui::Transform& transform) OVERRIDE;
62 virtual void SetBounds(ui::Layer* layer, const gfx::Rect& bounds) OVERRIDE;
64 private:
65 scoped_ptr<ui::LayerAnimator> animator_;
67 DISALLOW_COPY_AND_ASSIGN(AnimatingSetter);
70 AnimatingSetter::AnimatingSetter() {
73 void AnimatingSetter::Installed(ui::Layer* layer) {
74 animator_.reset(new ui::LayerAnimator(layer));
77 void AnimatingSetter::Uninstalled(ui::Layer* layer) {
78 animator_.reset();
81 void AnimatingSetter::SetTransform(ui::Layer* layer,
82 const ui::Transform& transform) {
83 animator_->AnimateTransform(transform);
86 void AnimatingSetter::SetBounds(ui::Layer* layer, const gfx::Rect& bounds) {
87 if (bounds.size() == animator_->layer()->bounds().size())
88 animator_->AnimateToPoint(bounds.origin());
89 else
90 animator_->StopAnimatingToPoint();
93 } // namespace
95 // LayerPropertySetter ---------------------------------------------------------
97 // static
98 LayerPropertySetter* LayerPropertySetter::CreateDefaultSetter() {
99 return new DefaultSetter;
102 // static
103 LayerPropertySetter* LayerPropertySetter::CreateAnimatingSetter() {
104 return new AnimatingSetter();
107 } // namespace views