simplify renderer api
This commit is contained in:
parent
ca2767c536
commit
9dc91e508e
|
@ -43,8 +43,6 @@ namespace BizHawk.Client.EmuHawk.CustomControls
|
|||
DeleteObject(fc.Value.HFont);
|
||||
}
|
||||
|
||||
EndOffScreenBitmap();
|
||||
|
||||
System.Diagnostics.Debug.Assert(_hdc == IntPtr.Zero, "Disposed a GDIRenderer while it held an HDC");
|
||||
System.Diagnostics.Debug.Assert(_g == null, "Disposed a GDIRenderer while it held a Graphics");
|
||||
}
|
||||
|
@ -71,12 +69,14 @@ namespace BizHawk.Client.EmuHawk.CustomControls
|
|||
DeleteObject(hBmp);
|
||||
}
|
||||
|
||||
public IDisposable LockGraphics(Graphics g)
|
||||
public IDisposable LockGraphics(Graphics g, int width, int height)
|
||||
{
|
||||
_g = g;
|
||||
_hdc = g.GetHdc();
|
||||
SetBkMode(_hdc, BkModes.TRANSPARENT);
|
||||
return new GdiGraphicsLock(this);
|
||||
var l = new GdiGraphicsLock(this);
|
||||
StartOffScreenBitmap(width, height);
|
||||
return l;
|
||||
}
|
||||
|
||||
public Size MeasureString(string str, Font font)
|
||||
|
@ -183,7 +183,7 @@ namespace BizHawk.Client.EmuHawk.CustomControls
|
|||
private int _bitW;
|
||||
private int _bitH;
|
||||
|
||||
public void StartOffScreenBitmap(int width, int height)
|
||||
private void StartOffScreenBitmap(int width, int height)
|
||||
{
|
||||
_bitW = width;
|
||||
_bitH = height;
|
||||
|
@ -194,7 +194,7 @@ namespace BizHawk.Client.EmuHawk.CustomControls
|
|||
SetBkMode(_bitHdc, BkModes.TRANSPARENT);
|
||||
}
|
||||
|
||||
public void EndOffScreenBitmap()
|
||||
private void EndOffScreenBitmap()
|
||||
{
|
||||
_bitW = 0;
|
||||
_bitH = 0;
|
||||
|
@ -206,7 +206,7 @@ namespace BizHawk.Client.EmuHawk.CustomControls
|
|||
_bitMap = IntPtr.Zero;
|
||||
}
|
||||
|
||||
public void CopyToScreen()
|
||||
private void CopyToScreen()
|
||||
{
|
||||
BitBlt(_hdc, 0, 0, _bitW, _bitH, _bitHdc, 0, 0, 0x00CC0020);
|
||||
}
|
||||
|
@ -448,6 +448,8 @@ namespace BizHawk.Client.EmuHawk.CustomControls
|
|||
|
||||
public void Dispose()
|
||||
{
|
||||
_gdi.CopyToScreen();
|
||||
_gdi.EndOffScreenBitmap();
|
||||
_gdi._g.ReleaseHdc(_gdi._hdc);
|
||||
_gdi._hdc = IntPtr.Zero;
|
||||
_gdi._g = null;
|
||||
|
|
|
@ -8,11 +8,7 @@ namespace BizHawk.Client.EmuHawk.CustomControls
|
|||
/// <summary>
|
||||
/// Required to use before calling drawing methods
|
||||
/// </summary>
|
||||
IDisposable LockGraphics(Graphics g);
|
||||
|
||||
void StartOffScreenBitmap(int width, int height);
|
||||
void EndOffScreenBitmap();
|
||||
void CopyToScreen();
|
||||
IDisposable LockGraphics(Graphics g, int width, int height);
|
||||
|
||||
/// <summary>
|
||||
/// Measure the width and height of string <paramref name="str"/> when drawn on device context HDC
|
||||
|
|
|
@ -10,10 +10,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
using (_renderer.LockGraphics(e.Graphics))
|
||||
using (_renderer.LockGraphics(e.Graphics, Width, Height))
|
||||
{
|
||||
_renderer.StartOffScreenBitmap(Width, Height);
|
||||
|
||||
// White Background
|
||||
_renderer.SetBrush(Color.White);
|
||||
_renderer.SetSolidPen(Color.White);
|
||||
|
@ -38,9 +36,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
DrawColumnDrag(e);
|
||||
DrawCellDrag(e);
|
||||
|
||||
_renderer.CopyToScreen();
|
||||
_renderer.EndOffScreenBitmap();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_renderer = new GdiRenderer();
|
||||
|
||||
using (var g = CreateGraphics())
|
||||
using (_renderer.LockGraphics(g))
|
||||
using (_renderer.LockGraphics(g, Width, Height))
|
||||
{
|
||||
_charSize = _renderer.MeasureString("A", commonFont); // TODO make this a property so changing it updates other values.
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue