Index: ui/views/corewm/shadow.cc |
diff --git a/ui/views/corewm/shadow.cc b/ui/views/corewm/shadow.cc |
deleted file mode 100644 |
index 4411c8d56373d8f8bcd8a5c0e946f189d88cffb7..0000000000000000000000000000000000000000 |
--- a/ui/views/corewm/shadow.cc |
+++ /dev/null |
@@ -1,195 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "ui/views/corewm/shadow.h" |
- |
-#include "grit/ui_resources.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "ui/compositor/scoped_layer_animation_settings.h" |
-#include "ui/views/corewm/image_grid.h" |
- |
-namespace { |
- |
-// Shadow opacity for different styles. |
-const float kActiveShadowOpacity = 1.0f; |
-const float kInactiveShadowOpacity = 0.2f; |
-const float kSmallShadowOpacity = 1.0f; |
- |
-// Interior inset for different styles. |
-const int kActiveInteriorInset = 0; |
-const int kInactiveInteriorInset = 0; |
-const int kSmallInteriorInset = 5; |
- |
-// Duration for opacity animation in milliseconds. |
-const int kShadowAnimationDurationMs = 100; |
- |
-float GetOpacityForStyle(views::corewm::Shadow::Style style) { |
- switch (style) { |
- case views::corewm::Shadow::STYLE_ACTIVE: |
- return kActiveShadowOpacity; |
- case views::corewm::Shadow::STYLE_INACTIVE: |
- return kInactiveShadowOpacity; |
- case views::corewm::Shadow::STYLE_SMALL: |
- return kSmallShadowOpacity; |
- } |
- return 1.0f; |
-} |
- |
-int GetInteriorInsetForStyle(views::corewm::Shadow::Style style) { |
- switch (style) { |
- case views::corewm::Shadow::STYLE_ACTIVE: |
- return kActiveInteriorInset; |
- case views::corewm::Shadow::STYLE_INACTIVE: |
- return kInactiveInteriorInset; |
- case views::corewm::Shadow::STYLE_SMALL: |
- return kSmallInteriorInset; |
- } |
- return 0; |
-} |
- |
-} // namespace |
- |
-namespace views { |
-namespace corewm { |
- |
-Shadow::Shadow() : style_(STYLE_ACTIVE), interior_inset_(0) { |
-} |
- |
-Shadow::~Shadow() { |
-} |
- |
-void Shadow::Init(Style style) { |
- style_ = style; |
- image_grid_.reset(new ImageGrid); |
- UpdateImagesForStyle(); |
- image_grid_->layer()->set_name("Shadow"); |
- image_grid_->layer()->SetOpacity(GetOpacityForStyle(style_)); |
-} |
- |
-void Shadow::SetContentBounds(const gfx::Rect& content_bounds) { |
- content_bounds_ = content_bounds; |
- UpdateImageGridBounds(); |
-} |
- |
-ui::Layer* Shadow::layer() const { |
- return image_grid_->layer(); |
-} |
- |
-void Shadow::SetStyle(Style style) { |
- if (style_ == style) |
- return; |
- |
- Style old_style = style_; |
- style_ = style; |
- |
- // Stop waiting for any as yet unfinished implicit animations. |
- StopObservingImplicitAnimations(); |
- |
- // If we're switching to or from the small style, don't bother with |
- // animations. |
- if (style == STYLE_SMALL || old_style == STYLE_SMALL) { |
- UpdateImagesForStyle(); |
- image_grid_->layer()->SetOpacity(GetOpacityForStyle(style)); |
- return; |
- } |
- |
- // If we're becoming active, switch images now. Because the inactive image |
- // has a very low opacity the switch isn't noticeable and this approach |
- // allows us to use only a single set of shadow images at a time. |
- if (style == STYLE_ACTIVE) { |
- UpdateImagesForStyle(); |
- // Opacity was baked into inactive image, start opacity low to match. |
- image_grid_->layer()->SetOpacity(kInactiveShadowOpacity); |
- } |
- |
- { |
- // Property sets within this scope will be implicitly animated. |
- ui::ScopedLayerAnimationSettings settings(layer()->GetAnimator()); |
- settings.AddObserver(this); |
- settings.SetTransitionDuration( |
- base::TimeDelta::FromMilliseconds(kShadowAnimationDurationMs)); |
- switch (style_) { |
- case STYLE_ACTIVE: |
- image_grid_->layer()->SetOpacity(kActiveShadowOpacity); |
- break; |
- case STYLE_INACTIVE: |
- image_grid_->layer()->SetOpacity(kInactiveShadowOpacity); |
- break; |
- default: |
- NOTREACHED() << "Unhandled style " << style_; |
- break; |
- } |
- } |
-} |
- |
-void Shadow::OnImplicitAnimationsCompleted() { |
- // If we just finished going inactive, switch images. This doesn't cause |
- // a visual pop because the inactive image opacity is so low. |
- if (style_ == STYLE_INACTIVE) { |
- UpdateImagesForStyle(); |
- // Opacity is baked into inactive image, so set fully opaque. |
- image_grid_->layer()->SetOpacity(1.0f); |
- } |
-} |
- |
-void Shadow::UpdateImagesForStyle() { |
- ResourceBundle& res = ResourceBundle::GetSharedInstance(); |
- switch (style_) { |
- case STYLE_ACTIVE: |
- image_grid_->SetImages( |
- &res.GetImageNamed(IDR_AURA_SHADOW_ACTIVE_TOP_LEFT), |
- &res.GetImageNamed(IDR_AURA_SHADOW_ACTIVE_TOP), |
- &res.GetImageNamed(IDR_AURA_SHADOW_ACTIVE_TOP_RIGHT), |
- &res.GetImageNamed(IDR_AURA_SHADOW_ACTIVE_LEFT), |
- NULL, |
- &res.GetImageNamed(IDR_AURA_SHADOW_ACTIVE_RIGHT), |
- &res.GetImageNamed(IDR_AURA_SHADOW_ACTIVE_BOTTOM_LEFT), |
- &res.GetImageNamed(IDR_AURA_SHADOW_ACTIVE_BOTTOM), |
- &res.GetImageNamed(IDR_AURA_SHADOW_ACTIVE_BOTTOM_RIGHT)); |
- break; |
- case STYLE_INACTIVE: |
- image_grid_->SetImages( |
- &res.GetImageNamed(IDR_AURA_SHADOW_INACTIVE_TOP_LEFT), |
- &res.GetImageNamed(IDR_AURA_SHADOW_INACTIVE_TOP), |
- &res.GetImageNamed(IDR_AURA_SHADOW_INACTIVE_TOP_RIGHT), |
- &res.GetImageNamed(IDR_AURA_SHADOW_INACTIVE_LEFT), |
- NULL, |
- &res.GetImageNamed(IDR_AURA_SHADOW_INACTIVE_RIGHT), |
- &res.GetImageNamed(IDR_AURA_SHADOW_INACTIVE_BOTTOM_LEFT), |
- &res.GetImageNamed(IDR_AURA_SHADOW_INACTIVE_BOTTOM), |
- &res.GetImageNamed(IDR_AURA_SHADOW_INACTIVE_BOTTOM_RIGHT)); |
- break; |
- case STYLE_SMALL: |
- image_grid_->SetImages( |
- &res.GetImageNamed(IDR_WINDOW_BUBBLE_SHADOW_SMALL_TOP_LEFT), |
- &res.GetImageNamed(IDR_WINDOW_BUBBLE_SHADOW_SMALL_TOP), |
- &res.GetImageNamed(IDR_WINDOW_BUBBLE_SHADOW_SMALL_TOP_RIGHT), |
- &res.GetImageNamed(IDR_WINDOW_BUBBLE_SHADOW_SMALL_LEFT), |
- NULL, |
- &res.GetImageNamed(IDR_WINDOW_BUBBLE_SHADOW_SMALL_RIGHT), |
- &res.GetImageNamed(IDR_WINDOW_BUBBLE_SHADOW_SMALL_BOTTOM_LEFT), |
- &res.GetImageNamed(IDR_WINDOW_BUBBLE_SHADOW_SMALL_BOTTOM), |
- &res.GetImageNamed(IDR_WINDOW_BUBBLE_SHADOW_SMALL_BOTTOM_RIGHT)); |
- break; |
- default: |
- NOTREACHED() << "Unhandled style " << style_; |
- break; |
- } |
- |
- // Update interior inset for style. |
- interior_inset_ = GetInteriorInsetForStyle(style_); |
- |
- // Image sizes may have changed. |
- UpdateImageGridBounds(); |
-} |
- |
-void Shadow::UpdateImageGridBounds() { |
- // Update bounds based on content bounds and image sizes. |
- gfx::Rect image_grid_bounds = content_bounds_; |
- image_grid_bounds.Inset(interior_inset_, interior_inset_); |
- image_grid_->SetContentBounds(image_grid_bounds); |
-} |
- |
-} // namespace corewm |
-} // namespace views |