From fe6e29cd2f9bc30ec1fd126fbc984c91dc2a3280 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 zcmZ?rwcua?12Yx|1`P%V1_dZ)WPnI8u`noUXtzuy>s{rJFe;ruCvQzwrw z{QLKl;pfjU42u>mVEFp&6T_RguNeOQ|I6_C%O?gi7cB;JA1#LOKff`Uh3PUF#~U)d z`}mIG*PmYu=P#aT&`&pH(91Vv(5ta#&?~cI&~0;I&~36~FsbuqFmg6$FuIn(VE(F* z!R%>1gW2Oe29w*_48}LJ7|b5#GMGQiV=%jy%V2gVhr#4(CWHCy90rpMX$+>PQyI+9 zXEK-`O=d9LlgMDUC7!`-O$>u+S0IB)vmb*=i6?`7Z7_p*wg-bzj03~%dv_RgL#!DL zY)lz`|NF~u{M1Q?eFqOPeEj-_;pN*m3=IGOGj#R#G8h^eF}(l$nc>~1PYjMuP7J5c zUtoCq=`+K*OP3k$K6=7%`PN;A%hzu*IJkN+T)X#};oz~83|S@B4Ck-kWk}!opCNtM ze};@*{}~KSEg5DnThFlV;3W=PxmpCN7ge}>d8e;AV1eP)PV@{}QR)-{IM`F9w?CZA^Ts9eqv z+_se=uz4dxVBHD^-_ltORuM%Eo~iW=4(`4TeY2M{tlPSqfuZg{gF<*egVVG(3;|1i zGPv|!W(ZyKmBFEOB}4qWUkujSvl-kQb~41R`os{k-~mHO&tV3q^d1KHyvYm!X2IkT)3|vkB8MxEV zGH6s@W-y%epFz9q6odKn{|vUX|1;Q4`@!Ha^ACgL^luC%RYw?HW`1YzSoEL4WA--& z&$&Ms?Axv}c+LIB;5+{-gLU~XhM+}X8T^{}G9*ns#gN>;k0HBx4nt1u1O|rE{|pRe z{}~vH{xL9={bgXt|IWaaahHK5|1AS^)P4rm%6|;3>9-l!g4Zx`<~?EH%DTC&P$e`E#i$OMQ7K2gWF9wyg%?v8Z>ljQY{bMkj@Pomm^Bsdh-39Z<_)8P~y}~PvN{I+pW#19&41#6|BwIw|MPKy z6f=VeG;HkX&itS6_ItMf|9#vs6&O2PnHsU)?p*wm&Ckiyoe5pHif43;<}d!D zV`*>ZfvUjY#md%E<>SKn`}QqZ{8h)q-pmMDfxoM{t)uG4h4T;X*m-*X;jg+T_U1?m z!d=a69aKLq*f;+;zr=~X3l4wNHLX;wekij@OLw}wNw8*fA2Mc?AY(Y!QW*irtVvC zl0nbH-Ug(=+sejH{qv&v`zH!%$p*zG?Fo{Vc(ixHNk&5pTQi^k|NncLXuLmn?(E^+ za*}gi%cQ=WCMG#^|K5cs84b)_jX^f3e7Jt;^5v6R-;<9Wkx4x=Q%-iy!M*zyo(b3Y z2T8MicyRyDo#j_j_;)P1C>__K5F@^8|GvF@7cON1NppNyyJq#{$B!T0y?t}nT+Lvu z2ql>dr%s(ZdUWB^%>V!YbNA+9?5-Ypj#((W6(Y(>YM zr}rN`xU>8XNH<7@$kfuw6MDnc)Mj;w#;%0&bR%8Txt zP&ge``v3pLnvA0U)|7bP#);FaGn&z*K?*7=^Ck-V))tne&tQiej9|3YmX_Ctwbz!U zHDQzf|G#ZY#gu~lDqPb4|F>0_mX)P7av;n^W6iEEt7yP2{r~^$s;S^eMbn4i&IUy( Kf=igizyJUgCQ;G= 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)