From 0d07050bcb9ae10f1ed1253af780c6438bf349d3 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Fri, 11 Sep 2020 22:39:18 +0200 Subject: [PATCH] Remove the need for ZeroMemory --- Source/Core/Data/TEXTURESImage.cs | 2 +- Source/Core/Data/TextureImage.cs | 2 +- Source/Core/General/General.cs | 40 +++++++++---------------------- 3 files changed, 13 insertions(+), 31 deletions(-) diff --git a/Source/Core/Data/TEXTURESImage.cs b/Source/Core/Data/TEXTURESImage.cs index 5cc76cb4..698c5b15 100755 --- a/Source/Core/Data/TEXTURESImage.cs +++ b/Source/Core/Data/TEXTURESImage.cs @@ -116,7 +116,7 @@ namespace CodeImp.DoomBuilder.Data bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb); BitmapData bitmapdata = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); PixelColor* pixels = (PixelColor*)bitmapdata.Scan0.ToPointer(); - General.ZeroMemory(new IntPtr(pixels), width * height * sizeof(PixelColor)); + General.ZeroPixels(pixels, width * height); bitmap.UnlockBits(bitmapdata); g = Graphics.FromImage(bitmap); } diff --git a/Source/Core/Data/TextureImage.cs b/Source/Core/Data/TextureImage.cs index 5abd35e1..7ec1527b 100755 --- a/Source/Core/Data/TextureImage.cs +++ b/Source/Core/Data/TextureImage.cs @@ -88,7 +88,7 @@ namespace CodeImp.DoomBuilder.Data bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb); bitmapdata = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); pixels = (PixelColor*)bitmapdata.Scan0.ToPointer(); - General.ZeroMemory(new IntPtr(pixels), width * height * sizeof(PixelColor)); + General.ZeroPixels(pixels, width * height); } catch(Exception e) { diff --git a/Source/Core/General/General.cs b/Source/Core/General/General.cs index d0f9cd01..a9332316 100755 --- a/Source/Core/General/General.cs +++ b/Source/Core/General/General.cs @@ -47,25 +47,30 @@ namespace CodeImp.DoomBuilder { public static class General { - #region ================== API Declarations + #region ================== API Declarations #if NO_WIN32 internal static bool LockWindowUpdate(IntPtr hwnd) { return true; } internal static bool MessageBeep(MessageBeepType type) { return true; } - internal static void ZeroMemory(IntPtr dest, int size) { } internal static int SendMessage(IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam) { return 0; } internal static int PostMessage(IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam) { return 0; } + internal unsafe static void ZeroPixels(PixelColor* pixels, int size) + { + var transparent = new PixelColor(0,0,0,0); + for (int i = 0; i < size; i++) + pixels[i] = transparent; + } + #else - [DllImport("user32.dll")] + [DllImport("user32.dll")] internal static extern bool LockWindowUpdate(IntPtr hwnd); [DllImport("kernel32.dll", EntryPoint = "RtlZeroMemory", SetLastError = false)] - internal static extern void ZeroMemory(IntPtr dest, int size); + static extern void ZeroMemory(IntPtr dest, int size); - //[DllImport("kernel32.dll", EntryPoint = "RtlMoveMemory", SetLastError = false)] - //internal static extern unsafe void CopyMemory(void* dst, void* src, uint length); + internal unsafe static void ZeroPixels(PixelColor* pixels, int size) { ZeroMemory(new IntPtr(pixels), size * sizeof(PixelColor)); } [DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CallingConvention = CallingConvention.StdCall)] internal static extern int SendMessage(IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam); @@ -76,31 +81,8 @@ namespace CodeImp.DoomBuilder [DllImport("user32.dll", SetLastError = true)] internal static extern bool MessageBeep(MessageBeepType type); - //[DllImport("kernel32.dll")] - //internal extern static IntPtr LoadLibrary(string filename); - - //[DllImport("kernel32.dll")] - //internal extern static bool FreeLibrary(IntPtr moduleptr); - - //[DllImport("user32.dll")] - /*internal static extern IntPtr CreateWindowEx(uint exstyle, string classname, string windowname, uint style, - int x, int y, int width, int height, IntPtr parentptr, int menu, - IntPtr instanceptr, string param);*/ - - //[DllImport("user32.dll")] - //internal static extern bool DestroyWindow(IntPtr windowptr); - - //[DllImport("user32.dll")] - //internal static extern int SetWindowPos(IntPtr windowptr, int insertafterptr, int x, int y, int cx, int cy, int flags); - [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern uint GetShortPathName([MarshalAs(UnmanagedType.LPTStr)] string longpath, [MarshalAs(UnmanagedType.LPTStr)]StringBuilder shortpath, uint buffersize); - - //[DllImport("user32.dll")] - //internal static extern int SetScrollInfo(IntPtr windowptr, int bar, IntPtr scrollinfo, bool redraw); - - //[DllImport("user32.dll")] - //internal static extern int GetScrollInfo(IntPtr windowptr, int bar, IntPtr scrollinfo); #endif #endregion