Index: ash/wm/window_animations.cc |
diff --git a/ash/wm/window_animations.cc b/ash/wm/window_animations.cc |
index 8faaef550236a3fc11f09f0ac14ddaf637257169..e18a4756a2203e3e98fb5387634f71d4e306cc90 100644 |
--- a/ash/wm/window_animations.cc |
+++ b/ash/wm/window_animations.cc |
@@ -69,6 +69,15 @@ const int kDefaultAnimationDurationForMenuMS = 150; |
const float kCrossFadeDurationMinMs = 100.f; |
const float kCrossFadeDurationMaxMs = 400.f; |
+// Durations for the brightness/grayscale fade animation, in milliseconds. |
+const int kBrightnessGrayscaleFadeDurationMs = 2000; |
sky
2012/07/19 19:22:19
This is a really long time. Are you sure we want 2
Nikita (slow)
2012/07/19 20:47:09
Yes, that what it should look like according to mo
Nikita (slow)
2012/07/20 18:21:29
Confirmed with UX.
|
+ |
+// Brightness/grayscale values for hide/show window animations. |
+const float kWindowAnimation_HideBrightness = 1.f; |
+const float kWindowAnimation_HideGrayscale = 1.f; |
+const float kWindowAnimation_ShowBrightness = 0.f; |
+const float kWindowAnimation_ShowGrayscale = 0.f; |
+ |
const float kWindowAnimation_HideOpacity = 0.f; |
const float kWindowAnimation_ShowOpacity = 1.f; |
const float kWindowAnimation_TranslateFactor = -0.025f; |
@@ -465,6 +474,36 @@ void AnimateHideWindow_Minimize(aura::Window* window) { |
AddLayerAnimationsForMinimize(window, false); |
} |
+void AnimateShowWindow_BrightnessGrayscale(aura::Window* window) { |
+ window->layer()->set_delegate(window); |
+ window->layer()->SetOpacity(kWindowAnimation_ShowOpacity); |
+ window->layer()->SetLayerBrightness(kWindowAnimation_HideBrightness); |
+ window->layer()->SetLayerGrayscale(kWindowAnimation_HideGrayscale); |
+ |
+ window->layer()->SetVisible(true); |
+ |
+ scoped_ptr<ui::LayerAnimationSequence> brightness_sequence( |
+ new ui::LayerAnimationSequence()); |
+ scoped_ptr<ui::LayerAnimationSequence> grayscale_sequence( |
+ new ui::LayerAnimationSequence()); |
+ |
+ brightness_sequence->AddElement( |
+ ui::LayerAnimationElement::CreateBrightnessElement( |
+ kWindowAnimation_ShowBrightness, |
+ base::TimeDelta::FromMilliseconds( |
+ kBrightnessGrayscaleFadeDurationMs))); |
+ grayscale_sequence->AddElement( |
+ ui::LayerAnimationElement::CreateGrayscaleElement( |
+ kWindowAnimation_ShowGrayscale, |
+ base::TimeDelta::FromMilliseconds( |
+ kBrightnessGrayscaleFadeDurationMs))); |
+ |
+ std::vector<ui::LayerAnimationSequence*> animations; |
+ animations.push_back(brightness_sequence.release()); |
+ animations.push_back(grayscale_sequence.release()); |
+ window->layer()->GetAnimator()->ScheduleTogether(animations); |
+} |
+ |
bool AnimateShowWindow(aura::Window* window) { |
if (!HasWindowVisibilityAnimationTransition(window, ANIMATE_SHOW)) |
return false; |
@@ -485,6 +524,9 @@ bool AnimateShowWindow(aura::Window* window) { |
case WINDOW_VISIBILITY_ANIMATION_TYPE_MINIMIZE: |
AnimateShowWindow_Minimize(window); |
return true; |
+ case WINDOW_VISIBILITY_ANIMATION_TYPE_BRIGHTNESS_GRAYSCALE: |
sky
2012/07/19 19:22:19
What about the hide case?
Nikita (slow)
2012/07/19 20:47:09
Yes, I might refactor code a bit to support revers
Nikita (slow)
2012/07/20 18:21:29
Done.
|
+ AnimateShowWindow_BrightnessGrayscale(window); |
+ return true; |
default: |
NOTREACHED(); |
return false; |