#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 }
|
1.3.6