74 lines
2.0 KiB
C#
74 lines
2.0 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// Thinly wraps a BizwareGL.GraphicsControl for EmuHawk's needs
|
|
/// </summary>
|
|
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)
|
|
{
|
|
//allow suppression of the toggle.. but if shift is pressed, always do the toggle
|
|
bool allowSuppress = Control.ModifierKeys != Keys.Shift;
|
|
GlobalWin.MainForm.ToggleFullscreen(allowSuppress);
|
|
}
|
|
}
|
|
|
|
public bool Resized { get; set; }
|
|
|
|
public Size NativeSize { get { return GraphicsControl.ClientSize; } }
|
|
}
|
|
|
|
|
|
|
|
public interface IBlitterFont { }
|
|
|
|
}
|