#ifndef _CIMAGEFILE_HPP_
#define _CIMAGEFILE_HPP_

/*** SDL Header Files ***/
#include <SDL.h> 
#include <SDL_image.h> 

/*** DLL Header File ***/
#include "dllExport.h"

/*** Custom Header Files ***/
#include "cImage.hpp"
#include "../UtilityEngine/cString.hpp"

using UtilityEngine::cString;

namespace VideoEngine {
	/* cImageFile holds a SDL_Texture or SDL_Surface from a file on the system for use by a cSprite or cAnimatedSprite */
	class EXPORT_FROM_MYDLL cImageFile : public cImage
	{
	public:
		cImageFile( const cString& filename = "", const cString& dir = "", const bool transparent = false,
			const unsigned char red = 0, const unsigned char blue = 0, const unsigned char green = 255,
			const unsigned char translevel = 255, const bool isSurface = false );
		/* Copy constructor */
		cImageFile( const cImageFile& copy, const bool surfaceCopy = true );
		~cImageFile();

		/// Sets
		/* Sets the Directory of the image */
		void setDir( const cString& dir );
		/* Sets the File Name of the image */
		void setFileName( const cString& filename );
		/* Sets the File Name and the Directory of the image */
		void setFileNameandDir( const cString& filename, const cString& dir = "" );
		
		/// Gets
		/* Gets the Directory of the image */
		const cString& getDir() const;
		/* Gets the File Name of the image */
		const cString& getFileName() const;

	private:
		/// Functions
		void LoadImage();

	private:
		/// Variables
		cString m_dir;/// = ""
		cString m_fileName;/// = ""
	};/// END CLASS DEFINITION cImageFile
}/// END NAMESPACE DEFINITION VideoEngine
#endif/// END IFNDEF _CIMAGEFILE_HPP_