mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-13 03:33:48 +00:00
Fixes window icons with SDL, hooking it through the var $Core::windowIcon as the path.
Also adjusted the splash window icon to use the var $Core::splashWindowImage for it's path.
This commit is contained in:
parent
d3dd5ce235
commit
170cdadf60
4 changed files with 56 additions and 1 deletions
|
|
@ -24,6 +24,7 @@
|
|||
#include "gfx/gfxDevice.h"
|
||||
#include "core/util/journal/process.h"
|
||||
#include "core/strings/unicode.h"
|
||||
#include "gfx/bitmap/gBitmap.h"
|
||||
|
||||
#include "SDL.h"
|
||||
|
||||
|
|
@ -165,6 +166,51 @@ PlatformWindow *PlatformWindowManagerSDL::createWindow(GFXDevice *device, const
|
|||
window->mOwningManager = this;
|
||||
mWindowMap[ window->mWindowId ] = window;
|
||||
|
||||
//Now, fetch our window icon, if any
|
||||
Torque::Path iconPath = Torque::Path(Con::getVariable( "$Core::windowIcon" ));
|
||||
Resource<GBitmap> bmp = GBitmap::load(iconPath);
|
||||
if (bmp != NULL)
|
||||
{
|
||||
U32 pitch;
|
||||
U32 width = bmp->getWidth();
|
||||
bool hasAlpha = bmp->getHasTransparency();
|
||||
U32 depth;
|
||||
|
||||
if (hasAlpha)
|
||||
{
|
||||
pitch = 4 * width;
|
||||
depth = 32;
|
||||
}
|
||||
else
|
||||
{
|
||||
pitch = 3 * width;
|
||||
depth = 24;
|
||||
}
|
||||
|
||||
Uint32 rmask, gmask, bmask, amask;
|
||||
if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
|
||||
{
|
||||
S32 shift = hasAlpha ? 8 : 0;
|
||||
rmask = 0xff000000 >> shift;
|
||||
gmask = 0x00ff0000 >> shift;
|
||||
bmask = 0x0000ff00 >> shift;
|
||||
amask = 0x000000ff >> shift;
|
||||
}
|
||||
else
|
||||
{
|
||||
rmask = 0x000000ff;
|
||||
gmask = 0x0000ff00;
|
||||
bmask = 0x00ff0000;
|
||||
amask = hasAlpha ? 0xff000000 : 0;
|
||||
}
|
||||
|
||||
SDL_Surface* iconSurface = SDL_CreateRGBSurfaceFrom(bmp->getAddress(0, 0), bmp->getWidth(), bmp->getHeight(), depth, pitch, rmask, gmask, bmask, amask);
|
||||
|
||||
SDL_SetWindowIcon(window->mWindowHandle, iconSurface);
|
||||
|
||||
SDL_FreeSurface(iconSurface);
|
||||
}
|
||||
|
||||
if(device)
|
||||
{
|
||||
window->mDevice = device;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue