From 7f7d872cb8f9e4eb55db246840ed795d97ccb9fc Mon Sep 17 00:00:00 2001 From: AllMeatball <181806857+AllMeatball@users.noreply.github.com> Date: Wed, 14 May 2025 15:54:17 -0500 Subject: [PATCH] isleapp: Load internal .BMP instead of raw pixels This should fix the endianess problem I mentioned in the PR. --- ISLE/isleapp.cpp | 18 +- ISLE/res/isle.bmp | Bin 0 -> 4166 bytes ISLE/res/isle.h | 572 ++++++++++++++++++++++++++++------------------ 3 files changed, 361 insertions(+), 229 deletions(-) create mode 100644 ISLE/res/isle.bmp diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index eac9da9c..1d664ba0 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -1,6 +1,8 @@ #include "isleapp.h" #include "3dmanager/lego3dmanager.h" +#include "SDL3/SDL_log.h" +#include "SDL3/SDL_surface.h" #include "decomp.h" #include "legoanimationmanager.h" #include "legobuildingmanager.h" @@ -486,17 +488,19 @@ MxResult IsleApp::SetupWindow() return FAILURE; } - SDL_Surface* icon = SDL_CreateSurfaceFrom( - ISLE_ICON.width, - ISLE_ICON.height, - SDL_PIXELFORMAT_RGBA32, - (void*) ISLE_ICON.pixel_data, - ISLE_ICON.width * ISLE_ICON.bytes_per_pixel - ); + + SDL_IOStream *icon_stream = SDL_IOFromMem(isle_bmp, isle_bmp_len); + if (!icon_stream) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to open SDL_IOStream for icon: %s", SDL_GetError()); + } + + SDL_Surface *icon = SDL_LoadBMP_IO(icon_stream, true); if (icon) { SDL_SetWindowIcon(m_windowHandle, icon); SDL_DestroySurface(icon); + } else { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to load icon: %s", SDL_GetError()); } if (!SetupLegoOmni()) { diff --git a/ISLE/res/isle.bmp b/ISLE/res/isle.bmp new file mode 100644 index 0000000000000000000000000000000000000000..07a0b2a29059f19fcdaa5cba3fecf48e60313249 GIT binary patch literal 4166 zcmeH`OA^8`2!`XhbmNQ{@EERLxbyzUiO}|^v>_C$aePG)0-+y}dcI!vsaqHNJ&_y- z*^sp*J5l_w>xH-d$|?0<-jelSZ#RKV_tN4MZL|fOpBY`h&QF>Dp@wubw*xvk|{D=AI+0!lgn0?Fs z#~ao(vV-^U O|D=wB%X