[Scummvm-cvs-logs] SF.net SVN: scummvm:[53753] scummvm/trunk/engines/sword25

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sun Oct 24 03:30:53 CEST 2010


Revision: 53753
          http://scummvm.svn.sourceforge.net/scummvm/?rev=53753&view=rev
Author:   fingolfin
Date:     2010-10-24 01:30:53 +0000 (Sun, 24 Oct 2010)

Log Message:
-----------
SWORD25: Add ImageLoaderManager, get rid of last globally constructed object

This also gets rid of an evil use of atexit.

Modified Paths:
--------------
    scummvm/trunk/engines/sword25/gfx/graphicengine.h
    scummvm/trunk/engines/sword25/gfx/image/b25sloader.h
    scummvm/trunk/engines/sword25/gfx/image/imageloader.cpp
    scummvm/trunk/engines/sword25/gfx/image/imageloader.h
    scummvm/trunk/engines/sword25/gfx/image/pngloader.h
    scummvm/trunk/engines/sword25/gfx/image/renderedimage.cpp
    scummvm/trunk/engines/sword25/gfx/image/swimage.cpp
    scummvm/trunk/engines/sword25/sword25.cpp

Removed Paths:
-------------
    scummvm/trunk/engines/sword25/gfx/image/imageloader_ids.h

Modified: scummvm/trunk/engines/sword25/gfx/graphicengine.h
===================================================================
--- scummvm/trunk/engines/sword25/gfx/graphicengine.h	2010-10-24 01:29:59 UTC (rev 53752)
+++ scummvm/trunk/engines/sword25/gfx/graphicengine.h	2010-10-24 01:30:53 UTC (rev 53753)
@@ -71,7 +71,7 @@
 
 /**
  * This is the graphics engine. Unlike the original code, this is not
- * an interface that needs to be subclasses, but rather already contains
+ * an interface that needs to be subclassed, but rather already contains
  * all required functionality.
  */
 class GraphicEngine : public ResourceService, public Persistable {

Modified: scummvm/trunk/engines/sword25/gfx/image/b25sloader.h
===================================================================
--- scummvm/trunk/engines/sword25/gfx/image/b25sloader.h	2010-10-24 01:29:59 UTC (rev 53752)
+++ scummvm/trunk/engines/sword25/gfx/image/b25sloader.h	2010-10-24 01:30:53 UTC (rev 53753)
@@ -41,11 +41,7 @@
 namespace Sword25 {
 
 class B25SLoader : public ImageLoader {
-public:
-	static ImageLoader *createInstance() {
-		return static_cast<ImageLoader *>(new B25SLoader());
-	}
-
+	friend class ImageLoaderManager;
 protected:
 	virtual bool isCorrectImageFormat(const byte *fileDataPtr, uint fileSize);
 	virtual bool decodeImage(const byte *fileDataPtr, uint fileSize,  GraphicEngine::COLOR_FORMATS colorFormat, byte *&uncompressedDataPtr, int &width, int &height, int &pitch);

Modified: scummvm/trunk/engines/sword25/gfx/image/imageloader.cpp
===================================================================
--- scummvm/trunk/engines/sword25/gfx/image/imageloader.cpp	2010-10-24 01:29:59 UTC (rev 53752)
+++ scummvm/trunk/engines/sword25/gfx/image/imageloader.cpp	2010-10-24 01:30:53 UTC (rev 53753)
@@ -33,26 +33,24 @@
  */
 
 #include "sword25/gfx/image/imageloader.h"
-#include "sword25/gfx/image/imageloader_ids.h"
 
+#include "sword25/gfx/image/pngloader.h"
+#include "sword25/gfx/image/b25sloader.h"
+
+DECLARE_SINGLETON(Sword25::ImageLoaderManager)
+
 namespace Sword25 {
 
 #define BS_LOG_PREFIX "IMAGELOADER"
 
-// Statische Elemente der Klasse BS_ImageLoader intialisieren.
-Common::List<ImageLoader *> ImageLoader::_imageLoaderList;
-bool ImageLoader::_imageLoaderListInitialized = false;
 
-bool ImageLoader::loadImage(const byte *pFileData, uint fileSize,
+bool ImageLoaderManager::loadImage(const byte *pFileData, uint fileSize,
                             GraphicEngine::COLOR_FORMATS colorFormat,
                             byte *&pUncompressedData,
                             int &width, int &height,
                             int &pitch) {
-	// Falls die Liste der BS_ImageLoader noch nicht initialisiert wurde, wird dies getan.
-	if (!_imageLoaderListInitialized)
-		initializeLoaderList();
 
-	// Passenden BS_ImageLoader finden und Bild dekodieren
+	// Find a suitable ImageLoader and decode the image
 	ImageLoader *pLoader = findSuitableImageLoader(pFileData, fileSize);
 	if (pLoader) {
 		return pLoader->decodeImage(pFileData, fileSize,
@@ -65,14 +63,11 @@
 	return false;
 }
 
-bool ImageLoader::extractImageProperties(const byte *pFileData, uint fileSize,
+bool ImageLoaderManager::extractImageProperties(const byte *pFileData, uint fileSize,
         GraphicEngine::COLOR_FORMATS &colorFormat,
         int &width, int &height) {
-	// Falls die Liste der BS_ImageLoader noch nicht initialisiert wurde, wird dies getan.
-	if (!_imageLoaderListInitialized)
-		initializeLoaderList();
 
-	// Passenden BS_ImageLoader finden und Bildeigenschaften auslesen.
+	// Find a suitable ImageLoader and extra the image properties
 	ImageLoader *pLoader = findSuitableImageLoader(pFileData, fileSize);
 	if (pLoader) {
 		return pLoader->imageProperties(pFileData, fileSize,
@@ -83,36 +78,29 @@
 	return false;
 }
 
-void ImageLoader::initializeLoaderList() {
-	// Von jedem BS_ImageLoader wird eine Instanz erzeugt, diese f\xFCgen sich selbst\xE4ndig in die BS_ImageLoader-Liste ein.
-	for (int i = 0; i < BS_IMAGELOADER_COUNT; i++)
-		BS_IMAGELOADER_IDS[i]();
-
-	// Die Liste als gef\xFCllt markieren.
-	_imageLoaderListInitialized = true;
-
-	// Sicherstellen, dass beim Beenden alle BS_ImageLoader Instanzen zerst\xF6rt werden.
-	atexit(ImageLoader::deinitializeLoaderList);
+ImageLoaderManager::ImageLoaderManager() {
+	_imageLoaderList.push_back(new PNGLoader());
+	_imageLoaderList.push_back(new B25SLoader());
 }
 
-void ImageLoader::deinitializeLoaderList() {
+ImageLoaderManager::~ImageLoaderManager() {
 	while (!_imageLoaderList.empty()) {
 		delete _imageLoaderList.back();
 		_imageLoaderList.pop_back();
 	}
 }
 
-ImageLoader *ImageLoader::findSuitableImageLoader(const byte *pFileData, uint fileSize) {
-	// Alle BS_ImageLoader-Objekte durchgehen, bis eins gefunden wurde, dass das Bild laden kann
+ImageLoader *ImageLoaderManager::findSuitableImageLoader(const byte *pFileData, uint fileSize) {
+	// Iterate over all registered ImageLoader instances until we find
+	// one that supports the image.
 	Common::List<ImageLoader *>::iterator iter = _imageLoaderList.begin();
 	for (; iter != _imageLoaderList.end(); ++iter) {
-		// Falls ein geeigneter BS-ImageLoader gefunden wurde, wird er zur\xFCckgegeben.
 		if ((*iter)->isCorrectImageFormat(pFileData, fileSize)) {
 			return (*iter);
 		}
 	}
 
-	// Es konnte kein passender BS_ImageLoader gefunden werden.
+	// No suitable ImageLoader was found :-(
 	BS_LOG_ERRORLN("Could not find suitable image loader for image data.");
 	return NULL;
 }

Modified: scummvm/trunk/engines/sword25/gfx/image/imageloader.h
===================================================================
--- scummvm/trunk/engines/sword25/gfx/image/imageloader.h	2010-10-24 01:29:59 UTC (rev 53752)
+++ scummvm/trunk/engines/sword25/gfx/image/imageloader.h	2010-10-24 01:30:53 UTC (rev 53753)
@@ -42,40 +42,43 @@
 #ifndef SWORD25_IMAGELOADER_H
 #define SWORD25_IMAGELOADER_H
 
-// Includes
+#include "common/singleton.h"
+#include "common/list.h"
+
 #include "sword25/kernel/common.h"
 #include "sword25/gfx/graphicengine.h"
 
 namespace Sword25 {
 
 /**
-    @brief \xDCber die statischen Methoden dieser Klasse werden alle unterst\xFCtzten Bildformate geladen.
+ * This interface is implemented by classes for loading various image file formats.
+ * Adding support for new formats requires subclassing this, and implementing all
+ * three pure virtual methods. In addition, ImageLoaderManager needs to be taught
+ * about the new loader class.
+ *
+ * Note that an implementation must be able to convert any input to format GraphicEngine::CF_ARGB32
+ */
+class ImageLoader {
+protected:
+	friend class ImageLoaderManager;
 
-    Zum Laden von Bildern wird die #LoadImage-Methode benutzt.
+	// Make the default constructor protected to ensure that only the
+	// ImageLoaderManager can create instances of ImageLoader subclasses.
+	ImageLoader() {}
 
-    Au\xDFerdem stellt diese Klasse das Interface da, das alle Klassen implementieren m\xFCssen, die Bildformate einlesen.<br>
-    Zur Unterst\xFCtzung eines neuen Bildformates muss folgenderma\xDFen vorgegangen werden:
-    - Erzeugen einer neuen von #ImageLoader abgeleiteten Klasse, die die Methoden #IsCorrectImageFormat und #DecodeImage impelementiert.
-    - Die Klasse muss eine statische Methode haben, die eine Instanz von ihr erzeugt und einen Pointer darauf zur\xFCckgibt.
-    - Diese Methode muss in der Liste in der Datei imageloader_ids.h eingetragen werden.
-    - Die Klasse muss JEDES Eingabebild seines Bildformates in die folgenden Farbformate konvertieren k\xF6nnen:
-        - GraphicEngine::CF_ARGB32
-    - Zum Konvertieren der Bilddaten k\xF6nnen die Hilfsmethoden dieser Klasse benutzt werden, die ARGB Bilddaten in alle ben\xF6tigten
-      Farbformate konvertieren.
-*/
-class ImageLoader {
-public:
+	virtual ~ImageLoader() {}
 
-	//@{
-	/** @name Lade Methoden */
+	/**
+	    @brief Gibt an, ob der #ImageLoader ein Bild lesen kann.
+	    @param pFileData ein Pointer auf die kompletten Daten des Bildes.
+	    @param FileSize die Gr\xF6\xDFe der Daten in Byte.
+	    @return Gibt true zur\xFCck, wenn der #ImageLoader das Bild lesen kann, ansonsten false.
+	    @remark Diese Methode muss von allen ImageLoader Klassen implementiert werden.
+	*/
+	virtual bool isCorrectImageFormat(const byte *pFileData, uint fileSize) = 0;
 
 	/**
 	    @brief L\xE4dt eine Bilddatei.
-
-	    Diese Methode kann s\xE4mtliche unterst\xFCtztem Bildformate lesen. Die Methode erkennt selbstst\xE4nding um welches Dateiformat es sich
-	    bei der vorliegenden Datei handelt.<br>
-	    Bisher wird nur PNG unterst\xFCtzt.
-
 	    @param pFileData ein Pointer auf die Bilddaten.
 	    @param FileSize die Gr\xF6\xDFe der Bilddaten in Byte.
 	    @param ColorFormat gibt das gew\xFCnschte Farbformat an, in das die Bilddaten konvertiert werden sollen.<br>
@@ -88,16 +91,16 @@
 	    @return Gibt false zur\xFCck, falls das Laden fehlgeschlagen ist.
 	    @remark Die Gr\xF6\xDFe der Ausgabedaten in Bytes kann wie folgt berechnet werden: Pitch * Height.
 	    @remark Es darf nicht vergessen werden, die Ausgabedaten nach erfolgter Benutzung mit delete freizugeben.
+	    @remark Diese Methode muss von allen ImageLoader Klassen implementiert werden.
 	*/
-	static bool loadImage(const byte *pFileData, uint fileSize,
-	                      GraphicEngine::COLOR_FORMATS colorFormat,
-	                      byte *&pUncompressedData,
-	                      int &width, int &height,
-	                      int &pitch);
+	virtual bool decodeImage(const byte *pFileData, uint fileSize,
+	                         GraphicEngine::COLOR_FORMATS colorFormat,
+	                         byte *&pUncompressedData,
+	                         int &width, int &height,
+	                         int &pitch) = 0;
 
 	/**
-	    @brief Liest die Bildeigenschaften eines Bildes aus.
-
+	    @brief Liest die Bildeigenschaften aus.
 	    @param pFileData ein Pointer auf die Bilddaten.
 	    @param FileSize die Gr\xF6\xDFe des Bilddaten in Byte.
 	    @param ColorFormat enth\xE4lt nach einem erfolgreichem Aufruf das Farbformat des Bildes.
@@ -105,43 +108,43 @@
 	    @param Height enth\xE4lt nach einem erfolgreichem Aufruf die H\xF6he des Bildes in Pixeln.
 	    @return Gibt false zur\xFCck, wenn die Bildeigenschaften nicht ausgelesen werden konnten.
 	    @remark Es darf nicht vergessen werden, die Ausgabedaten nach erfolgter Benutzung mit delete freizugeben.
+	    @remark Diese Methode muss von allen ImageLoader Klassen implementiert werden.
 	*/
-	static bool extractImageProperties(const byte *pFileData, uint fileSize,
-	                                   GraphicEngine::COLOR_FORMATS &colorFormat,
-	                                   int &width, int &height);
-	//@}
+	virtual bool imageProperties(const byte *pFileData, uint fileSize,
+	                             GraphicEngine::COLOR_FORMATS &colorFormat,
+	                             int &width, int &height) = 0;
 
-protected:
+};
 
-	// Protected Konstruktor, damit Instanzen dieser Klasse nur von ImageLoader-Objekten erstellt werden k\xF6nnen
-	/**
-	    @brief Der Standardkonstruktor.
 
-	    Dieser Konstruktor registriert alle Instanzen von #ImageLoader-Klassen in einer Liste.<br>
-	    Diese Liste enth\xE4lt jeweils eine Instanz jedes #ImageLoader und wird benutzt um beliebige Bilddateien einem Loader zuzuordnen.
-	    @remark Dieser Konstruktor ist protected damit nur #ImageLoader-Objekte diese Klasse instanziieren k\xF6nnen.
-	*/
-	ImageLoader() {
-		// Klasse registrieren
-		_imageLoaderList.push_front(this);
-	}
+class ImageLoaderManager : public Common::Singleton<ImageLoaderManager> {
+public:
 
-	virtual ~ImageLoader() {}
+	/**
+	 * Create instances of various ImageLoader subclasses and keep them
+	 * in an internal list. These are then later used when loading images
+	 * via this manager.
+	 *
+	 * @note To add support for additional ImageManagers, you need to modify
+	 *       this method.
+	 */
+	ImageLoaderManager();
 
+	/**
+	 * Destroy any ImageLoader subclasses instances kept by this manager.
+	 */
+	~ImageLoaderManager();
+
 	//@{
-	/** @name Abstrakte Methoden */
+	/** @name Methods for loading */
 
 	/**
-	    @brief Gibt an, ob der #ImageLoader ein Bild lesen kann.
-	    @param pFileData ein Pointer auf die kompletten Daten des Bildes.
-	    @param FileSize die Gr\xF6\xDFe der Daten in Byte.
-	    @return Gibt true zur\xFCck, wenn der #ImageLoader das Bild lesen kann, ansonsten false.
-	    @remark Diese Methode muss von allen ImageLoader Klassen implementiert werden.
-	*/
-	virtual bool isCorrectImageFormat(const byte *pFileData, uint fileSize) = 0;
-
-	/**
 	    @brief L\xE4dt eine Bilddatei.
+
+	    Diese Methode kann s\xE4mtliche unterst\xFCtztem Bildformate lesen. Die Methode erkennt selbstst\xE4nding um welches Dateiformat es sich
+	    bei der vorliegenden Datei handelt.<br>
+	    Bisher wird nur PNG unterst\xFCtzt.
+
 	    @param pFileData ein Pointer auf die Bilddaten.
 	    @param FileSize die Gr\xF6\xDFe der Bilddaten in Byte.
 	    @param ColorFormat gibt das gew\xFCnschte Farbformat an, in das die Bilddaten konvertiert werden sollen.<br>
@@ -154,16 +157,16 @@
 	    @return Gibt false zur\xFCck, falls das Laden fehlgeschlagen ist.
 	    @remark Die Gr\xF6\xDFe der Ausgabedaten in Bytes kann wie folgt berechnet werden: Pitch * Height.
 	    @remark Es darf nicht vergessen werden, die Ausgabedaten nach erfolgter Benutzung mit delete freizugeben.
-	    @remark Diese Methode muss von allen ImageLoader Klassen implementiert werden.
 	*/
-	virtual bool decodeImage(const byte *pFileData, uint fileSize,
-	                         GraphicEngine::COLOR_FORMATS colorFormat,
-	                         byte *&pUncompressedData,
-	                         int &width, int &height,
-	                         int &pitch) = 0;
+	bool loadImage(const byte *pFileData, uint fileSize,
+	                      GraphicEngine::COLOR_FORMATS colorFormat,
+	                      byte *&pUncompressedData,
+	                      int &width, int &height,
+	                      int &pitch);
 
 	/**
-	    @brief Liest die Bildeigenschaften aus.
+	    @brief Liest die Bildeigenschaften eines Bildes aus.
+
 	    @param pFileData ein Pointer auf die Bilddaten.
 	    @param FileSize die Gr\xF6\xDFe des Bilddaten in Byte.
 	    @param ColorFormat enth\xE4lt nach einem erfolgreichem Aufruf das Farbformat des Bildes.
@@ -171,38 +174,27 @@
 	    @param Height enth\xE4lt nach einem erfolgreichem Aufruf die H\xF6he des Bildes in Pixeln.
 	    @return Gibt false zur\xFCck, wenn die Bildeigenschaften nicht ausgelesen werden konnten.
 	    @remark Es darf nicht vergessen werden, die Ausgabedaten nach erfolgter Benutzung mit delete freizugeben.
-	    @remark Diese Methode muss von allen ImageLoader Klassen implementiert werden.
 	*/
-	virtual bool imageProperties(const byte *pFileData, uint fileSize,
-	                             GraphicEngine::COLOR_FORMATS &colorFormat,
-	                             int &width, int &height) = 0;
-
+	bool extractImageProperties(const byte *pFileData, uint fileSize,
+	                                   GraphicEngine::COLOR_FORMATS &colorFormat,
+	                                   int &width, int &height);
 	//@}
 
 private:
 
 	/**
-	    @brief Erzeugt je eine Instanz aller ImageLoader Klassen und f\xFCgt diese in eine interne Liste ein. Diese werden dann beim
-	           Laden von Bildern benutzt.
-	    @remark Die Klassen m\xFCssen in der Datei imageloader_ids.h eingetragen sein, damit sie an dieser Stelle ber\xFCcksichtigt werden.
-	*/
-	static void initializeLoaderList();
+	 * Finds an ImageLoader instances capable of decoding the given
+	 * image data.
+	 * @return pointer to a suitable ImageLoader, or NULL if none has been be found
+	 */
+	ImageLoader *findSuitableImageLoader(const byte *pFileData, uint fileSize);
 
-	/**
-	    @brief Zerst\xF6rt alle Instanzen von ImageLoader Klassen, die in dieser Klasse registriert sind.
-	*/
-	static void deinitializeLoaderList();
-
-	/**
-	    @brief Sucht zu Bilddaten ein ImageLoader Objekt, dass die Bilddaten dekodieren kann.
-	    @return Gibt einen Pointer auf ein passendes ImageLoader Objekt zur\xFCck, oder NULL, wenn kein passendes Objekt gefunden wurde.
-	*/
-	static ImageLoader *findSuitableImageLoader(const byte *pFileData, uint fileSize);
-
-	static Common::List<ImageLoader *> _imageLoaderList;              // Die Liste aller ImageLoader-Objekte
-	static bool _imageLoaderListInitialized;    // Gibt an, ob die Liste schon intialisiert wurde
+	Common::List<ImageLoader *> _imageLoaderList;	///< List of ImageLoader instances
 };
 
+/** Shortcut for accessing the image loader manager. */
+#define ImageMan		ImageLoaderManager::instance()
+
 } // End of namespace Sword25
 
 #endif

Deleted: scummvm/trunk/engines/sword25/gfx/image/imageloader_ids.h
===================================================================
--- scummvm/trunk/engines/sword25/gfx/image/imageloader_ids.h	2010-10-24 01:29:59 UTC (rev 53752)
+++ scummvm/trunk/engines/sword25/gfx/image/imageloader_ids.h	2010-10-24 01:30:53 UTC (rev 53753)
@@ -1,62 +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$
- *
- */
-
-/*
- * This code is based on Broken Sword 2.5 engine
- *
- * Copyright (c) Malte Thiesen, Daniel Queteschiner and Michael Elsdoerfer
- *
- * Licensed under GNU GPL v2
- *
- */
-
-/*
-    imageloader_ids.h
-    -----------------
-    In dieser Datei sind alle ImageLoader verzeichnet.
-    JEDER neuer ImageLoader muss hier eingetragen werden, ansonsten wird er beim Laden eines Bildes nicht ber\xFCcksichtigt.
-
-    Autor: Malte Thiesen
-*/
-
-#include "sword25/gfx/image/imageloader.h"
-
-// Die Headerdateien der ImageLoader m\xFCssen hier eingebunden werden
-#include "sword25/gfx/image/pngloader.h"
-#include "sword25/gfx/image/b25sloader.h"
-
-namespace Sword25 {
-
-// Die Tabelle enth\xE4lt Pointer auf statische Member-Funktionen innerhalb der Klassen, die eine Instanz der Klasse
-// erzeugen
-typedef ImageLoader*(*BS_IMAGELOADER_NEW)();
-const BS_IMAGELOADER_NEW BS_IMAGELOADER_IDS[] = {
-	PNGLoader::createInstance,
-	B25SLoader::createInstance,
-};
-const int BS_IMAGELOADER_COUNT = sizeof(BS_IMAGELOADER_IDS) / sizeof(BS_IMAGELOADER_NEW);
-
-
-} // End of namespace Sword25

Modified: scummvm/trunk/engines/sword25/gfx/image/pngloader.h
===================================================================
--- scummvm/trunk/engines/sword25/gfx/image/pngloader.h	2010-10-24 01:29:59 UTC (rev 53752)
+++ scummvm/trunk/engines/sword25/gfx/image/pngloader.h	2010-10-24 01:30:53 UTC (rev 53753)
@@ -51,11 +51,8 @@
 
 // Klassendefinition
 class PNGLoader : public ImageLoader {
+	friend class ImageLoaderManager;
 public:
-	static ImageLoader *createInstance() {
-		return (ImageLoader *) new PNGLoader();
-	}
-
 	// Alle virtuellen Methoden von BS_ImageLoader sind hier als static-Methode implementiert, damit sie von BS_B25SLoader aufgerufen werden k\xF6nnen.
 	// Die virtuellen Methoden rufen diese Methoden auf.
 	static bool doIsCorrectImageFormat(const byte *fileDataPtr, uint fileSize);

Modified: scummvm/trunk/engines/sword25/gfx/image/renderedimage.cpp
===================================================================
--- scummvm/trunk/engines/sword25/gfx/image/renderedimage.cpp	2010-10-24 01:29:59 UTC (rev 53752)
+++ scummvm/trunk/engines/sword25/gfx/image/renderedimage.cpp	2010-10-24 01:30:53 UTC (rev 53753)
@@ -72,14 +72,14 @@
 	// Bildeigenschaften bestimmen
 	GraphicEngine::COLOR_FORMATS colorFormat;
 	int pitch;
-	if (!ImageLoader::extractImageProperties(pFileData, fileSize, colorFormat, _width, _height)) {
+	if (!ImageMan.extractImageProperties(pFileData, fileSize, colorFormat, _width, _height)) {
 		BS_LOG_ERRORLN("Could not read image properties.");
 		delete[] pFileData;
 		return;
 	}
 
 	// Das Bild dekomprimieren
-	if (!ImageLoader::loadImage(pFileData, fileSize, GraphicEngine::CF_ARGB32, _data, _width, _height, pitch)) {
+	if (!ImageMan.loadImage(pFileData, fileSize, GraphicEngine::CF_ARGB32, _data, _width, _height, pitch)) {
 		BS_LOG_ERRORLN("Could not decode image.");
 		delete[] pFileData;
 		return;

Modified: scummvm/trunk/engines/sword25/gfx/image/swimage.cpp
===================================================================
--- scummvm/trunk/engines/sword25/gfx/image/swimage.cpp	2010-10-24 01:29:59 UTC (rev 53752)
+++ scummvm/trunk/engines/sword25/gfx/image/swimage.cpp	2010-10-24 01:30:53 UTC (rev 53753)
@@ -61,14 +61,14 @@
 	// Bildeigenschaften bestimmen
 	GraphicEngine::COLOR_FORMATS colorFormat;
 	int pitch;
-	if (!ImageLoader::extractImageProperties(pFileData, fileSize, colorFormat, _width, _height)) {
+	if (!ImageMan.extractImageProperties(pFileData, fileSize, colorFormat, _width, _height)) {
 		BS_LOG_ERRORLN("Could not read image properties.");
 		return;
 	}
 
 	// Das Bild dekomprimieren
 	byte *pUncompressedData;
-	if (!ImageLoader::loadImage(pFileData, fileSize, GraphicEngine::CF_ARGB32, pUncompressedData, _width, _height, pitch)) {
+	if (!ImageMan.loadImage(pFileData, fileSize, GraphicEngine::CF_ARGB32, pUncompressedData, _width, _height, pitch)) {
 		BS_LOG_ERRORLN("Could not decode image.");
 		return;
 	}

Modified: scummvm/trunk/engines/sword25/sword25.cpp
===================================================================
--- scummvm/trunk/engines/sword25/sword25.cpp	2010-10-24 01:29:59 UTC (rev 53752)
+++ scummvm/trunk/engines/sword25/sword25.cpp	2010-10-24 01:30:53 UTC (rev 53753)
@@ -45,6 +45,7 @@
 #include "sword25/gfx/animationtemplateregistry.h"	// Needed so we can destroy the singleton
 #include "sword25/gfx/renderobjectregistry.h"		// Needed so we can destroy the singleton
 #include "sword25/math/regionregistry.h"			// Needed so we can destroy the singleton
+#include "sword25/gfx/image/imageloader.h"			// Needed so we can destroy the singleton
 
 namespace Sword25 {
 
@@ -137,6 +138,7 @@
 	// The kernel is shutdown, and un-initialises all subsystems
 	Kernel::deleteInstance();
 
+	ImageLoaderManager::destroy();
 	AnimationTemplateRegistry::destroy();
 	RenderObjectRegistry::destroy();
 	RegionRegistry::destroy();


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list