X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Frenders%2Fopengl%2Fr_draw.pas;h=fbdae7e4ee8e09cdfd307dc29365d7b322f88149;hb=b36923c380a9760c74967bc8c850517c386747db;hp=441ec2d1e4eaf1df55cbf7e57f15b2ed9c92d6b7;hpb=39f79dfba0fce4eca09ad34f7cd8bee7bb2fb6fd;p=d2df-sdl.git diff --git a/src/game/renders/opengl/r_draw.pas b/src/game/renders/opengl/r_draw.pas index 441ec2d..fbdae7e 100644 --- a/src/game/renders/opengl/r_draw.pas +++ b/src/game/renders/opengl/r_draw.pas @@ -18,7 +18,7 @@ unit r_draw; interface uses - g_textures, + g_animations, r_textures ; @@ -34,6 +34,7 @@ interface procedure r_Draw_InvertRect (l, t, r, b: Integer; rr, gg, bb, aa: Byte); procedure r_Draw_Text (const text: AnsiString; x, y: Integer; r, g, b, a: Byte; f: TGLFont); + procedure r_Draw_GetTextSize (const text: AnsiString; f: TGLFont; out w, h: Integer); implementation @@ -258,16 +259,31 @@ implementation end; procedure r_Draw_Text (const text: AnsiString; x, y: Integer; r, g, b, a: Byte; f: TGLFont); - var i, xoff: Integer; t: TGLTexture; ch: AnsiChar; + var i, xoff, spc: Integer; t: TGLTexture; ch: AnsiChar; begin - xoff := x; + xoff := x; spc := MAX(0, f.GetSpace()); for i := 1 to Length(text) do begin ch := text[i]; t := f.GetChar(ch); if t <> nil then r_Draw_Texture(t, xoff, y, t.width, t.height, false, r, g, b, a, false); - Inc(xoff, f.GetWidth(ch) + f.GetSpace()); + Inc(xoff, f.GetWidth(ch) + spc); + end; + end; + + procedure r_Draw_GetTextSize (const text: AnsiString; f: TGLFont; out w, h: Integer); + var i, spc, len: Integer; + begin + w := 0; + h := f.GetMaxHeight(); + len := Length(text); + if len > 0 then + begin + spc := MAX(0, f.GetSpace()); + for i := 1 to len - 1 do + Inc(w, f.GetWidth(text[i]) + spc); + Inc(w, f.GetWidth(text[len])); end; end;