00001
00031 #ifndef DKUTIL_C_RLE_H
00032 #define DKUTIL_C_RLE_H
00033
00034
00035 #include "dkcOSIndependent.h"
00036 #include "dkcMemoryStream.h"
00037
00038 #define dkcdRLE_EOF_ID 0x01
00039
00040 #define dkcdRLE_NOCOMPRESS_ID 0x00
00041
00042 #define dkcdRLE_SIGNATURE 'RLE\0'
00043
00044 typedef struct dkc_RLE
00045 {
00047 BYTE mTemp[256];
00049
00050 }DKC_RLE;
00051
00052
00053
00054 typedef struct dkc_RLE_Header{
00056 unsigned long mSignature;
00058 USHORT mOriginSize;
00060 USHORT mCompressedSize;
00061
00063 BYTE mEOF;
00064
00066 BYTE mABS;
00067 }DKC_RLE_HEADER;
00068
00069 typedef struct dkc_RLE_Comp{
00070 BYTE length;
00071 BYTE data;
00072 }DKC_RLE_COMP;
00073
00074 typedef struct dkc_RLE_NoComp{
00075 BYTE sig;
00076 USHORT length;
00077 }DKC_RLE_NOCOMP;
00078
00079
00080 DKC_EXTERN DKC_RLE *WINAPI dkcAllocRLE();
00081
00082 DKC_EXTERN int WINAPI dkcFreeRLE(DKC_RLE **);
00083
00084
00085
00086
00107 DKC_EXTERN int WINAPI dkcRLEEncode(DKC_RLE *ptr,DKC_MEMORYSTREAM *pms,DKC_RLE_HEADER *ph,
00108 BYTE *dest,size_t dsize,const BYTE *src,USHORT ssize,
00109 size_t CloseProcessSize,ULONG sig,BYTE aEOF_ID,BYTE aABS_ID);
00119 DKC_EXTERN int WINAPI dkcRLEDecode(DKC_RLE *p,DKC_MEMORYSTREAM *pms,
00120 const DKC_RLE_HEADER *ph,const BYTE *src,USHORT ssize,
00121 ULONG sig);
00122
00123 typedef struct dkc_RLEPackBits_Header{
00125 size_t mOriginSize;
00127 size_t mCompressedSize;
00129 int mCount;
00130 }DKC_RLE_PACKBITS_HEADER;
00131
00132
00133 DKC_EXTERN int WINAPI dkcRLEPackBitsEncode(DKC_RLE_PACKBITS_HEADER *p,
00134 BYTE *dest,size_t dsize,
00135 const BYTE *src,size_t ssize,BYTE count);
00136
00137 DKC_EXTERN int WINAPI dkcRLEPackBitsDecode(DKC_RLE_PACKBITS_HEADER *p,
00138 BYTE *dest,size_t dsize,
00139 const BYTE *src,size_t ssize);
00140
00141 #if !defined( DKUTIL_C_RLE_C ) && defined(USE_DKC_INDEPENDENT_INCLUDE)
00142 # include "dkcRLE.c"
00143 #endif
00144
00145 #endif //end of include once