00001
00025 #ifndef DKUTILC_RLE_H
00026 #define DKUTILC_RLE_H
00027
00028
00029 #include "dkcOSIndependent.h"
00030 #include "dkcMemoryStream.h"
00031
00032 #define dkcdRLE_EOF_ID 0x00
00033
00034 #define dkcdRLE_NOCOMPRESS_ID 0x01
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 **);
00095 DKC_EXTERN int WINAPI dkcRLEEncode(DKC_RLE *ptr,DKC_MEMORYSTREAM *pms,DKC_RLE_HEADER *ph,
00096 const BYTE *src,USHORT ssize,
00097 size_t CloseProcessSize,ULONG sig,BYTE aEOF_ID,BYTE aABS_ID);
00107 DKC_EXTERN int WINAPI dkcRLEDecode(DKC_RLE *p,DKC_MEMORYSTREAM *pms,
00108 const DKC_RLE_HEADER *ph,const BYTE *src,USHORT ssize,
00109 ULONG sig);
00110
00111
00112
00113
00114
00115 #ifndef DKUTILC_RLE_C
00116 # include "dkcRLE.c"
00117 #endif
00118
00119 #endif //end of include once