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