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 UI_AURA_SCREEN_POSITION_CLIENT_H_
6 #define UI_AURA_SCREEN_POSITION_CLIENT_H_
8 #include "ui/aura/aura_export.h"
9 #include "ui/aura/window.h"
20 // An interface implemented by an object that changes coordinates within a root
21 // Window into system coordinates.
22 class AURA_EXPORT ScreenPositionClient
{
24 virtual ~ScreenPositionClient() {}
26 // Converts the |screen_point| from a given |window|'s coordinate space
27 // into screen coordinate space.
28 virtual void ConvertPointToScreen(const Window
* window
,
29 gfx::Point
* point
) = 0;
30 virtual void ConvertPointFromScreen(const Window
* window
,
31 gfx::Point
* point
) = 0;
32 // Converts the |screen_point| from root window host's coordinate of
33 // into screen coordinate space.
34 // A typical example of using this function instead of ConvertPointToScreen is
35 // when X's native input is captured by a drag operation.
36 // See the comments for ash::GetRootWindowRelativeToWindow for details.
37 virtual void ConvertHostPointToScreen(Window
* root_window
,
38 gfx::Point
* point
) = 0;
39 // Sets the bounds of the window. The implementation is responsible
40 // for finding out and translating the right coordinates for the |window|.
41 virtual void SetBounds(Window
* window
,
42 const gfx::Rect
& bounds
,
43 const gfx::Display
& display
) = 0;
46 // Sets/Gets the activation client on the Window.
47 AURA_EXPORT
void SetScreenPositionClient(Window
* root_window
,
48 ScreenPositionClient
* client
);
49 AURA_EXPORT ScreenPositionClient
* GetScreenPositionClient(
50 const Window
* root_window
);
52 } // namespace clients
55 #endif // UI_AURA_SCREEN_POSITION_CLIENT_H_