Roll src/third_party/skia fd0ecf4:d803cda
[chromium-blink-merge.git] / ash / wm / resize_shadow.h
blob6add50f775562108164be449a362b8f3b6a06477
1 // Copyright (c) 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.
5 #ifndef ASH_WM_RESIZE_SHADOW_H_
6 #define ASH_WM_RESIZE_SHADOW_H_
8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h"
11 namespace aura {
12 class Window;
14 namespace gfx {
15 class Rect;
17 namespace ui {
18 class Layer;
20 namespace wm {
21 class ImageGrid;
24 namespace ash {
26 // A class to render the resize edge effect when the user moves their mouse
27 // over a sizing edge. This is just a visual effect; the actual resize is
28 // handled by the EventFilter.
29 class ResizeShadow {
30 public:
31 ResizeShadow();
32 ~ResizeShadow();
34 // Initializes the resize effect layers for a given |window|.
35 void Init(aura::Window* window);
37 // Shows resize effects for one or more edges based on a |hit_test| code, such
38 // as HTRIGHT or HTBOTTOMRIGHT.
39 void ShowForHitTest(int hit_test);
41 // Hides all resize effects.
42 void Hide();
44 // Updates the effect positions based on the |bounds| of the window.
45 void Layout(const gfx::Rect& bounds);
47 int GetLastHitTestForTest() const {
48 return last_hit_test_;
51 private:
52 // Images for the shadow effect.
53 scoped_ptr< ::wm::ImageGrid> image_grid_;
55 // Hit test value from last call to ShowForHitTest(). Used to prevent
56 // repeatedly triggering the same animations for the same hit.
57 int last_hit_test_;
59 DISALLOW_COPY_AND_ASSIGN(ResizeShadow);
62 } // namespace ash
64 #endif // ASH_WM_RESIZE_SHADOW_H_