X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fengine%2Fe_graphics.pas;h=9f9bfa20f348a020eb03fec23d8a42b4b16df184;hp=c5a97b90c56961b8088fd4464fd0b763114aff88;hb=8b87c4d3552073bc1dd71381553fa9973adbe260;hpb=85e9a9b925d265c5cf047df5ce56848377e41336 diff --git a/src/engine/e_graphics.pas b/src/engine/e_graphics.pas index c5a97b9..9f9bfa2 100644 --- a/src/engine/e_graphics.pas +++ b/src/engine/e_graphics.pas @@ -4,7 +4,7 @@ unit e_graphics; interface uses - SysUtils, Classes, Math, e_log, e_textures, SDL2, GL, GLExt, MAPDEF; + SysUtils, Classes, Math, e_log, e_textures, SDL2, GL, GLExt, MAPDEF, ImagingTypes, Imaging, ImagingUtility; type TMirrorType=(M_NONE, M_HORIZONTAL, M_VERTICAL); @@ -63,6 +63,7 @@ procedure e_DrawQuad(X1, Y1, X2, Y2: Integer; Red, Green, Blue: Byte; Alpha: Byt procedure e_DrawFillQuad(X1, Y1, X2, Y2: Integer; Red, Green, Blue, Alpha: Byte; Blending: TBlending = B_NONE); +function e_CreateTextureImg (var img: TImageData; var ID: DWORD): Boolean; function e_CreateTexture(FileName: string; var ID: DWORD): Boolean; function e_CreateTextureEx(FileName: string; var ID: DWORD; fX, fY, fWidth, fHeight: Word): Boolean; function e_CreateTextureMem(pData: Pointer; dataSize: LongInt; var ID: DWORD): Boolean; @@ -332,6 +333,22 @@ begin Result := True; end; +function e_CreateTextureImg (var img: TImageData; var ID: DWORD): Boolean; +var + find_id: DWORD; + fmt, tw, th: Word; +begin + result := false; + find_id := FindTexture(); + if not LoadTextureImg(img, e_Textures[find_id].tx, tw, th, @fmt) then exit; + //writeln(' tw=', tw, '; th=', th); + e_Textures[find_id].Width := tw; + e_Textures[find_id].Height := th; + e_Textures[find_id].Fmt := fmt; + ID := find_id; + result := True; +end; + procedure e_GetTextureSize(ID: DWORD; Width, Height: PWord); begin if Width <> nil then Width^ := e_Textures[ID].Width;