1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef UI_PLATFORM_WINDOW_PLATFORM_WINDOW_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define UI_PLATFORM_WINDOW_PLATFORM_WINDOW_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h"
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/base/cursor/cursor.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace gfx {
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Rect;
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace ui {
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass PlatformWindowDelegate;
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Platform window.
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch//
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Each instance of PlatformWindow represents a single window in the
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// underlying platform windowing system (i.e. X11/Win/OSX).
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class PlatformWindow {
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~PlatformWindow() {}
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void Show() = 0;
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void Hide() = 0;
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void Close() = 0;
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Sets and gets the bounds of the platform-window. Note that the bounds is in
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // physical pixel coordinates.
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void SetBounds(const gfx::Rect& bounds) = 0;
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual gfx::Rect GetBounds() = 0;
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void SetCapture() = 0;
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void ReleaseCapture() = 0;
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void ToggleFullscreen() = 0;
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void Maximize() = 0;
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void Minimize() = 0;
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void Restore() = 0;
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void SetCursor(PlatformCursor cursor) = 0;
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void MoveCursorTo(const gfx::Point& location) = 0;
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace ui
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // UI_PLATFORM_WINDOW_PLATFORM_WINDOW_H_
51