- add sources.
[platform/framework/web/crosswalk.git] / src / ash / wm / resize_shadow.h
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.
4
5 #ifndef ASH_WM_RESIZE_SHADOW_H_
6 #define ASH_WM_RESIZE_SHADOW_H_
7
8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h"
10
11 namespace aura {
12 class Window;
13 }
14 namespace gfx {
15 class Rect;
16 }
17 namespace ui {
18 class Layer;
19 }
20 namespace views {
21 namespace corewm {
22 class ImageGrid;
23 }
24 }
25
26 namespace ash {
27 namespace internal {
28
29 // A class to render the resize edge effect when the user moves their mouse
30 // over a sizing edge.  This is just a visual effect; the actual resize is
31 // handled by the EventFilter.
32 class ResizeShadow {
33  public:
34   ResizeShadow();
35   ~ResizeShadow();
36
37   // Initializes the resize effect layers for a given |window|.
38   void Init(aura::Window* window);
39
40   // Shows resize effects for one or more edges based on a |hit_test| code, such
41   // as HTRIGHT or HTBOTTOMRIGHT.
42   void ShowForHitTest(int hit_test);
43
44   // Hides all resize effects.
45   void Hide();
46
47   // Updates the effect positions based on the |bounds| of the window.
48   void Layout(const gfx::Rect& bounds);
49
50   int GetLastHitTestForTest() const {
51     return last_hit_test_;
52   }
53
54  private:
55   // Images for the shadow effect.
56   scoped_ptr<views::corewm::ImageGrid> image_grid_;
57
58   // Hit test value from last call to ShowForHitTest().  Used to prevent
59   // repeatedly triggering the same animations for the same hit.
60   int last_hit_test_;
61
62   DISALLOW_COPY_AND_ASSIGN(ResizeShadow);
63 };
64
65 }  // namespace internal
66 }  // namespace ash
67
68 #endif  // ASH_WM_RESIZE_SHADOW_H_