#ifndef ASH_DISPLAY_SCREEN_POSITION_CONTROLLER_H_
#define ASH_DISPLAY_SCREEN_POSITION_CONTROLLER_H_
#include <vector>
#include "ash/ash_export.h"
#include "base/memory/raw_ptr.h"
#include "ui/aura/client/screen_position_client.h"
namespace ash {
class ASH_EXPORT ScreenPositionController
: public aura::client::ScreenPositionClient {
public:
static void ConvertHostPointToRelativeToRootWindow(
aura::Window* root_window,
const std::vector<raw_ptr<aura::Window, VectorExperimental>>&
root_windows,
gfx::Point* point_in_host,
aura::Window** target_window);
ScreenPositionController() {}
ScreenPositionController(const ScreenPositionController&) = delete;
ScreenPositionController& operator=(const ScreenPositionController&) = delete;
~ScreenPositionController() override {}
void ConvertPointToScreen(const aura::Window* window,
gfx::PointF* point) override;
void ConvertPointFromScreen(const aura::Window* window,
gfx::PointF* point) override;
void ConvertHostPointToScreen(aura::Window* window,
gfx::Point* point) override;
void SetBounds(aura::Window* window,
const gfx::Rect& bounds,
const display::Display& display) override;
protected:
gfx::Point GetRootWindowOriginInScreen(
const aura::Window* root_window) override;
};
}
#endif