/*
*	Image.h
*
*	Programmé par Hillaire Sébastien
*
*
*	- utilité :
*		Permet de géneralisé la lecture d'une image sur le disque quelque soit son format.
*
*	- version :
*		1.0
*
*	- update :
*		05/11/2004 : première version
*
*	- NOTE :
*		...
*
*/

#ifndef IMAGE_INTERFACE
#define IMAGE_INTERFACE

#ifdef WIN32
#include "windows.h"
#endif

#include "stdlib.h"

#include "MemoryManager/DebugNew.h"

namespace RenderSystem
{

	/**
	* Interface décrivant les méthodes de chargement basique d'un image à partir du disque.
	*/
	class Image
	{
	protected:

		/**
		* le pointeur sur les donnée de l'image en mémoire system
		* format RGB [0,255]
		*/
		unsigned char *datas;

	public:
		
		/**
		* REM : fonction virtuel pure
		* @return le pointeur sur le buffer d'image RGB.
		*/
		virtual unsigned char* getDatasPointer()=0;
		
		/**
		* REM : fonction virtuel pure
		* @return la nombre de bit par pixel (doit être 24)
		*/
		virtual unsigned short getBPP()=0;
		
		/**
		* REM : fonction virtuel pure
		* @return la hauteur de l'image
		*/
		virtual unsigned int getHeight()=0;
		
		/**
		* REM : fonction virtuel pure
		* @return la largeur de l'image
		*/
		virtual unsigned int getWidth()=0;
		
		/**
		* charge l'image à partir du fichier spécifier.
		* REM : fonction virtuel pure
		*
		* @param filepath le chemin de l'image a charger
		*
		* @return true si l'image a bien été chargée. false si image non trouvé ou extension non valide.
		*/
		virtual bool load(char *filepath)=0;
		
		/**
		* constructeur
		*/
		Image();
		
		/**
		* destructeur
		*/
		virtual ~Image();

	};

}// namespace Renderer


#include "MemoryManager/DebugNewOff.h"

#endif