reman3/Rayman_X/cpa/tempgrp/CMP/PC/CMP_Main.c

127 lines
3.4 KiB
C

#define D_CMP_Input_VariableDefine
#include "CMP_CPA.h"
#include "ErmCmp.h"
#include "CMP_File.h"
#include "CMP_Pub.h"
#include "CMP_DIFF.h"
#include "CMP_LZSS.h"
#define C_TemporaryFile "Temp.tmp"
/**************************************************************************/
void CMP_fn_vFirstInit()
{
Erm_M_InitErrMsg(CMP);
}
/**************************************************************************/
void CMP_fn_vCompressFile(char *_szFileName,unsigned char _ucCompressMethod)
{
rename(_szFileName,C_TemporaryFile);
CMP_fn_vCompressFileIn(C_TemporaryFile,_szFileName,_ucCompressMethod);
DeleteFile(C_TemporaryFile);
}
/**************************************************************************/
void CMP_fn_vCompressFileIn(char *_szInputFileName,char *_szOutputFileName,unsigned char _ucCompressMethod)
{
#if defined(D_CMP_LZSS)
if (_ucCompressMethod==D_CMP_LZSS)
{
FILE *p_stInputFile = NULL;
tdstBitFile *p_stOutputBitFile = NULL;
p_stInputFile = M_p_stOpenInput(_szInputFileName);
if (p_stInputFile!=NULL)
{
p_stOutputBitFile = CMP_fn_p_stOpenOutputBitFile(_szOutputFileName);
if (p_stOutputBitFile!=NULL)
{
CMP_LZSS_fn_vCompressFile(p_stInputFile,p_stOutputBitFile);
CMP_fn_vCloseOutputBitFile(p_stOutputBitFile);
}
M_vCloseInput(p_stInputFile);
}
}
#endif /* D_CMP_LZSS */
#if defined(D_CMP_DIFF)
if (_ucCompressMethod==D_CMP_DIFF)
{
FILE *p_stInputFile = NULL;
FILE *p_stOutputFile = NULL;
p_stInputFile = M_p_stOpenInput(_szInputFileName);
if (p_stInputFile!=NULL)
{
p_stOutputFile = M_p_stOpenOutput(_szOutputFileName);
if (p_stOutputFile!=NULL)
{
CMP_DIFF_fn_vCompressFile(p_stInputFile,p_stOutputFile);
M_vCloseOutput(p_stOutputFile);
}
M_vCloseInput(p_stInputFile);
}
}
#endif /* D_CMP_DIFF */
}
/**************************************************************************/
unsigned char CMP_fn_bExpandFile(char *_szFileName,unsigned char _ucCompressMethod)
{
unsigned char ucReturn = TRUE;
rename(_szFileName,C_TemporaryFile);
ucReturn = CMP_fn_bExpandFileIn(C_TemporaryFile,_szFileName,_ucCompressMethod);
DeleteFile(C_TemporaryFile);
return(ucReturn);
}
/**************************************************************************/
unsigned char CMP_fn_bExpandFileIn(char *_szInputFileName,char *_szOutputFileName,unsigned char _ucCompressMethod)
{
unsigned char ucReturn = FALSE;
#if defined(D_CMP_LZSS)
if (_ucCompressMethod==D_CMP_LZSS)
{
tdstBitFile *p_stInputBitFile = NULL;
FILE *p_stOutputFile = NULL;
p_stInputBitFile = CMP_fn_p_stOpenInputBitFile(_szInputFileName);
if (p_stInputBitFile!=NULL)
{
p_stOutputFile = M_p_stOpenOutput(_szOutputFileName);
if (p_stOutputFile!=NULL)
{
CMP_LZSS_fn_vExpandFile(p_stInputBitFile,p_stOutputFile);
ucReturn = TRUE;
M_vCloseOutput(p_stOutputFile);
}
CMP_fn_vCloseInputBitFile(p_stInputBitFile);
}
}
#endif /* D_CMP_LZSS */
#if defined(D_CMP_DIFF)
if (_ucCompressMethod==D_CMP_DIFF)
{
FILE *p_stInputFile = NULL;
FILE *p_stOutputFile = NULL;
p_stInputFile = M_p_stOpenInput(_szInputFileName);
if (p_stInputFile!=NULL)
{
p_stOutputFile = M_p_stOpenOutput(_szOutputFileName);
if (p_stOutputFile!=NULL)
{
CMP_DIFF_fn_vExpandFile(p_stInputFile,p_stOutputFile);
ucReturn = TRUE;
M_vCloseOutput(p_stOutputFile);
}
M_vCloseInput(p_stInputFile);
}
}
#endif /* D_CMP_DIFF */
return(ucReturn);
}
/**************************************************************************/