#include "dkcOSIndependent.h"
#include "dkcMemoryStream.h"
#include "dkcRLE.c"
trash/dkcRLE.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。
構成 | |
struct | dkc_RLE |
struct | dkc_RLE_Header |
struct | dkc_RLE_Comp |
struct | dkc_RLE_NoComp |
マクロ定義 | |
#define | dkcdRLE_EOF_ID 0x00 |
#define | dkcdRLE_NOCOMPRESS_ID 0x01 |
#define | dkcdRLE_SIGNATURE 'RLE\0' |
RLEのシグネチャ(変更しても大丈夫だよ〜(多分)). | |
型定義 | |
typedef dkc_RLE | DKC_RLE |
typedef dkc_RLE_Header | DKC_RLE_HEADER |
typedef dkc_RLE_Comp | DKC_RLE_COMP |
typedef dkc_RLE_NoComp | DKC_RLE_NOCOMP |
関数 | |
DKC_EXTERN DKC_RLE *WINAPI | dkcAllocRLE () |
DKC_EXTERN int WINAPI | dkcFreeRLE (DKC_RLE **) |
DKC_EXTERN int WINAPI | dkcRLEEncode (DKC_RLE *ptr, DKC_MEMORYSTREAM *pms, DKC_RLE_HEADER *ph, const BYTE *src, USHORT ssize, size_t CloseProcessSize, ULONG sig, BYTE aEOF_ID, BYTE aABS_ID) |
DKC_EXTERN int WINAPI | dkcRLEDecode (DKC_RLE *p, DKC_MEMORYSTREAM *pms, const DKC_RLE_HEADER *ph, const BYTE *src, USHORT ssize, ULONG sig) |
|
trash/dkcRLE.h の 32 行で定義されています。 |
|
trash/dkcRLE.h の 34 行で定義されています。 |
|
RLEのシグネチャ(変更しても大丈夫だよ〜(多分)).
trash/dkcRLE.h の 36 行で定義されています。 |
|
|
|
|
|
|
|
|
|
参照先 DKC_RLE, と dkcAllocate().
00012 { 00013 DKC_RLE *p = (DKC_RLE *)dkcAllocate(sizeof(DKC_RLE)); 00014 return p; 00015 } |
|
参照先 DKC_RLE, dkcFree(), edk_FAILED, と NULL.
00017 { 00018 if(NULL==pp){ 00019 return edk_FAILED; 00020 } 00021 return dkcFree((void **)pp); 00022 } |
|
trash/dkcRLE.c の 251 行で定義されています。 参照先 BYTE, DKC_RLE, DKC_RLE_HEADER, DKC_RLE_NOCOMP, dkcMemoryStreamSeek(), dkcMemoryStreamTell, dkcMemoryStreamWrite(), edk_FAILED, edk_SignatureException, edk_SUCCEEDED, edkcMemoryStreamSeekSet, dkc_RLE_Header::mABS, dkc_RLE_Header::mEOF, dkc_RLE_Header::mSignature, と dkc_RLE::mTemp.
00254 { 00255 00256 size_t i=0; 00257 BYTE t; 00258 //DKC_RLE_COMP co; 00259 DKC_RLE_NOCOMP nco; 00260 //今のオフセット 00261 size_t old_mem_offset = dkcMemoryStreamTell(pms); 00262 00263 if(ph->mSignature != sig){ 00264 return edk_SignatureException; 00265 } 00266 00267 for(;i<ssize;i++) 00268 { 00269 t = src[i]; 00270 if(t==ph->mABS){ 00271 memcpy(&nco,&src[i],sizeof(nco)); 00272 dkcMemoryStreamWrite(pms,&src[i],nco.length); 00273 } 00274 else if(t == ph->mEOF) 00275 { 00276 break; 00277 }else{//compressed 00278 if(t <= 1){ 00279 goto BACK; 00280 } 00281 memset(p->mTemp,src[i + 1],t); 00282 dkcMemoryStreamWrite(pms,&(p->mTemp),t); 00283 00284 //一つ分update 00285 i++; 00286 } 00287 }//end of for 00288 00289 return edk_SUCCEEDED; 00290 BACK: 00291 00292 dkcMemoryStreamSeek(pms,old_mem_offset,edkcMemoryStreamSeekSet); 00293 00294 return edk_FAILED; 00295 00296 00297 } |
|
trash/dkcRLE.c の 195 行で定義されています。 参照先 BYTE, DKC_RLE, DKC_RLE_HEADER, dkcMemoryStreamSeek(), dkcMemoryStreamTell, dkcmNOT_ASSERT, DKUTIL_FAILED, edk_FAILED, edk_NoValueToProcess, edk_SUCCEEDED, edkcMemoryStreamSeekSet, getRLE(), dkc_RLE_Header::mABS, dkc_RLE_Header::mCompressedSize, dkc_RLE_Header::mEOF, dkc_RLE_Header::mOriginSize, dkc_RLE_Header::mSignature, と dkc_RLE::mTemp.
00198 { 00199 00200 //dest couter 00201 size_t i = 0; 00202 //戻り値 00203 int r = edk_FAILED; 00204 //テンポラリ 00205 int tr; 00206 00207 00208 /* 00209 0 最初の状態 00210 1 圧縮書きこみ中 00211 2 非圧縮書き込み中 00212 */ 00213 //int state = 0; 00214 //今のオフセット 00215 size_t old_mem_offset = dkcMemoryStreamTell(pms); 00216 //全部倒す 00217 memset(p->mTemp,0,sizeof(p->mTemp)); 00218 00219 00220 if( i < ssize){ 00221 00222 tr = getRLE(pms,src,ssize,i,aABS_ID,CloseProcessSize,old_mem_offset); 00223 if(DKUTIL_FAILED(tr)){ 00224 goto BACK; 00225 } 00226 if(dkcMemoryStreamTell(pms) - old_mem_offset >= CloseProcessSize) 00227 { 00228 return edk_NoValueToProcess; 00229 00230 } 00231 r = edk_SUCCEEDED; 00232 } 00233 ph->mABS = aABS_ID; 00234 ph->mEOF = aEOF_ID; 00235 dkcmNOT_ASSERT(USHRT_MAX < dkcMemoryStreamTell(pms) - old_mem_offset); 00236 ph->mCompressedSize = (USHORT)(dkcMemoryStreamTell(pms) - old_mem_offset); 00237 ph->mOriginSize = ssize; 00238 ph->mSignature = sig; 00239 00240 00241 return r; 00242 BACK: 00243 //元に戻す・・・。なんか今までの処理が無駄っぽい・・・。゚(゚´Д`゚)゚。 00244 dkcMemoryStreamSeek(pms,old_mem_offset,edkcMemoryStreamSeekSet); 00245 return r; 00246 } |