X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fopengl%2Fr_graphics.pas;h=cb568b418977456013691eff26848e0c7fa01265;hb=9615ae96661aed9886424c75479d322f555627a6;hp=b16bd6fc010d074b8c89cb60be6b5bb5851e5297;hpb=5c816a8e702fd39c65d0928a3315d81e979f30fb;p=d2df-sdl.git diff --git a/src/game/opengl/r_graphics.pas b/src/game/opengl/r_graphics.pas index b16bd6f..cb568b4 100644 --- a/src/game/opengl/r_graphics.pas +++ b/src/game/opengl/r_graphics.pas @@ -22,39 +22,11 @@ uses {$IFDEF USE_SDL2} SDL2, {$ENDIF} - SysUtils, Classes, Math, e_log, e_texture, + SysUtils, Classes, Math, e_log, e_texture, g_base, MAPDEF, ImagingTypes, Imaging, ImagingUtility; type - TMirrorType=(None, Horizontal, Vertical); - TBlending=(None, Blend, Filter, Invert); - - TPoint2i = record - X, Y: Integer; - end; - - TPoint2f = record - X, Y: Double; - end; - - TRect = record - Left, Top, Right, Bottom: Integer; - end; - - TRectWH = record - X, Y: Integer; - Width, Height: Word; - end; - - TRGB = packed record - R, G, B: Byte; - end; - PDFPoint = ^TDFPoint; - PPoint2f = ^TPoint2f; - PRect = ^TRect; - PRectWH = ^TRectWH; - //------------------------------------------------------------------ // прототипы функций @@ -94,8 +66,8 @@ procedure e_DarkenQuadWH (x, y, w, h: Integer; a: Integer); 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; -function e_CreateTextureMemEx(pData: Pointer; dataSize: LongInt; var ID: DWORD; fX, fY, fWidth, fHeight: Word): Boolean; +function e_CreateTextureMem(pData: Pointer; dataSize: LongInt; var ID: DWORD; filter: Boolean = False): Boolean; +function e_CreateTextureMemEx(pData: Pointer; dataSize: LongInt; var ID: DWORD; fX, fY, fWidth, fHeight: Word; filter: Boolean = False): Boolean; procedure e_GetTextureSize(ID: DWORD; Width, Height: PWord); procedure e_DeleteTexture(ID: DWORD); procedure e_RemoveAllTextures(); @@ -143,26 +115,15 @@ procedure e_SetGamma(win: PSDL_Window;Gamma: Byte); procedure e_MakeScreenshot(st: TStream; Width, Height: Word); -function _RGB(Red, Green, Blue: Byte): TRGB; -function _Point(X, Y: Integer): TPoint2i; -function _Rect(X, Y: Integer; Width, Height: Word): TRectWH; -function _TRect(L, T, R, B: LongInt): TRect; - //function e_getTextGLId (ID: DWORD): GLuint; var e_Colors: TRGB; - e_NoGraphics: Boolean = False; - e_FastScreenshots: Boolean = true; // it's REALLY SLOW with `false` - g_dbg_scale: Single = 1.0; - r_pixel_scale: Single = 1.0; - implementation uses - paszlib, crc, utils; - + paszlib, crc, utils, g_options; type TTexture = record @@ -332,7 +293,7 @@ begin Result := True; end; -function e_CreateTextureMem(pData: Pointer; dataSize: LongInt; var ID: DWORD): Boolean; +function e_CreateTextureMem(pData: Pointer; dataSize: LongInt; var ID: DWORD; filter: Boolean = False): Boolean; var find_id: DWORD; fmt: Word; @@ -341,14 +302,14 @@ begin find_id := FindTexture; - if not LoadTextureMem(pData, dataSize, e_Textures[find_id].tx, e_Textures[find_id].tx.Width, e_Textures[find_id].tx.Height, @fmt) then exit; + if not LoadTextureMem(pData, dataSize, e_Textures[find_id].tx, e_Textures[find_id].tx.Width, e_Textures[find_id].tx.Height, @fmt, filter) then exit; id := find_id; Result := True; end; -function e_CreateTextureMemEx(pData: Pointer; dataSize: LongInt; var ID: DWORD; fX, fY, fWidth, fHeight: Word): Boolean; +function e_CreateTextureMemEx(pData: Pointer; dataSize: LongInt; var ID: DWORD; fX, fY, fWidth, fHeight: Word; filter: Boolean = False): Boolean; var find_id: DWORD; fmt: Word; @@ -357,7 +318,7 @@ begin find_id := FindTexture(); - if not LoadTextureMemEx(pData, dataSize, e_Textures[find_id].tx, fX, fY, fWidth, fHeight, @fmt) then exit; + if not LoadTextureMemEx(pData, dataSize, e_Textures[find_id].tx, fX, fY, fWidth, fHeight, @fmt, filter) then exit; ID := find_id; @@ -1943,36 +1904,6 @@ begin e_TextureFonts := nil; end; -function _RGB(Red, Green, Blue: Byte): TRGB; -begin - Result.R := Red; - Result.G := Green; - Result.B := Blue; -end; - -function _Point(X, Y: Integer): TPoint2i; -begin - Result.X := X; - Result.Y := Y; -end; - -function _Rect(X, Y: Integer; Width, Height: Word): TRectWH; -begin - Result.X := X; - Result.Y := Y; - Result.Width := Width; - Result.Height := Height; -end; - -function _TRect(L, T, R, B: LongInt): TRect; -begin - Result.Top := T; - Result.Left := L; - Result.Right := R; - Result.Bottom := B; -end; - - procedure e_MakeScreenshot (st: TStream; Width, Height: Word); var pixels, obuf, scln, ps, pd: PByte;