/* -----------------------------------------------------------------------------
-DDS Library
+ DDS Library
-Based on code from Nvidia's DDS example:
-http://www.nvidia.com/object/dxtc_decompression_code.html
+ Based on code from Nvidia's DDS example:
+ http://www.nvidia.com/object/dxtc_decompression_code.html
-Copyright (c) 2003 Randy Reddig
-All rights reserved.
+ Copyright (c) 2003 Randy Reddig
+ All rights reserved.
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
-Redistributions of source code must retain the above copyright notice, this list
-of conditions and the following disclaimer.
+ Redistributions of source code must retain the above copyright notice, this list
+ of conditions and the following disclaimer.
-Redistributions in binary form must reproduce the above copyright notice, this
-list of conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.
+ Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
-Neither the names of the copyright holders nor the names of its contributors may
-be used to endorse or promote products derived from this software without
-specific prior written permission.
+ Neither the names of the copyright holders nor the names of its contributors may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
------------------------------------------------------------------------------ */
+ ----------------------------------------------------------------------------- */
/* 16bpp stuff */
-#define DDS_LOW_5 0x001F;
-#define DDS_MID_6 0x07E0;
-#define DDS_HIGH_5 0xF800;
-#define DDS_MID_555 0x03E0;
-#define DDS_HI_555 0x7C00;
+#define DDS_LOW_5 0x001F;
+#define DDS_MID_6 0x07E0;
+#define DDS_HIGH_5 0xF800;
+#define DDS_MID_555 0x03E0;
+#define DDS_HI_555 0x7C00;
/* structures */
typedef struct ddsColorKey_s
{
- unsigned int colorSpaceLowValue;
- unsigned int colorSpaceHighValue;
-}
+ unsigned int colorSpaceLowValue;
+ unsigned int colorSpaceHighValue;
+}
ddsColorKey_t;
typedef struct ddsCaps_s
{
- unsigned int caps1;
- unsigned int caps2;
- unsigned int caps3;
- unsigned int caps4;
-}
+ unsigned int caps1;
+ unsigned int caps2;
+ unsigned int caps3;
+ unsigned int caps4;
+}
ddsCaps_t;
typedef struct ddsMultiSampleCaps_s
{
- unsigned short flipMSTypes;
- unsigned short bltMSTypes;
+ unsigned short flipMSTypes;
+ unsigned short bltMSTypes;
}
ddsMultiSampleCaps_t;
typedef struct ddsPixelFormat_s
{
- unsigned int size;
- unsigned int flags;
- unsigned int fourCC;
+ unsigned int size;
+ unsigned int flags;
+ unsigned int fourCC;
union
{
- unsigned int rgbBitCount;
- unsigned int yuvBitCount;
- unsigned int zBufferBitDepth;
- unsigned int alphaBitDepth;
- unsigned int luminanceBitCount;
- unsigned int bumpBitCount;
- unsigned int privateFormatBitCount;
+ unsigned int rgbBitCount;
+ unsigned int yuvBitCount;
+ unsigned int zBufferBitDepth;
+ unsigned int alphaBitDepth;
+ unsigned int luminanceBitCount;
+ unsigned int bumpBitCount;
+ unsigned int privateFormatBitCount;
};
union
{
- unsigned int rBitMask;
- unsigned int yBitMask;
- unsigned int stencilBitDepth;
- unsigned int luminanceBitMask;
- unsigned int bumpDuBitMask;
- unsigned int operations;
+ unsigned int rBitMask;
+ unsigned int yBitMask;
+ unsigned int stencilBitDepth;
+ unsigned int luminanceBitMask;
+ unsigned int bumpDuBitMask;
+ unsigned int operations;
};
union
{
- unsigned int gBitMask;
- unsigned int uBitMask;
- unsigned int zBitMask;
- unsigned int bumpDvBitMask;
- ddsMultiSampleCaps_t multiSampleCaps;
+ unsigned int gBitMask;
+ unsigned int uBitMask;
+ unsigned int zBitMask;
+ unsigned int bumpDvBitMask;
+ ddsMultiSampleCaps_t multiSampleCaps;
};
union
{
- unsigned int bBitMask;
- unsigned int vBitMask;
- unsigned int stencilBitMask;
- unsigned int bumpLuminanceBitMask;
+ unsigned int bBitMask;
+ unsigned int vBitMask;
+ unsigned int stencilBitMask;
+ unsigned int bumpLuminanceBitMask;
};
union
{
- unsigned int rgbAlphaBitMask;
- unsigned int yuvAlphaBitMask;
- unsigned int luminanceAlphaBitMask;
- unsigned int rgbZBitMask;
- unsigned int yuvZBitMask;
+ unsigned int rgbAlphaBitMask;
+ unsigned int yuvAlphaBitMask;
+ unsigned int luminanceAlphaBitMask;
+ unsigned int rgbZBitMask;
+ unsigned int yuvZBitMask;
};
}
ddsPixelFormat_t;
typedef struct ddsBuffer_s
{
/* magic: 'dds ' */
- char magic[ 4 ];
-
+ char magic[ 4 ];
+
/* directdraw surface */
- unsigned int size;
- unsigned int flags;
- unsigned int height;
- unsigned int width;
+ unsigned int size;
+ unsigned int flags;
+ unsigned int height;
+ unsigned int width;
union
{
- int pitch;
- unsigned int linearSize;
+ int pitch;
+ unsigned int linearSize;
};
- unsigned int backBufferCount;
+ unsigned int backBufferCount;
union
{
- unsigned int mipMapCount;
- unsigned int refreshRate;
- unsigned int srcVBHandle;
+ unsigned int mipMapCount;
+ unsigned int refreshRate;
+ unsigned int srcVBHandle;
};
- unsigned int alphaBitDepth;
- unsigned int reserved;
- void *surface;
+ unsigned int alphaBitDepth;
+ unsigned int reserved;
+ unsigned int surface; // void *surface;
union
{
- ddsColorKey_t ckDestOverlay;
- unsigned int emptyFaceColor;
+ ddsColorKey_t ckDestOverlay;
+ unsigned int emptyFaceColor;
};
- ddsColorKey_t ckDestBlt;
- ddsColorKey_t ckSrcOverlay;
- ddsColorKey_t ckSrcBlt;
+ ddsColorKey_t ckDestBlt;
+ ddsColorKey_t ckSrcOverlay;
+ ddsColorKey_t ckSrcBlt;
union
{
- ddsPixelFormat_t pixelFormat;
- unsigned int fvf;
+ ddsPixelFormat_t pixelFormat;
+ unsigned int fvf;
};
- ddsCaps_t ddsCaps;
- unsigned int textureStage;
-
+ ddsCaps_t ddsCaps;
+ unsigned int textureStage;
+
/* data (Varying size) */
- unsigned char data[ 4 ];
+ unsigned char data[ 4 ];
}
ddsBuffer_t;
typedef struct ddsColorBlock_s
{
- unsigned short colors[ 2 ];
- unsigned char row[ 4 ];
+ unsigned short colors[ 2 ];
+ unsigned char row[ 4 ];
}
ddsColorBlock_t;
typedef struct ddsAlphaBlockExplicit_s
{
- unsigned short row[ 4 ];
+ unsigned short row[ 4 ];
}
ddsAlphaBlockExplicit_t;
typedef struct ddsAlphaBlock3BitLinear_s
{
- unsigned char alpha0;
- unsigned char alpha1;
- unsigned char stuff[ 6 ];
+ unsigned char alpha0;
+ unsigned char alpha1;
+ unsigned char stuff[ 6 ];
}
ddsAlphaBlock3BitLinear_t;
typedef struct ddsColor_s
{
- unsigned char r, g, b, a;
+ unsigned char r, g, b, a;
}
ddsColor_t;
/* public functions */
-int DDSGetInfo( ddsBuffer_t *dds, int *width, int *height, ddsPF_t *pf );
-int DDSDecompress( ddsBuffer_t *dds, unsigned char *pixels );
+int DDSGetInfo( ddsBuffer_t *dds, int *width, int *height, ddsPF_t *pf );
+int DDSDecompress( ddsBuffer_t *dds, unsigned char *pixels );