using System;
using Avalonia.Controls;
namespace Avalonia.Platform
{
public interface IWindowBaseImpl : ITopLevelImpl
{
///
/// Shows the top level.
///
void Show();
///
/// Hides the window.
///
void Hide();
///
/// Starts moving a window with left button being held. Should be called from left mouse button press event handler.
///
void BeginMoveDrag();
///
/// Starts resizing a window. This function is used if an application has window resizing controls.
/// Should be called from left mouse button press event handler
///
void BeginResizeDrag(WindowEdge edge);
///
/// Gets position of the window relatively to the screen
///
Point Position { get; set; }
///
/// Gets or sets a method called when the window's position changes.
///
Action PositionChanged { get; set; }
///
/// Activates the window.
///
void Activate();
///
/// Gets or sets a method called when the window is deactivated (loses focus).
///
Action Deactivated { get; set; }
///
/// Gets or sets a method called when the window is activated (receives focus).
///
Action Activated { get; set; }
///
/// Gets the platform window handle.
///
IPlatformHandle Handle { get; }
///
/// Gets the maximum size of a window on the system.
///
Size MaxClientSize { get; }
///
/// Sets the client size of the top level.
///
void Resize(Size clientSize);
///
/// Minimum width of the window.
///
///
void SetMinMaxSize(Size minSize, Size maxSize);
///
/// Sets whether this window appears on top of all other windows
///
void SetTopmost(bool value);
///
/// Gets platform specific display information
///
IScreenImpl Screen { get; }
}
}