using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; namespace OpenTK.Platform { /// /// Describes a Windows.Form.Control, Windows.Forms.NativeWindow or OpenTK.GameWindow. /// public sealed class WindowInfo : IMutableWindowInfo { IMutableWindowInfo implementation; #region --- Constructors --- /// /// Detects the underlying platform and constructs a new WindowInfo class. /// /// Raised when the underlying platform is not supported. public WindowInfo() { switch (Environment.OSVersion.Platform) { case PlatformID.Unix: case (PlatformID)128: implementation = new X11.WindowInfo(); break; case PlatformID.Win32NT: case PlatformID.Win32S: case PlatformID.Win32Windows: case PlatformID.WinCE: implementation = new Windows.WindowInfo(); break; default: throw new PlatformNotSupportedException("Your Operating System is not supported. Please refer to http://opentk.sourceforge.net for more information."); } } /// /// Detects the underlying platform and constructs a new WindowInfo class describing the specified Control. /// /// The System.Windows.Forms.Control to get info from. public WindowInfo(Control control) : this() { implementation.CopyInfoFrom(implementation.GetInfoFrom(control)); } /// /// Detects the underlying platform and constructs a new WindowInfo class describing the specified NativeWindow. /// /// The System.Windows.Forms.NativeWindow to get info from. public WindowInfo(NativeWindow window) : this() { implementation.GetInfoFrom(window); } /// /// Detects the underlying platform and constructs a new WindowInfo class describing the specified GameWindow. /// /// The OpenTK.GameWindow to get info from. public WindowInfo(GameWindow window) : this() { implementation.GetInfoFrom(window); } #endregion #region --- IWindowInfo Members --- /// /// Gets the platform specific handle of the window described by the WindowInfo class. /// public IntPtr Handle { get { return implementation.Handle; } } /// /// Gets the parent of the window described by the WindowInfo class. /// public IWindowInfo Parent { get { return implementation.Parent; } } #endregion #region --- IMutableWindowInfo Members --- /// /// Updates the WindowInfo to describe the specified Control. /// /// The System.Windows.Forms.Control to describe. public IWindowInfo GetInfoFrom(Control control) { return implementation.GetInfoFrom(control); } /// /// Updates the WindowInfo to describe the specified NativeWindow. /// /// The System.Windows.Forms.NativeWindow to describe. public IWindowInfo GetInfoFrom(NativeWindow window) { return implementation.GetInfoFrom(window); } /// /// Updates the WindowInfo to describe the specified GameWindow. /// /// The OpenTK.GameWindow to describe. public IWindowInfo GetInfoFrom(GameWindow window) { return implementation.GetInfoFrom(window); } /// /// Updates the WindowInfo using the specified WindowInfo. /// /// The OpenTK.Platform.Window to get information from. public IWindowInfo GetInfoFrom(IWindowInfo info) { return implementation.GetInfoFrom(info); } public void CopyInfoFrom(IWindowInfo info) { implementation.CopyInfoFrom(info); } #endregion } }