namespace Dashboard.Windowing
{
///
/// Interface for a class that composites multiple windows together.
///
public interface ICompositor : IDisposable
{
void Composite(IPhysicalWindow window, IEnumerable windows);
}
///
/// Interface for classes that implement a window manager.
///
public interface IWindowManager : IEnumerable, IEventListener, IPaintable, IDisposable
{
///
/// The physical window that this window manager is associated with.
///
IPhysicalWindow PhysicalWindow { get; }
///
/// The compositor that will composite all virtual windows.
///
ICompositor Compositor { get; set; }
///
/// The window that is currently focused.
///
IVirtualWindow? FocusedWindow { get; }
///
/// Create a virtual window.
///
/// Virtual window handle.
IVirtualWindow CreateWindow();
///
/// Focus a virtual window, if it is owned by this window manager.
///
/// The window to focus.
void Focus(IVirtualWindow window);
}
}