diff options
Diffstat (limited to 'graphics/imageman.cpp')
-rw-r--r-- | graphics/imageman.cpp | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/graphics/imageman.cpp b/graphics/imageman.cpp deleted file mode 100644 index 42fc01b3eb..0000000000 --- a/graphics/imageman.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/* 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. - * - * 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. - * - * $URL$ - * $Id$ - */ - -#include "graphics/imagedec.h" -#include "graphics/imageman.h" -#include "graphics/surface.h" - -#include "common/fs.h" -#include "common/unzip.h" - -DECLARE_SINGLETON(Graphics::ImageManager); - -namespace Graphics { - -ImageManager::ImageManager() { -} - -ImageManager::~ImageManager() { - for (Iterator pos = _surfaces.begin(); pos != _surfaces.end(); ++pos) { - (*pos)->surface->free(); - delete (*pos)->surface; - delete *pos; - *pos = 0; - } - _surfaces.clear(); -} - -bool ImageManager::addArchive(const Common::String &name) { - Common::Archive *arch = 0; - Common::FSNode node(name); - - if (node.getName().hasSuffix(".zip")) { -#ifdef USE_ZLIB - Common::ZipArchive *zip = new Common::ZipArchive(node); - if (!zip || !zip->isOpen()) - return false; - - arch = zip; -#else - return false; -#endif - } else { - Common::FSDirectory *dir = new Common::FSDirectory(node); - if (!dir || !dir->getFSNode().isDirectory()) - return false; - - arch = dir; - } - - _archives.add(name, arch); - return true; -} - -void ImageManager::removeArchive(const Common::String &name) { - if (_archives.hasArchive(name)) - _archives.remove(name); -} - -bool ImageManager::registerSurface(const Common::String &name, Surface *surf) { - if (getSurface(name)) { - return false; - } - - Entry *newHandle = new Entry; - if (!newHandle) - return false; - - if (!surf) - surf = ImageDecoder::loadFile(name); - - if (!surf) { - Common::SeekableReadStream *stream = _archives.openFile(name); - if (stream) { - surf = ImageDecoder::loadFile(*stream); - delete stream; - } - } - - if (!surf) - return false; - - newHandle->surface = surf; - newHandle->name = name; - _surfaces.push_back(newHandle); - - return true; -} - -bool ImageManager::unregisterSurface(const Common::String &name) { - Iterator pos = searchHandle(name); - if (pos == _surfaces.end()) { - // no surface handle it as success - return true; - } - - (*pos)->surface->free(); - delete (*pos)->surface; - delete *pos; - *pos = 0; - - _surfaces.erase(pos); - - return true; -} - -Surface * ImageManager::getSurface(const Common::String &name) { - Iterator pos = searchHandle(name); - if (pos == _surfaces.end()) { - // no surface handle it as success - return 0; - } - return (*pos)->surface; -} - -ImageManager::Iterator ImageManager::searchHandle(const Common::String &name) { - Iterator pos = _surfaces.begin(); - while (pos != _surfaces.end()) { - if ((*pos)->name == name) - break; - ++pos; - } - return pos; -} -} // end of namespace Graphics |