/*=========================================================================== * * DFIMG.H - Dave Humphrey (4 November 2000), uesp@m0use.net * *=========================================================================*/ #ifndef __DFIMG_H #define __DFIMG_H /* Required Includes */ #include "genutil.h" /*=========================================================================== * * Begin Defines * *=========================================================================*/ /* Need for loading of CIF files */ #define DFCIF_OFFSETLIST_SIZE 64 /*=========================================================================== * End of Defines *=========================================================================*/ /*=========================================================================== * * Class CDFImgFile Definition * *=========================================================================*/ class CDFImgFile { /*---------- Begin Protected Class Members -----------------------*/ protected: short XOffset; /* Image position offset */ short YOffset; short Width; short Height; /* Image size */ short Unknown; /* Unknown value */ int ImageSize; /* Size of the image data */ byte* pData; /* The raw image data */ boolean DestroyOnRead; /* Reset image contents in the Read() method? */ boolean HasOffsetList; /* For loading certain CIF images */ boolean HasNoHeader; /* For special CIF and some image files */ boolean HasCIFWeaponHeader; /* Indicates a special CIF header type */ int CIFGroupIndex; /* The weapon cif group index number */ /*---------- Begin Protected Class Methods ----------------------*/ protected: /* Helper input routines */ boolean ReadHeader (FILE* pFileHandle); boolean ReadData (FILE* pFileHandle); boolean ReadCompressedData (FILE* pFileHandle); /*---------- Begin Public Class Members --------------------------*/ public: /* Class Constructor/Destructor */ CDFImgFile(); virtual ~CDFImgFile() { Destroy(); } virtual void Destroy (void); /* Class get members */ short GetXOffset (void) { return (XOffset); } short GetYOffset (void) { return (YOffset); } short GetWidth (void) { return (Width); } short GetHeight (void) { return (Height); } short GetUnknown (void) { return (Unknown); } int GetImageSize (void) { return (ImageSize); } byte* GetImageData (void) { return (pData); } byte* GetData (void) { return (pData); } /* Is the image data compressed? */ boolean IsCompressed (void) { if (Unknown == 0x0002 || ImageSize != Width*Height) return (TRUE); return (FALSE); } /* Read in a image file */ boolean Load (const char* pFilename); /* Read in image data from a file stream */ virtual boolean Read (FILE* pFileHandle); /* Class set members */ void SetHasOffsetList (const boolean Value) { HasOffsetList = Value; } void SetHasNoHeader (const boolean Value) { HasNoHeader = Value; } void SetCIFGroupIndex (const int Index) { CIFGroupIndex = Index; } void SetHeight (const short Value) { Height = Value; } void SetWidth (const short Value) { Width = Value; } void SetImageSize (const int Value) { ImageSize = Value; } void SetHasCIFWeaponHeader (const boolean Value) { HasCIFWeaponHeader = Value; } }; /*=========================================================================== * End of Class CDFImgFile Definition *=========================================================================*/ #endif /*=========================================================================== * End of File DFImg.H *=========================================================================*/