using System; using System.Drawing; using sd=System.Drawing; using sysdrawingfont=System.Drawing.Font; using sysdrawing2d=System.Drawing.Drawing2D; using System.IO; using System.Threading; using System.Windows.Forms; #if WINDOWS using SlimDX; #endif using BizHawk.Client.Common; using BizHawk.Bizware.BizwareGL; using OpenTK.Graphics.OpenGL; namespace BizHawk.Client.EmuHawk { /// /// Thinly wraps a BizwareGL.GraphicsControl for EmuHawk's needs /// public class PresentationPanel { public PresentationPanel() { GL = GlobalWin.GL; GraphicsControl = new GraphicsControl(GL); GraphicsControl.Dock = DockStyle.Fill; GraphicsControl.BackColor = Color.Black; //pass through these events to the form. we might need a more scalable solution for mousedown etc. for zapper and whatnot. //http://stackoverflow.com/questions/547172/pass-through-mouse-events-to-parent-control (HTTRANSPARENT) GraphicsControl.MouseDoubleClick += (o, e) => HandleFullscreenToggle(o, e); GraphicsControl.MouseClick += (o, e) => GlobalWin.MainForm.MainForm_MouseClick(o, e); } bool IsDisposed = false; public void Dispose() { if (IsDisposed) return; IsDisposed = true; GraphicsControl.Dispose(); } //graphics resources IGL GL; public GraphicsControl GraphicsControl; public Control Control { get { return GraphicsControl; } } public static implicit operator Control(PresentationPanel self) { return self.GraphicsControl; } private void HandleFullscreenToggle(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left && Control.ModifierKeys == Keys.Shift) { GlobalWin.MainForm.ToggleFullscreen(); } } public bool Resized { get; set; } public Size NativeSize { get { return GraphicsControl.ClientSize; } } } public interface IBlitterFont { } }