diff --git a/Engine/source/windowManager/sdl/sdlSplashScreen.cpp b/Engine/source/windowManager/sdl/sdlSplashScreen.cpp index bf0931a9c..1cf2440af 100644 --- a/Engine/source/windowManager/sdl/sdlSplashScreen.cpp +++ b/Engine/source/windowManager/sdl/sdlSplashScreen.cpp @@ -22,7 +22,7 @@ #include "platform/platform.h" #include "console/console.h" - +#include "gfx/bitmap/gBitmap.h" #include "SDL.h" #include "windowManager/sdl/sdlWindow.h" @@ -36,7 +36,52 @@ bool Platform::displaySplashWindow( String path ) if(path.isEmpty()) return false; - gSplashImage = SDL_LoadBMP(path); + Torque::Path iconPath = Torque::Path(path); + + if (iconPath.getExtension() == String("bmp")) + { + Con::errorf("Unable to use bmp format images for the splash screen. Please use a different format."); + return false; + } + + Resource img = GBitmap::load(iconPath); + if (img != NULL) + { + U32 pitch; + U32 width = img->getWidth(); + bool hasAlpha = img->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; + } + + gSplashImage = SDL_CreateRGBSurfaceFrom(img->getAddress(0, 0), img->getWidth(), img->getHeight(), depth, pitch, rmask, gmask, bmask, amask); + } //now the pop-up window if (gSplashImage) diff --git a/Engine/source/windowManager/sdl/sdlWindowMgr.cpp b/Engine/source/windowManager/sdl/sdlWindowMgr.cpp index 6157374dd..489377082 100644 --- a/Engine/source/windowManager/sdl/sdlWindowMgr.cpp +++ b/Engine/source/windowManager/sdl/sdlWindowMgr.cpp @@ -168,47 +168,55 @@ PlatformWindow *PlatformWindowManagerSDL::createWindow(GFXDevice *device, const //Now, fetch our window icon, if any Torque::Path iconPath = Torque::Path(Con::getVariable( "$Core::windowIcon" )); - Resource bmp = GBitmap::load(iconPath); - if (bmp != NULL) + + if (iconPath.getExtension() == String("bmp")) { - U32 pitch; - U32 width = bmp->getWidth(); - bool hasAlpha = bmp->getHasTransparency(); - U32 depth; - - if (hasAlpha) + Con::errorf("Unable to use bmp format images for the window icon. Please use a different format."); + } + else + { + Resource img = GBitmap::load(iconPath); + if (img != NULL) { - pitch = 4 * width; - depth = 32; - } - else - { - pitch = 3 * width; - depth = 24; - } + U32 pitch; + U32 width = img->getWidth(); + bool hasAlpha = img->getHasTransparency(); + U32 depth; - 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; + 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(img->getAddress(0, 0), img->getWidth(), img->getHeight(), depth, pitch, rmask, gmask, bmask, amask); + + SDL_SetWindowIcon(window->mWindowHandle, iconSurface); + + SDL_FreeSurface(iconSurface); } - 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) diff --git a/Templates/Empty/game/core/torque.png b/Templates/Empty/game/core/torque.png new file mode 100644 index 000000000..1023f2bb6 Binary files /dev/null and b/Templates/Empty/game/core/torque.png differ diff --git a/Templates/Full/game/core/torque.png b/Templates/Full/game/core/torque.png new file mode 100644 index 000000000..1023f2bb6 Binary files /dev/null and b/Templates/Full/game/core/torque.png differ