using System; using Quik.CommandMachine; namespace Quik.PAL { /// <summary> /// An abstraction over the a window or a rendering context. /// </summary> public interface IQuikPort : IDisposable { /// <summary> /// Title of the window, if applicable. /// </summary> string Title { get; set; } /// <summary> /// Size of the window. /// </summary> QVec2 Size { get; set; } /// <summary> /// Position of the window in the coordinate system. /// </summary> QVec2 Position { get; set; } bool IsValid { get; } /// <summary> /// Called when an event for this port is raised. /// </summary> event EventHandler EventRaised; /// <summary> /// Focus the window, bringing it to the front. /// </summary> void Focus(); /// <summary> /// Show or hide the window. /// </summary> /// <param name="shown">True to show the window, false to hide.</param> void Show(bool shown = true); /// <summary> /// Paint the given command queue onto the port. /// </summary> /// <param name="queue">The command queue to paint.</param> void Paint(CommandQueue queue); } }