diff -r 2f4f3236cccc -r 207c85fbef51 hedgewars/uStore.pas --- a/hedgewars/uStore.pas Sun Jul 23 21:22:44 2006 +0000 +++ b/hedgewars/uStore.pas Mon Jul 24 14:03:51 2006 +0000 @@ -49,7 +49,7 @@ procedure DrawFromStoreRect(X, Y: integer; Rect: PSDL_Rect; Surface: PSDL_Surface); procedure DrawHedgehog(X, Y: integer; Dir: integer; Pos, Step: LongWord; Surface: PSDL_Surface); procedure RenderHealth(var Hedgehog: THedgehog); -function RenderString(var s: shortstring; Color, Pos: integer): TSDL_Rect; +function RenderString(var s: shortstring; Color, Pos: integer): PSDL_Surface; procedure AddProgress; function LoadImage(filename: string; hasAlpha: boolean; const critical: boolean = true): PSDL_Surface; @@ -87,11 +87,11 @@ SDL_FreeSurface(tmpsurf); end; -procedure DrawRoundRect(rect: PSDL_Rect; BorderColor, FillColor: Longword; Surface: PSDL_Surface); +procedure DrawRoundRect(rect: PSDL_Rect; BorderColor, FillColor: Longword; Surface: PSDL_Surface; const Clear: boolean = true); var r: TSDL_Rect; begin r:= rect^; -SDL_FillRect(Surface, @r, 0); +if Clear then SDL_FillRect(Surface, @r, 0); r.y:= rect.y + 1; r.h:= rect.h - 2; SDL_FillRect(Surface, @r, BorderColor); @@ -163,7 +163,7 @@ Team.HealthRect:= r; rr:= r; inc(rr.x, 2); dec(rr.w, 4); inc(rr.y, 2); dec(rr.h, 4); - DrawRoundRect(@rr, Team.Color, Team.Color, StoreSurface); + DrawRoundRect(@rr, Team.Color, Team.Color, StoreSurface, false); inc(r.y, r.h); dec(drY, r.h + 2); Team.DrawHealthY:= drY; @@ -461,9 +461,13 @@ end; end; -function RenderString(var s: shortstring; Color, Pos: integer): TSDL_Rect; +function RenderString(var s: shortstring; Color, Pos: integer): PSDL_Surface; +var w, h: integer; begin -Result:= WriteInRoundRect(TempSurface, 64, Pos * Fontz[fntBig].Height, Color, fntBig, s); +TTF_SizeUTF8(Fontz[fntBig].Handle, PChar(String(s)), w, h); +Result:= SDL_CreateRGBSurface(SDL_HWSURFACE, w + 6, h + 2, cBits, PixelFormat.RMask, PixelFormat.GMask, PixelFormat.BMask, 0); +WriteInRoundRect(Result, 0, 0, Color, fntBig, s); +TryDo(SDL_SetColorKey(Result, SDL_SRCCOLORKEY or SDL_RLEACCEL, 0) = 0, errmsgTransparentSet, true) end; procedure AddProgress;