1// Copyright 2014 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 UI_PLATFORM_WINDOW_PLATFORM_WINDOW_H_
6#define UI_PLATFORM_WINDOW_PLATFORM_WINDOW_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "ui/base/cursor/cursor.h"
10
11namespace gfx {
12class Rect;
13}
14
15namespace ui {
16
17class PlatformWindowDelegate;
18
19// Platform window.
20//
21// Each instance of PlatformWindow represents a single window in the
22// underlying platform windowing system (i.e. X11/Win/OSX).
23class PlatformWindow {
24 public:
25  virtual ~PlatformWindow() {}
26
27  virtual void Show() = 0;
28  virtual void Hide() = 0;
29  virtual void Close() = 0;
30
31  // Sets and gets the bounds of the platform-window. Note that the bounds is in
32  // physical pixel coordinates.
33  virtual void SetBounds(const gfx::Rect& bounds) = 0;
34  virtual gfx::Rect GetBounds() = 0;
35
36  virtual void SetCapture() = 0;
37  virtual void ReleaseCapture() = 0;
38
39  virtual void ToggleFullscreen() = 0;
40  virtual void Maximize() = 0;
41  virtual void Minimize() = 0;
42  virtual void Restore() = 0;
43
44  virtual void SetCursor(PlatformCursor cursor) = 0;
45  virtual void MoveCursorTo(const gfx::Point& location) = 0;
46};
47
48}  // namespace ui
49
50#endif  // UI_PLATFORM_WINDOW_PLATFORM_WINDOW_H_
51