103 lines
2.6 KiB
C#
103 lines
2.6 KiB
C#
|
using System.Drawing;
|
||
|
|
||
|
namespace Dashboard
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Base class of all Dashboard windows.
|
||
|
/// </summary>
|
||
|
public interface IWindow : IDisposable
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Name of the window.
|
||
|
/// </summary>
|
||
|
string Title { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// The size of the window that includes the window extents.
|
||
|
/// </summary>
|
||
|
SizeF OuterSize { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// The size of the window that excludes the window extents.
|
||
|
/// </summary>
|
||
|
SizeF ClientSize { get; set; }
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Base class for all Dashboard windows that are DPI-aware.
|
||
|
/// </summary>
|
||
|
public interface IDpiAwareWindow : IWindow
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// DPI of the window.
|
||
|
/// </summary>
|
||
|
float Dpi { get; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Scale of the window.
|
||
|
/// </summary>
|
||
|
float Scale { get; }
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// An object that represents a window in a virtual space, usually another window or a rendering system.
|
||
|
/// </summary>
|
||
|
public interface IVirtualWindow : IWindow
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Send an event to this window.
|
||
|
/// </summary>
|
||
|
/// <param name="args">The event arguments</param>
|
||
|
/// TODO:
|
||
|
void SendEvent(EventArgs args);
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Generic interface for the rendering system present in a <see cref="IPhysicalWindow"/>
|
||
|
/// </summary>
|
||
|
public interface IDeviceContext
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// The swap group for this device context.
|
||
|
/// </summary>
|
||
|
ISwapGroup SwapGroup { get; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// The size of the window framebuffer in pixels.
|
||
|
/// </summary>
|
||
|
Size FramebufferSize { get; }
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// Interface that is used to swap the buffers of
|
||
|
/// </summary>
|
||
|
public interface ISwapGroup
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// The swap interval for this swap group.
|
||
|
/// </summary>
|
||
|
public int SwapInterval { get; set; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// Swap buffers.
|
||
|
/// </summary>
|
||
|
void Swap();
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// An object that represents a native operating system window.
|
||
|
/// </summary>
|
||
|
public interface IPhysicalWindow : IWindow
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// The device context for this window.
|
||
|
/// </summary>
|
||
|
IDeviceContext DeviceContext { get; }
|
||
|
|
||
|
/// <summary>
|
||
|
/// True if the window is double buffered.
|
||
|
/// </summary>
|
||
|
public bool DoubleBuffered { get; }
|
||
|
}
|
||
|
}
|