From fe6e29cd2f9bc30ec1fd126fbc984c91dc2a3280 Mon Sep 17 00:00:00 2001 From: Darkvater Date: Sun, 13 Aug 2006 08:18:11 +0000 Subject: (svn r5872) - Feature: Add an icon to the SDL openttd executable. --- video/sdl_v.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'video') diff --git a/video/sdl_v.c b/video/sdl_v.c index 373009bc8..275db9dba 100644 --- a/video/sdl_v.c +++ b/video/sdl_v.c @@ -161,15 +161,36 @@ static int GetAvailableVideoMode(int *w, int *h) extern const char _openttd_revision[]; +#ifndef ICON_DIR +#define ICON_DIR "media" +#endif + +#ifdef WIN32 +/* Let's redefine the LoadBMP macro with because we are dynamically + * loading SDL and need to 'SDL_CALL' all functions */ +#undef SDL_LoadBMP +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_CALL SDL_RWFromFile(file, "rb"), 1) +#endif + static bool CreateMainSurface(int w, int h) { - SDL_Surface *newscreen; + SDL_Surface *newscreen, *icon; char caption[50]; GetAvailableVideoMode(&w, &h); DEBUG(driver, 1) ("sdl: using mode %dx%d", w, h); + /* Give the application an icon */ + icon = SDL_CALL SDL_LoadBMP(ICON_DIR PATHSEP "openttd.32.bmp"); + if (icon != NULL) { + /* Get the colourkey, which will be magenta */ + uint32 rgbmap = SDL_CALL SDL_MapRGB(icon->format, 255, 0, 255); + SDL_CALL SDL_SetColorKey(icon, SDL_SRCCOLORKEY, rgbmap); + SDL_CALL SDL_WM_SetIcon(icon, NULL); + SDL_CALL SDL_FreeSurface(icon); + } + // DO NOT CHANGE TO HWSURFACE, IT DOES NOT WORK newscreen = SDL_CALL SDL_SetVideoMode(w, h, 8, SDL_SWSURFACE | SDL_HWPALETTE | (_fullscreen ? SDL_FULLSCREEN : SDL_RESIZABLE)); if (newscreen == NULL) -- cgit v1.2.3-70-g09d2