X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Frenders%2Fopengl%2Fr_common.pas;h=61d03439a5423d5c00c2ee77e15a37d984d86183;hb=a0269440c6b9e8f1f0f578f26864804f9a412b13;hp=ba934c5ceedfa4d362c6a564aeb60ecd0c8edc65;hpb=b874151ca697386d74cfbd29e1c21bca1b4825e2;p=d2df-sdl.git diff --git a/src/game/renders/opengl/r_common.pas b/src/game/renders/opengl/r_common.pas index ba934c5..61d0343 100644 --- a/src/game/renders/opengl/r_common.pas +++ b/src/game/renders/opengl/r_common.pas @@ -19,11 +19,22 @@ interface uses r_textures; + type + THereTexture = record + name: AnsiString; + id: TGLTexture; + end; + var stdfont: TGLFont; smallfont: TGLFont; menufont: TGLFont; + function r_Common_LoadThis (const name: AnsiString; var here: THereTexture): Boolean; + procedure r_Common_FreeThis (var here: THereTexture); + + procedure r_Common_CalcAspect (ow, oh, nw, nh: LongInt; horizontal: Boolean; out ww, hh: LongInt); + procedure r_Common_Load; procedure r_Common_Free; @@ -31,6 +42,41 @@ implementation uses e_log, r_fonts, g_options; + procedure r_Common_FreeThis (var here: THereTexture); + begin + here.name := ''; + if here.id <> nil then + here.id.Free; + here.id := nil; + end; + + function r_Common_LoadThis (const name: AnsiString; var here: THereTexture): Boolean; + begin + if name <> here.name then + r_Common_FreeThis(here); + if (name <> '') and (here.name <> name) then + here.id := r_Textures_LoadFromFile(name); + + result := here.id <> nil; + + if result then + here.name := name; + end; + + procedure r_Common_CalcAspect (ow, oh, nw, nh: LongInt; horizontal: Boolean; out ww, hh: LongInt); + begin + if horizontal then + begin + ww := nw; + hh := nw * oh div ow; + end + else + begin + ww := nh * ow div oh; + hh := nh; + end; + end; + function r_Common_LoadFont (const name: AnsiString): TGLFont; var info: TFontInfo; skiphack: Integer; begin