X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Feditor%2Fg_textures.pas;h=52c6169b807bf8cd88d4cb6db89a171f0abfb017;hb=7bc7d5022ae82e37fee8b3003432f9294176a470;hp=5cad990728fdeef920044afd92044e06680ab12e;hpb=b72e164f0fb64e3301ae8ca217449daf6a9d301d;p=d2df-editor.git diff --git a/src/editor/g_textures.pas b/src/editor/g_textures.pas index 5cad990..52c6169 100644 --- a/src/editor/g_textures.pas +++ b/src/editor/g_textures.pas @@ -1,10 +1,10 @@ unit g_textures; -{$MODE Delphi} +{$INCLUDE ../shared/a_modes.inc} interface -uses LCLIntf, LCLType, LMessages, e_graphics; +uses LCLIntf, LCLType, LMessages, e_graphics, utils; function g_SimpleCreateTextureWAD(var ID: DWORD; Resource: string): Boolean; function g_SimpleCreateTextureWADSize(var ID: DWORD; Resource: string; @@ -13,7 +13,7 @@ function g_SimpleCreateTextureWADSize(var ID: DWORD; Resource: string; function g_CreateTextureWAD(TextureName: ShortString; Resource: string; flag: Byte = 0): Boolean; function g_CreateTextureWADSize(TextureName: ShortString; Resource: string; X, Y, Width, Height: Word; flag: Byte = 0): Boolean; -function g_CreateTextureMemorySize(pData: Pointer; Name: ShortString; X, Y, +function g_CreateTextureMemorySize(pData: Pointer; dataLen: Integer; Name: ShortString; X, Y, Width, Height: Word; flag: Byte = 0): Boolean; function g_GetTexture(TextureName: ShortString; var ID: DWORD): Boolean; @@ -28,7 +28,7 @@ procedure g_DeleteAllTextures(); implementation uses - e_log, WADEDITOR, g_basic, SysUtils; + e_log, WADEDITOR, g_basic, SysUtils, g_resources; type _TTexture = record @@ -65,35 +65,29 @@ begin end; end; -function g_SimpleCreateTextureWAD(var ID: DWORD; Resource: string): Boolean; -var - WAD: TWADEditor_1; - FileName, - SectionName, - ResourceName: string; - TextureData: Pointer; - ResourceLength: Integer; +function g_SimpleCreateTextureWAD (var ID: DWORD; Resource: string): Boolean; + var + TextureData: Pointer; + ResourceLength: Integer; + FileName, SectionName, ResourceName: string; begin - Result := False; - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); - - WAD := TWADEditor_1.Create; - WAD.ReadFile(FileName); - - if WAD.GetResource(SectionName, ResourceName, TextureData, ResourceLength) then - begin - if e_CreateTextureMem(TextureData, ID) then Result := True; - FreeMem(TextureData); - end + Result := False; + g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + g_ReadResource(FileName, SectionName, ResourceName, TextureData, ResourceLength); + if TextureData <> nil then + begin + if e_CreateTextureMem(TextureData, ResourceLength, ID) then + Result := True; + FreeMem(TextureData) + end else - begin - e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); - end; - WAD.Destroy; + begin + e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING) + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + end; end; -function g_CreateTextureMemorySize(pData: Pointer; Name: ShortString; X, Y, +function g_CreateTextureMemorySize(pData: Pointer; dataLen: Integer; Name: ShortString; X, Y, Width, Height: Word; flag: Byte = 0): Boolean; var find_id: DWORD; @@ -104,7 +98,7 @@ begin find_id := FindTexture; - if not e_CreateTextureMemEx(pData, TexturesArray[find_id].ID, X, Y, Width, Height) then + if not e_CreateTextureMemEx(pData, dataLen, TexturesArray[find_id].ID, X, Y, Width, Height) then begin FreeMem(pData); Exit; @@ -121,109 +115,88 @@ begin end; function g_CreateTextureWAD(TextureName: ShortString; Resource: string; flag: Byte = 0): Boolean; -var - WAD: TWADEditor_1; - FileName, - SectionName, - ResourceName: string; - TextureData: Pointer; - find_id: DWORD; - ResourceLength: Integer; + var + TextureData: Pointer; + ResourceLength: Integer; + FileName, SectionName, ResourceName: string; + find_id: DWORD; begin - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); - - find_id := FindTexture; - - WAD := TWADEditor_1.Create; - WAD.ReadFile(FileName); - - if WAD.GetResource(SectionName, ResourceName, TextureData, ResourceLength) then - begin - Result := e_CreateTextureMem(TextureData, TexturesArray[find_id].ID); - FreeMem(TextureData); - if Result then - begin - e_GetTextureSize(TexturesArray[find_id].ID, @TexturesArray[find_id].Width, - @TexturesArray[find_id].Height); - TexturesArray[find_id].Name := TextureName; - TexturesArray[find_id].flag := flag; - end; - end - else - begin - e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); - Result := False; - end; - WAD.Destroy; + find_id := FindTexture; + g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + g_ReadResource(FileName, SectionName, ResourceName, TextureData, ResourceLength); + if TextureData <> nil then + begin + Result := e_CreateTextureMem(TextureData, ResourceLength, TexturesArray[find_id].ID); + FreeMem(TextureData); + if Result then + begin + e_GetTextureSize( + TexturesArray[find_id].ID, + @TexturesArray[find_id].Width, + @TexturesArray[find_id].Height + ); + TexturesArray[find_id].Name := TextureName; + TexturesArray[find_id].flag := flag + end + end + else + begin + e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + Result := False + end end; -function g_SimpleCreateTextureWADSize(var ID: DWORD; Resource: string; - X, Y, Width, Height: Word): Boolean; -var - WAD: TWADEditor_1; - FileName, - SectionName, - ResourceName: String; - TextureData: Pointer; - ResourceLength: Integer; +function g_SimpleCreateTextureWADSize(var ID: DWORD; Resource: String; X, Y, Width, Height: Word): Boolean; + var + TextureData: Pointer; + ResourceLength: Integer; + FileName, SectionName, ResourceName: String; begin - Result := False; - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); - - WAD := TWADEditor_1.Create; - WAD.ReadFile(FileName); - - if WAD.GetResource(SectionName, ResourceName, TextureData, ResourceLength) then - begin - if e_CreateTextureMemEx(TextureData, ID, X, Y, Width, Height) then Result := True; - FreeMem(TextureData); - end - else - begin - e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); - end; - WAD.Destroy; + Result := False; + g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + g_ReadResource(FileName, SectionName, ResourceName, TextureData, ResourceLength); + if TextureData <> nil then + begin + if e_CreateTextureMemEx(TextureData, ResourceLength, ID, X, Y, Width, Height) then + Result := True; + FreeMem(TextureData) + end + else + begin + e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING) + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING) + end end; -function g_CreateTextureWADSize(TextureName: ShortString; Resource: string; - X, Y, Width, Height: Word; flag: Byte = 0): Boolean; -var - WAD: TWADEditor_1; - FileName, - SectionName, - ResourceName: String; - TextureData: Pointer; - find_id: DWORD; - ResourceLength: Integer; +function g_CreateTextureWADSize(TextureName: ShortString; Resource: String; X, Y, Width, Height: Word; flag: Byte = 0): Boolean; + var + TextureData: Pointer; + ResourceLength: Integer; + FileName, SectionName, ResourceName: String; + find_id: DWORD; begin - g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); - - find_id := FindTexture; - - WAD := TWADEditor_1.Create; - WAD.ReadFile(FileName); - - if WAD.GetResource(SectionName, ResourceName, TextureData, ResourceLength) then - begin - Result := e_CreateTextureMemEx(TextureData, TexturesArray[find_id].ID, X, Y, Width, Height); - FreeMem(TextureData); - if Result then + find_id := FindTexture; + g_ProcessResourceStr(Resource, FileName, SectionName, ResourceName); + g_ReadResource(FileName, SectionName, ResourceName, TextureData, ResourceLength); + if TextureData <> nil then begin - TexturesArray[find_id].Width := Width; - TexturesArray[find_id].Height := Height; - TexturesArray[find_id].Name := TextureName; - TexturesArray[find_id].flag := flag; - end; - end + Result := e_CreateTextureMemEx(TextureData, ResourceLength, TexturesArray[find_id].ID, X, Y, Width, Height); + FreeMem(TextureData); + if Result then + begin + TexturesArray[find_id].Width := Width; + TexturesArray[find_id].Height := Height; + TexturesArray[find_id].Name := TextureName; + TexturesArray[find_id].flag := flag + end + end else - begin - e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); - e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); - Result := False; - end; - WAD.Destroy; + begin + e_WriteLog(Format('Error loading texture %s', [Resource]), MSG_WARNING); + //e_WriteLog(Format('WAD Reader error: %s', [WAD.GetLastErrorStr]), MSG_WARNING); + Result := False + end end; function g_GetTexture(TextureName: ShortString; var ID: DWORD): Boolean;