// 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. #ifndef ASH_WM_RESIZE_SHADOW_H_ #define ASH_WM_RESIZE_SHADOW_H_ #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" namespace aura { class Window; } namespace gfx { class Rect; } namespace ui { class Layer; } namespace wm { class ImageGrid; } namespace ash { // A class to render the resize edge effect when the user moves their mouse // over a sizing edge. This is just a visual effect; the actual resize is // handled by the EventFilter. class ResizeShadow { public: ResizeShadow(); ~ResizeShadow(); // Initializes the resize effect layers for a given |window|. void Init(aura::Window* window); // Shows resize effects for one or more edges based on a |hit_test| code, such // as HTRIGHT or HTBOTTOMRIGHT. void ShowForHitTest(int hit_test); // Hides all resize effects. void Hide(); // Updates the effect positions based on the |bounds| of the window. void Layout(const gfx::Rect& bounds); int GetLastHitTestForTest() const { return last_hit_test_; } private: // Images for the shadow effect. scoped_ptr< ::wm::ImageGrid> image_grid_; // Hit test value from last call to ShowForHitTest(). Used to prevent // repeatedly triggering the same animations for the same hit. int last_hit_test_; DISALLOW_COPY_AND_ASSIGN(ResizeShadow); }; } // namespace ash #endif // ASH_WM_RESIZE_SHADOW_H_