92 lines
2.9 KiB
C
92 lines
2.9 KiB
C
//
|
|
// Header file for compression library
|
|
//
|
|
|
|
#ifndef _COMPRESSORLIB_H
|
|
#define _COMPRESSORLIB_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
#if defined(LINUX)
|
|
#define _stdcall
|
|
#else
|
|
#include "Windows.h"
|
|
#endif
|
|
|
|
typedef enum
|
|
{
|
|
FORMAT_COMP_ATI2N,
|
|
FORMAT_COMP_ATI2N_DXT5,
|
|
FORMAT_COMP_TOOBIG
|
|
} COMPRESSED_FORMAT;
|
|
|
|
|
|
typedef enum
|
|
{
|
|
FORMAT_ARGB_8888,
|
|
FORMAT_ARGB_TOOBIG
|
|
} UNCOMPRESSED_FORMAT;
|
|
|
|
|
|
typedef enum
|
|
{
|
|
COMPRESSOR_ERROR_NONE,
|
|
COMPRESSOR_ERROR_NO_INPUT_DATA,
|
|
COMPRESSOR_ERROR_NO_OUTPUT_POINTER,
|
|
COMPRESSOR_ERROR_UNSUPPORTED_SOURCE_FORMAT,
|
|
COMPRESSOR_ERROR_UNSUPPORTED_DESTINATION_FORMAT,
|
|
COMPRESSOR_ERROR_UNABLE_TO_INIT_CODEC,
|
|
COMPRESSOR_ERROR_GENERIC
|
|
} COMPRESSOR_ERROR;
|
|
|
|
|
|
|
|
//
|
|
// Compressor entry point
|
|
//
|
|
// Parameters -
|
|
//
|
|
// width - width of input image in pixels
|
|
// height - height of input image in pixels
|
|
// sourceFormat - format of source texture (must be ARGB_8888 at the moment)
|
|
// destinationFormat - format of output texture (can be ATI2N or ATI2N_DXT5)
|
|
// inputData - pointer to uncompressed texture data
|
|
// dataOut - address of pointer that will point to the compressed data
|
|
// outDataSize - filled with the size of the compressed data buffer (can be NULL)
|
|
//
|
|
|
|
COMPRESSOR_ERROR _stdcall CompressTexture(DWORD width,
|
|
DWORD height,
|
|
UNCOMPRESSED_FORMAT sourceFormat,
|
|
COMPRESSED_FORMAT destinationFormat,
|
|
void *inputData,
|
|
void **dataOut,
|
|
DWORD *outDataSize);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif //__cplusplus
|
|
|
|
typedef void (*FnDeleteDataATI)(void *pData);
|
|
typedef COMPRESSOR_ERROR (*FnCompressTextureATI)(DWORD width,
|
|
DWORD height,
|
|
UNCOMPRESSED_FORMAT sourceFormat,
|
|
COMPRESSED_FORMAT destinationFormat,
|
|
void *inputData,
|
|
void **dataOut,
|
|
DWORD *outDataSize);
|
|
|
|
extern void (*DeleteDataATI)(void *pData);
|
|
extern COMPRESSOR_ERROR (*CompressTextureATI)(DWORD width,
|
|
DWORD height,
|
|
UNCOMPRESSED_FORMAT sourceFormat,
|
|
COMPRESSED_FORMAT destinationFormat,
|
|
void *inputData,
|
|
void **dataOut,
|
|
DWORD *outDataSize);
|
|
|
|
#endif // _COMPRESSORLIB_H
|