[Scummvm-cvs-logs] CVS: scummvm/scumm/smush chunk.cpp,1.6,1.7 chunk.h,1.4,1.5 player.cpp,1.12,1.13 player.h,1.6,1.7
Pawe? Ko?odziejski
aquadran at users.sourceforge.net
Sun Sep 15 12:29:02 CEST 2002
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm bundle.cpp,1.3,1.4 bundle.h,1.2,1.3 resource.cpp,1.6,1.7 script_v2.cpp,1.9,1.10 scummvm.cpp,1.16,1.17 sound.cpp,1.8,1.9
- Next message: [Scummvm-cvs-logs] CVS: scummvm/common file.cpp,1.12,1.13 file.h,1.7,1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm/smush
In directory usw-pr-cvs1:/tmp/cvs-serv26315/scumm/smush
Modified Files:
chunk.cpp chunk.h player.cpp player.h
Log Message:
improved open function in File class
Index: chunk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/chunk.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- chunk.cpp 13 Sep 2002 18:04:17 -0000 1.6
+++ chunk.cpp 15 Sep 2002 19:28:34 -0000 1.7
@@ -34,33 +34,33 @@
*/
class FilePtr {
char * _filename;
- FILE * _ifs;
+ File _ifs;
int32 _refcount;
int32 _curPos;
public:
- FilePtr(const char * fname) : _refcount(1), _curPos(0) {
+ FilePtr(const char * fname, const char * directory) : _refcount(1), _curPos(0) {
debug(9, "FilePtr created for %s", fname);
_filename = strdup(fname);
- _ifs = fopen_nocase(fname, "rb");
- if(_ifs == NULL) error("FilePtr unable to read file \"%s\"", fname);
+ _ifs.open(fname, directory);
+ if(_ifs.isOpen() == false) error("FilePtr unable to read file %s", fname);
}
~FilePtr() {
debug(9, "FilePtr destroyed for %s", _filename);
free(_filename);
- fclose(_ifs);
+ _ifs.close();
}
int32 tell() {
return _curPos;
}
bool seek(int32 pos) {
if(pos != _curPos) {
- fseek(_ifs, pos, SEEK_SET);
+ _ifs.seek(pos, SEEK_SET);
_curPos = pos;
}
return true;
}
bool read(void * ptr, int32 size) {
- fread(ptr, size, 1, _ifs);
+ _ifs.read(ptr, size);
_curPos += size;
return true;
}
@@ -90,8 +90,8 @@
if(_data) _data->decRef();
}
-FileChunk::FileChunk(const char * fname) {
- _data = new FilePtr(fname);
+FileChunk::FileChunk(const char * fname, const char * directory) {
+ _data = new FilePtr(fname, directory);
_data->read(&_type, 4);
_type = TO_BE_32(_type);
_data->read(&_size, 4);
Index: chunk.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/chunk.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- chunk.h 30 Aug 2002 07:24:45 -0000 1.4
+++ chunk.h 15 Sep 2002 19:28:34 -0000 1.5
@@ -76,7 +76,7 @@
protected:
FileChunk();
public:
- FileChunk(const char * fname);
+ FileChunk(const char * fname, const char * directory);
virtual ~FileChunk();
type getType() const;
uint32 getSize() const;
Index: player.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/player.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- player.cpp 13 Sep 2002 18:04:17 -0000 1.12
+++ player.cpp 15 Sep 2002 19:28:34 -0000 1.13
@@ -616,10 +616,10 @@
}
#define NEW_FILE 1
-static StringResource * getStrings(const char * file, bool is_encoded) {
+static StringResource * getStrings(const char * file, const char * directory, bool is_encoded) {
debug(7, "trying to read text ressources from %s", file);
File theFile;
- theFile.open(file);
+ theFile.open(file, directory);
if (!theFile.isOpen())
return 0;
int32 length = theFile.size();
@@ -633,7 +633,7 @@
Chunk::type type = READ_BE_UINT32(filebuffer);
if(type != TYPE_ETRS) {
delete [] filebuffer;
- return getStrings(file, false);
+ return getStrings(file, directory, false);
}
char * old = filebuffer;
filebuffer = new char[length - ETRS_HEADER_LENGTH];
@@ -649,102 +649,58 @@
return sr;
}
-bool SmushPlayer::readString(const char * file, bool & ft) {
+bool SmushPlayer::readString(const char * file, const char * directory, bool & ft) {
const char * i = strrchr(file, '.');
if(i == NULL) error("invalid filename : %s", file);
char fname[260];
memcpy(fname, file, i - file);
strcpy(fname + (i - file), ".trs");
- if((_strings = getStrings(fname, false)) != 0) {
+ if((_strings = getStrings(fname, directory, false)) != 0) {
ft = true;
return true;
}
- i = strrchr(file, '\\');
- if(i == NULL) i = strrchr(file, '/');
- else {
- char * j = strrchr(file, '/');
- if(j > i) i = j;
- }
- if(i == NULL) error("invalid filename : %s", file);
- memcpy(fname, file, i - file + 1);
- strcpy(fname + (i - file + 1), "digtxt.trs");
- if((_strings = getStrings(fname, true)) != 0) {
+ if((_strings = getStrings("digtxt.trs", directory, true)) != 0) {
ft = false;
return true;
}
return false;
}
-static FontRenderer * loadFont(const char * file, bool original = false) {
+static FontRenderer * loadFont(const char * file, const char * directory, bool original = false) {
#ifdef DEBUG
debug(5, "loading font from \"%s\"", file);
#endif
FontRenderer * fr = new FontRenderer(original);
SmushPlayer p(fr, false, false);
- p.play(file);
+ p.play(file, directory);
return fr;
}
-bool SmushPlayer::play(const char * file) {
+bool SmushPlayer::play(const char * file, const char * directory) {
#ifdef DEBUG
debug(5, "start of animation : %s", file);
#endif
- char * i = strrchr(file, '\\');
- if(i == NULL)
- {
- i = strrchr(file, '/');
- } else {
- char * j = strrchr(i, '/');
- if(j != NULL)
- i = j;
- }
- char directory[260];
- if(i != NULL) {
- strcpy(directory, file);
- directory[i-file] = 0;
- //! @todo remove this...
- _fname = strdup(i);
- } else {
- directory[0] = 0;
- _fname = strdup(file);
- }
clean();
if(_wait) {
bool isFullthrottle;
- if(!readString(file, isFullthrottle))
+ if(!readString(file, directory, isFullthrottle))
warning("unable to read text information for \"%s\"", file);
if(_strings) {
if(isFullthrottle) {
- if(strcmp(directory, "") == 0) {
- strcpy(directory, "../data/");
- } else {
- char * i = strrchr(directory, '\\');
- char * j = strrchr(directory, '/');
- if(j > i) i = j;
- if(i == NULL) {
- strcpy(directory, "data/");
- } else {
- *i = 0;
- strcat(directory, "/data/");
- }
- }
- char file[260];
- strcpy(file, directory); strcat(file, "scummfnt.nut");
- _fr[0] = loadFont(file, true);
- strcpy(file, directory); strcat(file, "titlfnt.nut");
- _fr[2] = loadFont(file, true);
+ _fr[0] = loadFont("scummfnt.nut", directory, true);
+ _fr[2] = loadFont("titlfnt.nut", directory, true);
} else {
for(int32 i = 0; i < 4; i++) {
- char file[260];
- sprintf(file, "%s/font%d.nut",directory, i);
- _fr[i] = loadFont(file, i != 0);
+ char file_font[20];
+ sprintf((char*)&file_font, "font%d.nut", i);
+ _fr[i] = loadFont(file_font, directory, i != 0);
}
}
}
}
- FileChunk base = FileChunk(file);
+ FileChunk base = FileChunk(file, directory);
checkBlock(base, TYPE_ANIM);
Index: player.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/player.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- player.h 31 Aug 2002 13:29:10 -0000 1.6
+++ player.h 15 Sep 2002 19:28:34 -0000 1.7
@@ -73,12 +73,12 @@
public:
SmushPlayer(Renderer *, bool wait = true, bool output_sound = true);
virtual ~SmushPlayer();
- bool play(const char *);
+ bool play(const char *, const char * directory);
void updatePalette(void);
void show(const char *);
void hide(const char *);
protected:
- bool readString(const char * file, bool &);
+ bool readString(const char * file, const char * directory, bool &);
void clean();
void checkBlock(const Chunk &, Chunk::type, uint32 = 0);
void handleAnimHeader(Chunk &);
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm bundle.cpp,1.3,1.4 bundle.h,1.2,1.3 resource.cpp,1.6,1.7 script_v2.cpp,1.9,1.10 scummvm.cpp,1.16,1.17 sound.cpp,1.8,1.9
- Next message: [Scummvm-cvs-logs] CVS: scummvm/common file.cpp,1.12,1.13 file.h,1.7,1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list