diff options
author | Matthew Hoops | 2011-06-15 12:56:49 -0400 |
---|---|---|
committer | Matthew Hoops | 2011-06-15 12:56:49 -0400 |
commit | ea05bc5687456aab1318fb06f73f484a7e5310bc (patch) | |
tree | 8adfcff0b11079a78f54c9b96f4d5fb4812274fd /engines/pegasus | |
parent | 0e78eb00197ae00cabefa02f4df74ce5a5de1e89 (diff) | |
download | scummvm-rg350-ea05bc5687456aab1318fb06f73f484a7e5310bc.tar.gz scummvm-rg350-ea05bc5687456aab1318fb06f73f484a7e5310bc.tar.bz2 scummvm-rg350-ea05bc5687456aab1318fb06f73f484a7e5310bc.zip |
PEGASUS: Import the MMResourceFile class
Diffstat (limited to 'engines/pegasus')
-rwxr-xr-x | engines/pegasus/MMShell/Utilities/MMResourceFile.cpp | 106 | ||||
-rwxr-xr-x | engines/pegasus/MMShell/Utilities/MMResourceFile.h | 75 | ||||
-rw-r--r-- | engines/pegasus/module.mk | 3 |
3 files changed, 183 insertions, 1 deletions
diff --git a/engines/pegasus/MMShell/Utilities/MMResourceFile.cpp b/engines/pegasus/MMShell/Utilities/MMResourceFile.cpp new file mode 100755 index 0000000000..dda9a586fc --- /dev/null +++ b/engines/pegasus/MMShell/Utilities/MMResourceFile.cpp @@ -0,0 +1,106 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * Additional copyright for this file: + * Copyright (C) 1995-1997 Presto Studios + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/endian.h" +#include "common/error.h" +#include "common/macresman.h" +#include "common/stream.h" + +#include "pegasus/MMShell/Utilities/MMResourceFile.h" + +namespace Pegasus { + +MMResourceFile::MMResourceFile() { + _resFork = 0; +} + +MMResourceFile::~MMResourceFile() { + if (IsFileOpen()) + CloseResourceFile(); +} + +Common::Error MMResourceFile::UsePathname(const Common::String &str) { + if (IsFileOpen()) + return Common::kUnknownError; + + _fileName = str; + return Common::kNoError; +} + +Common::Error MMResourceFile::OpenResourceFile() { + if (IsFileOpen() || _fileName.empty()) + return Common::kUnknownError; + + _resFork = new Common::MacResManager(); + + if (!_resFork->open(_fileName)) { + delete _resFork; _resFork = 0; + return Common::kReadingFailed; + } + + return Common::kNoError; +} + +Common::Error MMResourceFile::CloseResourceFile() { + if (!IsFileOpen()) + return Common::kUnknownError; + + delete _resFork; + _resFork = 0; + return Common::kNoError; +} + +Common::Error MMResourceFile::GetResource(const uint32 type, const tResIDType id, Common::SeekableReadStream *&h) { + if (!IsFileOpen()) + return Common::kUnknownError; + + // Look how well our API fits in! + h = _resFork->getResource(type, id); + return Common::kNoError; +} + +Common::Error MMResourceFile::GetResource(const uint32 type, const Common::String &name, Common::SeekableReadStream *&h) { + if (!IsFileOpen()) + return Common::kUnknownError; + + // Look how well our API fits in! + h = _resFork->getResource(type, name); + return Common::kNoError; +} + +Common::Error MMResourceFile::GetCIcon(const tResIDType id, Common::SeekableReadStream *&icon) { + Common::Error err = GetResource(MKTAG('c', 'i', 'c', 'n'), id, icon); + + if (err.getCode() != Common::kNoError) + return err; + + return (icon == 0) ? Common::kUnknownError : Common::kNoError; +} + +bool MMResourceFile::IsFileOpen() const { + return _resFork != 0; +} + +} // End of namespace Pegasus
\ No newline at end of file diff --git a/engines/pegasus/MMShell/Utilities/MMResourceFile.h b/engines/pegasus/MMShell/Utilities/MMResourceFile.h new file mode 100755 index 0000000000..6dc70f9b8f --- /dev/null +++ b/engines/pegasus/MMShell/Utilities/MMResourceFile.h @@ -0,0 +1,75 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * Additional copyright for this file: + * Copyright (C) 1995-1997 Presto Studios + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef PEGASUS_MMSHELL_UTILITIES_MMRESOURCEFILE +#define PEGASUS_MMSHELL_UTILITIES_MMRESOURCEFILE + +#include "common/str.h" + +#include "pegasus/MMShell/MMTypes.h" + +namespace Common { + class Error; + class MacResManager; + class SeekableReadStream; +} + +namespace Pegasus { + +class MMResourceFile { +public: + MMResourceFile(); + virtual ~MMResourceFile(); + + Common::Error UsePathname(const Common::String &str); + + // For ScummVM, we don't need this function + //OSErr MMResourceFile::UseFSSpec(const FSSpec&); + + virtual Common::Error OpenResourceFile(); + virtual Common::Error CloseResourceFile(); + bool IsFileOpen() const; + + virtual Common::Error GetResource(const uint32 type, const tResIDType id, Common::SeekableReadStream *&h); + virtual Common::Error GetResource(const uint32 type, const Common::String &name, Common::SeekableReadStream *&h); + + // This function is unused! + //virtual OSErr PutResource(const ResType, const tResIDType, const Common::String &, Handle); + + // For ScummVM, we will be hardcoding the file names so these two functions + // do nothing for us + //virtual OSErr GetIndString(const tResIDType, const short, Str255&); + //virtual OSErr GetIndString(const Str255, const short, Str255&); + + virtual Common::Error GetCIcon(const tResIDType id, Common::SeekableReadStream *&icon); + +protected: + Common::MacResManager *_resFork; + Common::String _fileName; +}; + +} // End of namespace Pegasus + +#endif
\ No newline at end of file diff --git a/engines/pegasus/module.mk b/engines/pegasus/module.mk index 923d96a965..62a2fe9575 100644 --- a/engines/pegasus/module.mk +++ b/engines/pegasus/module.mk @@ -10,7 +10,8 @@ MODULE_OBJS = \ pegasus.o \ sound.o \ video.o \ - Game_Shell/CItem.o + Game_Shell/CItem.o \ + MMShell/Utilities/MMResourceFile.o # This module can be built as a plugin |