DEADSOFTWARE

vampimg endianess fixes
[d2df-sdl.git] / src / lib / vampimg / ImagingTarga.pas
index 5103f78e5e165fc80731a4c950d8a07ceec57e20..921f0097fac37bb5ce7e6a15670750c0c9d50002 100644 (file)
@@ -1,5 +1,4 @@
 {
-  $Id: ImagingTarga.pas 139 2008-09-18 02:01:42Z galfar $
   Vampyre Imaging Library
   by Marek Mauder
   http://imaginglib.sourceforge.net
@@ -43,6 +42,7 @@ type
   TTargaFileFormat = class(TImageFileFormat)
   protected
     FUseRLE: LongBool;
+    procedure Define; override;
     function LoadData(Handle: TImagingHandle; var Images: TDynImageDataArray;
       OnlyFirstLevel: Boolean): Boolean; override;
     function SaveData(Handle: TImagingHandle; const Images: TDynImageDataArray;
@@ -50,7 +50,6 @@ type
     procedure ConvertToSupported(var Image: TImageData;
       const Info: TImageFormatInfo); override;
   public
-    constructor Create; override;
     function TestFormat(Handle: TImagingHandle): Boolean; override;
   published
     { Controls that RLE compression is used during saving. Accessible trough
@@ -99,13 +98,11 @@ type
 
 { TTargaFileFormat class implementation }
 
-constructor TTargaFileFormat.Create;
+procedure TTargaFileFormat.Define;
 begin
-  inherited Create;
+  inherited;
   FName := STargaFormatName;
-  FCanLoad := True;
-  FCanSave := True;
-  FIsMultiImageFormat := False;
+  FFeatures := [ffLoad, ffSave];
   FSupportedFormats := TargaSupportedFormats;
 
   FUseRLE := TargaDefaultRLE;
@@ -200,6 +197,12 @@ begin
   begin
     // Read targa header
     Read(Handle, @Hdr, SizeOf(Hdr));
+    Hdr.ColorMapOff := LEtoN(Hdr.ColorMapOff);
+    Hdr.ColorMapLength := LEtoN(Hdr.ColorMapLength);
+    Hdr.XOrg := LEtoN(Hdr.XOrg);
+    Hdr.YOrg := LEtoN(Hdr.YOrg);
+    Hdr.Width := LEtoN(Hdr.Width);
+    Hdr.Height := LEtoN(Hdr.Height);
     // Skip image ID info
     Seek(Handle, Hdr.IDLength, smFromCurrent);
     // Determine image format