/******************************************************************************
*	File		-	Image.h
*	Author		-	Joey Pollack
*	Date		-	2019/07/17 (y/m/d)
*	Mod Date	-	2019/07/18 (y/m/d)
*	Description	-	Manage image data that can be rendered with OpenGL.
*					Use the Graphics class to create instances of Image.
******************************************************************************/

#ifndef IMAGE_H_
#define IMAGE_H_

#include <graphics/definitions.h>

namespace lunarium
{
	class OglGraphics;
	class Image
	{
		friend OglGraphics;

	public:

		unsigned int GetGLTextureID() const;
		int GetWidth() const;
		int GetHeight() const;
		ImageFormat GetFormat() const;

		void FreeRawData();

	private:

		Image();
		~Image();
		Image(const Image& rhs);
		const Image& operator=(const Image& rhs);
		
		unsigned char* mRawData;
		int mRawDataSize;
		int mWidth;
		int mHeight;
		ImageFormat mFormat;

		unsigned int mGLTextureID;
	};
}

#endif // IMAGE_H_