BMp view: make it a function

This commit is contained in:
alyosha-tas 2021-07-29 18:50:36 -04:00
parent 0f294a220e
commit fd765b4278
3 changed files with 9 additions and 8 deletions

View File

@ -90,10 +90,14 @@ namespace BizHawk.Client.EmuHawk
public unsafe void Clear() public unsafe void Clear()
{ {
var lockBits = Bmp.LockBits(new Rectangle(0, 0, Bmp.Width, Bmp.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); var lockBits = Bmp.LockBits(new Rectangle(0, 0, Bmp.Width, Bmp.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
byte* clear_out = (byte*)lockBits.Scan0; Clear_Selected_Region((byte*)lockBits.Scan0, (uint)(lockBits.Height * lockBits.Stride));
for (uint i = 0; i < (uint)(lockBits.Height * lockBits.Stride); i++) { clear_out[i] = 0xFF; }
Bmp.UnlockBits(lockBits); Bmp.UnlockBits(lockBits);
Refresh(); Refresh();
} }
public static unsafe void Clear_Selected_Region(byte* base_pos, uint num_bytes)
{
for (uint i = 0; i < num_bytes; i++) { base_pos[i] = 0xFF; }
}
} }
} }

View File

@ -356,8 +356,7 @@ namespace BizHawk.Client.EmuHawk
byte* oam = (byte*)_oam; byte* oam = (byte*)_oam;
// clear out the old sprite data // clear out the old sprite data
byte* clear_out = (byte*)lockData.Scan0; BmpView.Clear_Selected_Region((byte*)lockData.Scan0, (uint)(lockData.Height * lockData.Stride));
for (uint i = 0; i < (uint)(lockData.Height * lockData.Stride); i++) { clear_out[i] = 0xFF; }
for (int s = 0; s < 40; s++) for (int s = 0; s < 40; s++)
{ {

View File

@ -414,8 +414,7 @@ namespace BizHawk.Client.EmuHawk
Bitmap bmp = mbv.BmpView.Bmp; Bitmap bmp = mbv.BmpView.Bmp;
var lockData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); var lockData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
byte* clear_out = (byte*)lockData.Scan0; BmpView.Clear_Selected_Region((byte*)lockData.Scan0, (uint)(lockData.Height * lockData.Stride));
for (uint i = 0; i < (uint)(lockData.Height * lockData.Stride); i++) { clear_out[i] = 0xFF; }
int* pixels = (int*)lockData.Scan0; int* pixels = (int*)lockData.Scan0;
int pitch = lockData.Stride / sizeof(int); int pitch = lockData.Stride / sizeof(int);
@ -507,8 +506,7 @@ namespace BizHawk.Client.EmuHawk
if (tophalfonly) if (tophalfonly)
{ {
byte* clear_out = (byte*)lockData.Scan0; BmpView.Clear_Selected_Region((byte*)lockData.Scan0, (uint)(128 * lockData.Stride));
for (uint i = 0; i < (uint)(128 * lockData.Stride); i++) { clear_out[i] = 0xFF; }
pixels += 128 * pitch; pixels += 128 * pitch;
tiles += 16384; tiles += 16384;