|
From: Charles L. <cn...@us...> - 2005-12-18 07:24:17
|
Update of /cvsroot/hgengine/Mercury/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4698 Modified Files: MercuryFiles.cpp MercuryFiles.h MercuryTexture.cpp MercuryUtil.cpp Log Message: Use MercuryFiles for more Index: MercuryUtil.cpp =================================================================== RCS file: /cvsroot/hgengine/Mercury/src/MercuryUtil.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** MercuryUtil.cpp 10 Oct 2005 20:59:46 -0000 1.7 --- MercuryUtil.cpp 18 Dec 2005 07:24:08 -0000 1.8 *************** *** 1,5 **** #include "MercuryUtil.h" #include "Crash/archCrash.h" ! CString ConvertToCFormat( const CString & ncf ) --- 1,5 ---- #include "MercuryUtil.h" #include "Crash/archCrash.h" ! #include "MercuryFiles.h" CString ConvertToCFormat( const CString & ncf ) *************** *** 60,102 **** return ret; } long DumpFromFile( const CString & filename, char * & data ) { data = NULL; ! FILE * f = fopen( filename, "rb" ); if ( f == NULL ) return -1; ! fseek( f, 0, SEEK_END ); ! long lof = ftell( f ); ! if ( lof < 0 ) ! { ! fclose( f ); ! return -1; ! } ! fseek( f, 0, SEEK_SET ); ! data = (char*)malloc( lof ); ! long read = fread( data, 1, lof, f ); ! if ( read < lof ) { ! fclose( f ); ! free ( data ); return -1; } ! fclose( f ); ! return read; } bool DumpToFile( const CString & filename, const char * data, long bytes ) { ! FILE * f = fopen( filename, "wb" ); if ( f == NULL ) return false; ! if ( fwrite( data, bytes, 1, f ) != bytes ) ! { ! fclose( f ); ! return false; ! } ! fclose( f ); ! return true; } --- 60,100 ---- return ret; } + #include <iostream> + long DumpFromFile( const CString & filename, char * & data ) { data = NULL; ! MercuryFile * f = FILEMAN.Open( filename ); ! if ( f == NULL ) return -1; ! ! unsigned long length = f->Length(); ! ! data = (char*)malloc( length ); ! ! if ( f->Read( data, length ) != length ) { ! free( data ); ! data = NULL; ! SAFE_DELETE(f); return -1; } ! SAFE_DELETE(f); ! return length; } bool DumpToFile( const CString & filename, const char * data, long bytes ) { ! MercuryFile * f = FILEMAN.Open( filename, FILE_WRITE_ONLY ); if ( f == NULL ) return false; ! ! bool ret = f->Write( (void*) data, bytes ); ! ! SAFE_DELETE(f); ! ! return ret; } *************** *** 116,123 **** bool FileExists( const CString & filename ) { ! FILE * f = fopen( filename.c_str(), "r" ); if ( f == NULL ) return false; ! fclose ( f ); return true; } --- 114,121 ---- bool FileExists( const CString & filename ) { ! MercuryFile * f = FILEMAN.Open( filename.c_str() ); if ( f == NULL ) return false; ! SAFE_DELETE( f ); return true; } Index: MercuryFiles.h =================================================================== RCS file: /cvsroot/hgengine/Mercury/src/MercuryFiles.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MercuryFiles.h 18 Dec 2005 06:52:43 -0000 1.1 --- MercuryFiles.h 18 Dec 2005 07:24:08 -0000 1.2 *************** *** 17,25 **** }; ! class MercuryFileObject { public: ! MercuryFileObject(); ! ~MercuryFileObject(); virtual bool Init( const CString & sPath, FilePermission p ); --- 17,25 ---- }; ! class MercuryFile { public: ! MercuryFile(); ! ~MercuryFile(); virtual bool Init( const CString & sPath, FilePermission p ); *************** *** 43,47 **** }; ! class MercuryFileObjectDirect: public MercuryFileObject { public: --- 43,47 ---- }; ! class MercuryFileObjectDirect: public MercuryFile { public: *************** *** 69,73 **** public: virtual void Init() { } ! virtual MercuryFileObject * GetFileHandle( const CString & sPath, FilePermission p ) = 0; virtual void ListDirectory( const CString & sPath, std::vector< CString > & output, bool bDirsOnly ) = 0; }; --- 69,73 ---- public: virtual void Init() { } ! virtual MercuryFile * GetFileHandle( const CString & sPath, FilePermission p ) = 0; virtual void ListDirectory( const CString & sPath, std::vector< CString > & output, bool bDirsOnly ) = 0; }; *************** *** 76,80 **** { public: ! virtual MercuryFileObject * GetFileHandle( const CString & sPath, FilePermission p ); virtual void ListDirectory( const CString & sPath, std::vector< CString > & output, bool bDirsOnly ); }; --- 76,80 ---- { public: ! virtual MercuryFile * GetFileHandle( const CString & sPath, FilePermission p ); virtual void ListDirectory( const CString & sPath, std::vector< CString > & output, bool bDirsOnly ); }; *************** *** 89,93 **** inline void CheckInit() { if ( m_bInit ) return; Init(); } ! MercuryFileObject * Open( const CString & sPath, FilePermission p = FILE_READ_ONLY ); void ListDirectory( const CString & sPath, std::vector< CString > & output, bool bDirsOnly=false ); private: --- 89,93 ---- inline void CheckInit() { if ( m_bInit ) return; Init(); } ! MercuryFile * Open( const CString & sPath, FilePermission p = FILE_READ_ONLY ); void ListDirectory( const CString & sPath, std::vector< CString > & output, bool bDirsOnly=false ); private: Index: MercuryFiles.cpp =================================================================== RCS file: /cvsroot/hgengine/Mercury/src/MercuryFiles.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MercuryFiles.cpp 18 Dec 2005 06:52:43 -0000 1.1 --- MercuryFiles.cpp 18 Dec 2005 07:24:08 -0000 1.2 *************** *** 4,18 **** //Core base only. ! MercuryFileObject::MercuryFileObject() { //No code } ! MercuryFileObject::~MercuryFileObject() { //No code } ! bool MercuryFileObject::Init( const CString &sPath, FilePermission p ) { m_sPath = sPath; --- 4,18 ---- //Core base only. ! MercuryFile::MercuryFile() { //No code } ! MercuryFile::~MercuryFile() { //No code } ! bool MercuryFile::Init( const CString &sPath, FilePermission p ) { m_sPath = sPath; *************** *** 23,27 **** MercuryFileObjectDirect::MercuryFileObjectDirect( ): ! MercuryFileObject( ) { m_fF = NULL; --- 23,27 ---- MercuryFileObjectDirect::MercuryFileObjectDirect( ): ! MercuryFile( ) { m_fF = NULL; *************** *** 48,52 **** bool MercuryFileObjectDirect::Init( const CString & fName, FilePermission p ) { ! MercuryFileObject::Init( fName, p ); if ( m_fF != NULL ) SAFE_DELETE( m_fF ); --- 48,52 ---- bool MercuryFileObjectDirect::Init( const CString & fName, FilePermission p ) { ! MercuryFile::Init( fName, p ); if ( m_fF != NULL ) SAFE_DELETE( m_fF ); *************** *** 55,65 **** { case FILE_READ_ONLY: ! m_fF = fopen( fName.c_str(), "r" ); break; case FILE_WRITE_ONLY: ! m_fF = fopen( fName.c_str(), "w" ); break; case FILE_READ_AND_WRITE: ! m_fF = fopen( fName.c_str(), "w+" ); break; case FILE_APPEND: --- 55,65 ---- { case FILE_READ_ONLY: ! m_fF = fopen( fName.c_str(), "rb" ); break; case FILE_WRITE_ONLY: ! m_fF = fopen( fName.c_str(), "wb" ); break; case FILE_READ_AND_WRITE: ! m_fF = fopen( fName.c_str(), "wb+" ); break; case FILE_APPEND: *************** *** 127,133 **** } ! MercuryFileObject * MercuryFileDirverDirect::GetFileHandle( const CString & sPath, FilePermission p ) { ! MercuryFileObject * ret = new MercuryFileObjectDirect; if ( ret->Init( sPath, p ) ) return ret; --- 127,133 ---- } ! MercuryFile * MercuryFileDirverDirect::GetFileHandle( const CString & sPath, FilePermission p ) { ! MercuryFile * ret = new MercuryFileObjectDirect; if ( ret->Init( sPath, p ) ) return ret; *************** *** 201,208 **** } ! MercuryFileObject * MercuryFileManager::Open( const CString & sPath, FilePermission p ) { CheckInit(); ! MercuryFileObject * ret; for ( unsigned int i = 0; i < m_Drivers->size(); i++ ) { --- 201,208 ---- } ! MercuryFile * MercuryFileManager::Open( const CString & sPath, FilePermission p ) { CheckInit(); ! MercuryFile * ret; for ( unsigned int i = 0; i < m_Drivers->size(); i++ ) { Index: MercuryTexture.cpp =================================================================== RCS file: /cvsroot/hgengine/Mercury/src/MercuryTexture.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** MercuryTexture.cpp 10 Dec 2005 06:54:18 -0000 1.22 --- MercuryTexture.cpp 18 Dec 2005 07:24:08 -0000 1.23 *************** *** 4,7 **** --- 4,8 ---- #include "MercuryTextureManager.h" #include "MercuryLog.h" + #include "MercuryFiles.h" MercuryTexture::MercuryTexture() *************** *** 160,166 **** void PNGRead( png_struct *png, png_byte *p, png_size_t size ) { ! FILE* f = (FILE*)png->io_ptr; ! int got = fread(p, 1, size, f); if( got == -1 ) --- 161,167 ---- void PNGRead( png_struct *png, png_byte *p, png_size_t size ) { ! MercuryFile * f = (MercuryFile*)png->io_ptr; ! int got = f->Read( p, size ); if( got == -1 ) *************** *** 185,192 **** //open file and test for it being a png ! FILE *fp = fopen(path.c_str(), "rb"); if (!fp) abort_("[read_png_file] File %s could not be opened for reading"); ! fread(header, 1, 8, fp); if (png_sig_cmp(header, 0, 8)) abort_("[read_png_file] File %s is not recognized as a PNG file"); --- 186,193 ---- //open file and test for it being a png ! MercuryFile *fp = FILEMAN.Open( path.c_str() ); if (!fp) abort_("[read_png_file] File %s could not be opened for reading"); ! fp->Read(header, 8 ); if (png_sig_cmp(header, 0, 8)) abort_("[read_png_file] File %s is not recognized as a PNG file"); *************** *** 233,237 **** m_alpha = 1; ! fclose(fp); m_data = new unsigned char[sizeof(unsigned char) * m_height * m_width * 4]; --- 234,238 ---- m_alpha = 1; ! SAFE_DELETE(fp); m_data = new unsigned char[sizeof(unsigned char) * m_height * m_width * 4]; |