From b1b0b26fc8a1fc499b1cbe4d3c51f71079bd34fe Mon Sep 17 00:00:00 2001 From: Darkvater Date: Sun, 13 Aug 2006 08:18:11 +0000 Subject: [PATCH] (svn r5872) - Feature: Add an icon to the SDL openttd executable. --- Makefile | 4 ++++ media/openttd.32.bmp | Bin 0 -> 2104 bytes sdl.c | 5 +++++ sdl.h | 5 +++++ video/sdl_v.c | 23 ++++++++++++++++++++++- 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 media/openttd.32.bmp diff --git a/Makefile b/Makefile index 8be09363ea..d689f512ec 100644 --- a/Makefile +++ b/Makefile @@ -616,6 +616,10 @@ endif ifdef USE_HOMEDIR CDEFS += -DUSE_HOMEDIR endif + +ifdef ICON_DIR +CDEFS += -DICON_DIR=\"$(ICON_DIR_PREFIXED)/\" +endif endif ############################################################################## diff --git a/media/openttd.32.bmp b/media/openttd.32.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e388628fb63981a566d0798020d5ef93c954d60a GIT binary patch literal 2104 zcmb7@2~bl<7{~vLTCdvHs`Vg9Aqob<5pu{SBw#@i5rQa|qk;qkglYu^Bp$RtQSinh zXu{#qiYO}H2_k4ARzpdPRY0+5YptM!8zI{l(HXTm(|&Kh-F^G}?YBF#?+M&z4#)H0 z4grj*k^YMugaI&^njbrAAfJm=W6rdLg((Myqo-inC;G6MVFI?^WSC5TA50?ym@}rs zl&%Ygp)LgWGht4j2uoucI7~y-Ub_JG!&|7iaTTr258&*?hk);Z%Bz>q(bf#or$+s4 z6-a+4db^*ZTB(4dssb8K4|;mqk(Vb$N2eN(n;$_#`q9>|2G^MZ-aH1ndOE@NVZtiV z5-qJQ=|GFH!I;yW0fpaYcJmqq5t^|X7aVfZ`0>Lfx11HTB z?49Az6 z@T9E`EowFR0s$1tYBa0caHB?rhTrc)b-Mwoo44RN+ZDBUnoxGN3gN30puE|D&~pT# z=Ly27wBT4H``|I0E>l2QNZ^&zh=5`Z=B8D^De(k?N(lT8x4<|5A(kHRK}d-P%T7Ln zh?*CjAqY9uhoGW1_!m5Y@7`MYOX}gX^BP>^4nde)0?(vkc#03hJ!UU#7O%pbko9nM zaYsh>ArzHd0K^3Pi?%|L`4|fddf=R{!oq?MIL3UBz@lE*Mr6Zf!#M=}poX8c5#C$M zAqd?9m#Cdsux3BvvgJrSco}@Rh1hen9LFzKg6}jNh$BEemFoxwClKhwv}5EZf>EOD zFpg8fatDD)tOC3}1oqhkvogEknAHdVo=&jiE8v{f1=l9j9$=1CqWM`0%wN?+-==pf7=2J@o%u%*#pa{ zGjK}32Z8u9Oco@ z;dsH+avqpwPSj^eU}R+U@>l;?Pe48YIXt>4b<9Yuuk)5gR(uy7GN$gyFhb^0qc_9K z$%exkTK8@KU&H1LI4*TsdG`Ei6ux}++%-vg2b1lE4<=U1q~)EIU_0k!g+-rfv07So z<RCo@5?Sqs z5&m65VHa)UZn?AyW-}e^w1S(B9fk8GrQ63cXkGz97rkf`f0s$C23gLu=gy;qxoqPn zH*Q=nzo0iM=WpGRmdpv0vPxySRf8Ctk^Wb)jf z7MXi!@vx_jckAm9{j%(Xvjsm-2}srV`{aD7TqessFhq-oKRsG_q^YUtUPIlj^ZRB9 z8H){cs}%~xl`FXimQ#Gx*2v=GW5r*#b$GlbsZNq2s`d;9jyUsW}KzOUVYj5`~Zk&&_af}YSj#ohnl;nbW5cN-h) z4?Whd*2cKqF*~=V`%Is{H*I`iQObhPPZl0I^25WIm=eUI_!Y}$OwU7237=G^UYrvS0wIw4mbHqUH7wvwr=&P@N-1Qa4*l-E*NP9kBqzqKS?`mQxLUO7ZJ3bc wU2AuJ86E#FObH1wv9Y3!!{1VTU@AKycI}3DV?wgycR#<>cURC}>Hi7f9~350(f|Me literal 0 HcmV?d00001 diff --git a/sdl.c b/sdl.c index 5a5ca791de..f6474b6e10 100644 --- a/sdl.c +++ b/sdl.c @@ -54,6 +54,11 @@ static const char sdl_files[] = M("SDL_VideoDriverName") M("SDL_ListModes") M("SDL_GetKeyState") + M("SDL_LoadBMP_RW") + M("SDL_RWFromFile") + M("SDL_SetColorKey") + M("SDL_WM_SetIcon") + M("SDL_MapRGB") M("") ; #undef M diff --git a/sdl.h b/sdl.h index 8faa850242..9fe3740953 100644 --- a/sdl.h +++ b/sdl.h @@ -41,6 +41,11 @@ void SdlClose(uint32 x); void (SDLCALL *SDL_VideoDriverName)(char *, int); SDL_Rect **(SDLCALL *SDL_ListModes)(void *, int); Uint8 *(SDLCALL *SDL_GetKeyState)(int *); + SDL_Surface *(SDLCALL *SDL_LoadBMP_RW)(SDL_RWops *, int); + SDL_RWops *(SDLCALL *SDL_RWFromFile)(const char *, const char *); + int (SDLCALL *SDL_SetColorKey)(SDL_Surface *, Uint32, Uint32); + void (SDLCALL *SDL_WM_SetIcon)(SDL_Surface *, Uint8 *); + Uint32 (SDLCALL *SDL_MapRGB)(SDL_PixelFormat *, Uint8, Uint8, Uint8); } SDLProcs; extern SDLProcs sdl_proc; diff --git a/video/sdl_v.c b/video/sdl_v.c index 373009bc8f..275db9dba4 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)