From a333768c99f9bfd842455a89b32bc06112697b54 Mon Sep 17 00:00:00 2001 From: CharlesDev Date: Thu, 11 Apr 2024 00:57:06 -0400 Subject: [PATCH] add icon --- Fushigi/Fushigi.csproj | 4 ++ Fushigi/res/Icon.png | Bin 0 -> 46994 bytes Fushigi/windowing/WindowManager.cs | 70 +++++++++++++++++------------ 3 files changed, 46 insertions(+), 28 deletions(-) create mode 100644 Fushigi/res/Icon.png diff --git a/Fushigi/Fushigi.csproj b/Fushigi/Fushigi.csproj index 48c36c8e..cef66ee7 100644 --- a/Fushigi/Fushigi.csproj +++ b/Fushigi/Fushigi.csproj @@ -21,6 +21,7 @@ + @@ -67,6 +68,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/Fushigi/res/Icon.png b/Fushigi/res/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..adcd686a32592b7b6b463672c8d079d6289633be GIT binary patch literal 46994 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 literal 0 HcmV?d00001 diff --git a/Fushigi/windowing/WindowManager.cs b/Fushigi/windowing/WindowManager.cs index ae6d4835..72e4be03 100644 --- a/Fushigi/windowing/WindowManager.cs +++ b/Fushigi/windowing/WindowManager.cs @@ -1,12 +1,13 @@ using Fushigi.util; -using ImGuiNET; +using Silk.NET.Core; using Silk.NET.Core.Contexts; -using Silk.NET.GLFW; using Silk.NET.Input; using Silk.NET.Maths; using Silk.NET.OpenGL; using Silk.NET.Windowing; -using Silk.NET.Windowing.Glfw; +using SixLabors.ImageSharp.Advanced; +using SixLabors.ImageSharp.PixelFormats; +using System.Runtime.InteropServices; namespace Fushigi.windowing { @@ -14,16 +15,16 @@ internal static class WindowManager { public static IGLContext? SharedContext { get; private set; } = null; - private static GL? s_gl = null; + private static GL? sGL = null; private record struct WindowResources(ImGuiController ImguiController, IInputContext Input, GL Gl, bool HasRenderDelegate); - private static bool s_isRunning = false; + private static bool sIsRunning = false; - private static readonly List s_pendingInits = []; - private static readonly List<(IWindow window, WindowResources res)> s_windows = []; + private static readonly List sPendingInits = []; + private static readonly List<(IWindow window, WindowResources res)> sWindows = []; - public static void CreateWindow(out IWindow window, Vector2D? initialWindowSize = null, Action? onConfigureIO = null) + public static unsafe void CreateWindow(out IWindow window, Vector2D? initialWindowSize = null, Action? onConfigureIO = null) { var options = WindowOptions.Default; options.Title = $"Fushigi {Program.Version}"; @@ -45,33 +46,46 @@ public static void CreateWindow(out IWindow window, Vector2D? initialWindow window.Load += () => { - if(s_gl == null) - s_gl = _window.CreateOpenGL(); + sGL ??= _window.CreateOpenGL(); //initialization if (_window.Native!.Win32.HasValue) WindowsDarkmodeUtil.SetDarkmodeAware(_window.Native.Win32.Value.Hwnd); var input = _window.CreateInput(); - var imguiController = new ImGuiController(s_gl, _window, input, onConfigureIO); + var imguiController = new ImGuiController(sGL, _window, input, onConfigureIO); //update _window.Update += ds => imguiController.Update((float)ds); - s_windows.Add((_window, new WindowResources(imguiController, input, s_gl, false))); + Logger.Logger.LogMessage("WindowManager", "Loading icon"); + using var image = SixLabors.ImageSharp.Image.Load(Path.Combine("res", "Icon.png")); + var memoryGroup = image.GetPixelMemoryGroup(); + Memory array = new byte[memoryGroup.TotalLength * sizeof(Rgba32)]; + var block = MemoryMarshal.Cast(array.Span); + foreach (var memory in memoryGroup) + { + memory.Span.CopyTo(block); + block = block[memory.Length..]; + } + + var icon = new RawImage(image.Width, image.Height, array); + _window.SetWindowIcon(ref icon); + + sWindows.Add((_window, new WindowResources(imguiController, input, sGL, false))); }; - s_pendingInits.Add(window); + sPendingInits.Add(window); } public static void RegisterRenderDelegate(IWindow window, Action renderGLDelegate) { - int idx = s_windows.FindIndex(x => x.window == window); + int idx = sWindows.FindIndex(x => x.window == window); if (idx == -1) throw new Exception($"window was not created using the {nameof(WindowManager)} class"); - var res = s_windows[idx].res; + var res = sWindows[idx].res; if(res.HasRenderDelegate) throw new Exception("window has already registered a render delegate"); @@ -91,32 +105,32 @@ public static void RegisterRenderDelegate(IWindow window, Action 0 || s_pendingInits.Count > 0) + while (sWindows.Count > 0 || sPendingInits.Count > 0) { - if (s_pendingInits.Count > 0) + if (sPendingInits.Count > 0) { - foreach (var window in s_pendingInits) + foreach (var window in sPendingInits) { window.Initialize(); SharedContext ??= window.GLContext; } - s_pendingInits.Clear(); + sPendingInits.Clear(); } - for (int i = 0; i < s_windows.Count; i++) + for (int i = 0; i < sWindows.Count; i++) { - var (window, res) = s_windows[i]; + var (window, res) = sWindows[i]; window.DoEvents(); if (!window.IsClosing) @@ -127,10 +141,10 @@ public static void Run() if (window.IsClosing) { - s_windows.RemoveAt(i); + sWindows.RemoveAt(i); - if (window.GLContext == SharedContext && s_windows.Count > 0) - SharedContext = s_windows[0].window.GLContext; + if (window.GLContext == SharedContext && sWindows.Count > 0) + SharedContext = sWindows[0].window.GLContext; res.Input.Dispose(); res.ImguiController.Dispose(); @@ -143,7 +157,7 @@ public static void Run() } } - s_gl?.Dispose(); + sGL?.Dispose(); } } } \ No newline at end of file