"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSImageLib/Src/Dds/LSIDds.h

00001 
00016 #ifndef __LSI_DDS_H__
00017 #define __LSI_DDS_H__
00018 
00019 #include "../LSIImageLib.h"
00020 #include "Vector/LSTLVector.h"
00021 
00022 namespace lsi {
00023 
00024         // == Enumerations.
00028         enum LSI_DDS_PIXEL_FORMAT_FLAGS {
00029                 LSI_DPFF_ALPHAPIXELS                    = 0x1,                                          
00030                 LSI_DPFF_ALPHA                                  = 0x2,                                          
00031                 LSI_DPFF_FOURCC                                 = 0x4,                                          
00032                 LSI_DPFF_RGB                                    = 0x40,                                         
00033                 LSI_DPFF_YUV                                    = 0x200,                                        
00034                 LSI_DPFF_LUMINANCE                              = 0x20000,                                      
00035         };
00036 
00040         enum LSI_DDS_FLAGS {
00041                 LSI_DF_CAPS                                             = 0x1,                                          
00042                 LSI_DF_HEIGHT                                   = 0x2,                                          
00043                 LSI_DF_WIDTH                                    = 0x4,                                          
00044                 LSI_DF_PITCH                                    = 0x8,                                          
00045                 LSI_DF_PIXELFORMAT                              = 0x1000,                                       
00046                 LSI_DF_MIPMAPCOUNT                              = 0x20000,                                      
00047                 LSI_DF_LINEARSIZE                               = 0x80000,                                      
00048                 LSI_DF_DEPTH                                    = 0x800000,                                     
00049         };
00050 
00057         class CDds {
00058         public :
00059                 // == Types.
00063 #pragma pack( push, 1 )
00064                 typedef struct LSI_DDS_PIXELFORMAT {
00065                         LSUINT32                                        ui32Size;
00066                         LSUINT32                                        ui32Flags;
00067                         LSUINT32                                        ui32FourCC;
00068                         LSUINT32                                        ui32RGBBitCount;
00069                         LSUINT32                                        ui32RBitMask;
00070                         LSUINT32                                        ui32GBitMask;
00071                         LSUINT32                                        ui32BBitMask;
00072                         LSUINT32                                        ui32ABitMask;
00073                 } * LPLSI_DDS_PIXELFORMAT, * const LPCLSI_DDS_PIXELFORMAT;
00074 #pragma pack( pop )
00075 
00079 #pragma pack( push, 1 )
00080                 typedef struct LSI_DDS_HEADER {
00081                         LSUINT32                                        ui32Size;
00082                         LSUINT32                                        ui32Flags;
00083                         LSUINT32                                        ui32Height;
00084                         LSUINT32                                        ui32Width;
00085                         LSUINT32                                        ui32PitchOrLinearSize;
00086                         LSUINT32                                        ui32Depth;
00087                         LSUINT32                                        ui32MipMapCount;
00088                         LSUINT32                                        ui32Reserved1[11];
00089                         LSI_DDS_PIXELFORMAT                     dpPixelFormat;
00090                         LSUINT32                                        ui32Caps;
00091                         LSUINT32                                        ui32Caps2;
00092                         LSUINT32                                        ui32Caps3;
00093                         LSUINT32                                        ui32Caps4;
00094                         LSUINT32                                        ui32Reserved2;
00095                 } * LPLSI_DDS_HEADER, * const LPCLSI_DDS_HEADER;
00096 #pragma pack( pop )
00097 
00098 
00099                 // == Functions.
00112                 static LSBOOL LSE_CALL                          LoadDds( const LSUINT8 * _pui8FileData, LSUINT32 _ui32DataLen,
00113                         LSUINT32 &_ui32Width, LSUINT32 &_ui32Height, LSI_PIXEL_FORMAT &_pfFormat,
00114                         CImageLib::CTexelBuffer &_tbReturn,
00115                         CVector<CImageLib::CTexelBuffer> &_vMipMaps );
00116 
00123                 static LSUINT32 LSE_CALL                        DdsBlockSize( LSI_PIXEL_FORMAT _pfFormat );
00124 
00131                 static LSI_PIXEL_FORMAT LSE_CALL        DdsPixelFormat( LSUINT32 _ui32FourCc );
00132 
00140                 static LSUINT32 LSE_CALL                        DdsScanlineWidth( LSUINT32 _ui32Width, LSI_PIXEL_FORMAT _pfFormat );
00141 
00148                 static LSUINT32 LSE_CALL                        DdsTotalScanlines( LSUINT32 _ui32Height );
00149 
00158                 static LSUINT32 LSE_CALL                        GetCompressedSize( LSUINT32 _ui32Width, LSUINT32 _ui32Height, LSUINT32 _ui32Factor );
00159 
00160         protected :
00161                 // == Functions.
00162                 
00163 
00164         };
00165 
00166 }       // namespace lsi
00167 
00168 #endif  // __LSI_DDS_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator