00001
00025 #ifndef DKUTIL_C_RLE_H
00026 #define DKUTIL_C_RLE_H
00027
00028
00029 #include "dkcOSIndependent.h"
00030 #include "dkcMemoryStream.h"
00031
00032 #define dkcdRLE_EOF_ID 0x01
00033
00034 #define dkcdRLE_NOCOMPRESS_ID 0x00
00035
00036 #define dkcdRLE_SIGNATURE 'RLE\0'
00037
00038 typedef struct dkc_RLE
00039 {
00041 BYTE mTemp[256];
00043
00044 }DKC_RLE;
00045
00046
00047
00048 typedef struct dkc_RLE_Header{
00050 unsigned long mSignature;
00052 USHORT mOriginSize;
00054 USHORT mCompressedSize;
00055
00057 BYTE mEOF;
00058
00060 BYTE mABS;
00061 }DKC_RLE_HEADER;
00062
00063 typedef struct dkc_RLE_Comp{
00064 BYTE length;
00065 BYTE data;
00066 }DKC_RLE_COMP;
00067
00068 typedef struct dkc_RLE_NoComp{
00069 BYTE sig;
00070 USHORT length;
00071 }DKC_RLE_NOCOMP;
00072
00073
00074 DKC_EXTERN DKC_RLE *WINAPI dkcAllocRLE();
00075
00076 DKC_EXTERN int WINAPI dkcFreeRLE(DKC_RLE **);
00077
00078
00079
00080
00101 DKC_EXTERN int WINAPI dkcRLEEncode(DKC_RLE *ptr,DKC_MEMORYSTREAM *pms,DKC_RLE_HEADER *ph,
00102 BYTE *dest,size_t dsize,const BYTE *src,USHORT ssize,
00103 size_t CloseProcessSize,ULONG sig,BYTE aEOF_ID,BYTE aABS_ID);
00113 DKC_EXTERN int WINAPI dkcRLEDecode(DKC_RLE *p,DKC_MEMORYSTREAM *pms,
00114 const DKC_RLE_HEADER *ph,const BYTE *src,USHORT ssize,
00115 ULONG sig);
00116
00117 typedef struct dkc_RLEPackBits_Header{
00119 size_t mOriginSize;
00121 size_t mCompressedSize;
00123 int mCount;
00124 }DKC_RLE_PACKBITS_HEADER;
00125
00126
00127 DKC_EXTERN int WINAPI dkcRLEPackBitsEncode(DKC_RLE_PACKBITS_HEADER *p,
00128 BYTE *dest,size_t dsize,
00129 const BYTE *src,size_t ssize,BYTE count);
00130
00131 DKC_EXTERN int WINAPI dkcRLEPackBitsDecode(DKC_RLE_PACKBITS_HEADER *p,
00132 BYTE *dest,size_t dsize,
00133 const BYTE *src,size_t ssize);
00134
00135 #if !defined( DKUTIL_C_RLE_C ) && defined(USE_DKC_INDEPENDENT_INCLUDE)
00136 # include "dkcRLE.c"
00137 #endif
00138
00139 #endif //end of include once