#pragma once

// Image Options
#define LC_IMAGE_TRANSPARENT	0x2000
//#define LC_IMAGE_MASK		0x7000

enum lcPixelFormat
{
	LC_PIXEL_FORMAT_INVALID,
	LC_PIXEL_FORMAT_A8,
	LC_PIXEL_FORMAT_L8A8,
	LC_PIXEL_FORMAT_R8G8B8,
	LC_PIXEL_FORMAT_R8G8B8A8
};

class Image
{
public:
	Image();
	Image(Image&& Other);
	virtual ~Image();

	Image(const Image&) = delete;
	Image& operator=(const Image&) = delete;
	Image& operator=(Image&&) = delete;

	int GetBPP() const;
	bool HasAlpha() const;

	bool FileLoad(lcMemFile& File);
	bool FileLoad(const QString& FileName);

	void Resize(int Width, int Height);
	void ResizePow2();
	void Allocate(int Width, int Height, lcPixelFormat Format);
	void FreeData();

	int mWidth;
	int mHeight;
	lcPixelFormat mFormat;
	unsigned char* mData;
};

