#ifndef _CLABEL_HPP_
#define _CLABEL_HPP_
/*** SDL Header Files ***/
#include <SDL.h>

/*** Custom Header Files ***/
#include "cWindow.hpp"

#include "../TextTypeEngine/cText.hpp"
#include "../VideoEngine/cSprite.hpp"

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

namespace GUIEngine {
	class EXPORT_FROM_MYDLL cLabel : public cWindow
	{
	public:
		static const cString sNAME; /*= "label";*/
		static const GUIHelpers::eLayout sLAYOUT;/* = GUIHelpers::eLayout::WRAP_CONTENT;*/

		cLabel(cWindow* parent, const signed int id, const cString& label = "", const GUIHelpers::eAlign& align = sALIGN,
			const GUIHelpers::eLayout& layout = sLAYOUT, const GUIHelpers::Position& pos = sPOSITION, const GUIHelpers::Size& size = sSIZE, 
			const GUIHelpers::Padding& padding = sPADDING, const cString& name = sNAME);
		virtual ~cLabel();

		///Functions
		void Create(cWindow* parent, const signed int id, const cString& label = "", const GUIHelpers::eAlign& align = sALIGN,
			const GUIHelpers::eLayout& layout = sLAYOUT, const GUIHelpers::Position& pos = sPOSITION, const GUIHelpers::Size& size = sSIZE, 
			const GUIHelpers::Padding& padding = sPADDING, const cString& name = sNAME);

		virtual void Display();

		void GenerateTexture();

		//Sets
		void setFontColour( const GUIHelpers::RGBA& colour );
		void setFontSize( const unsigned long int size );
		void setText( const cString& text );
		void setFont( const TextTypeEngine::cFont* font );
		
		///Gets
		const GUIHelpers::RGBA& getFontColour() const;
		const unsigned long int getFontSize() const;
		const TextTypeEngine::cFont* getFont() const;
		const cString& getText() const;
		virtual const GUIHelpers::eType getType() const;
		virtual const GUIHelpers::RGBA getDebugColour() const;


		//virtual void Resize();
		virtual void RebuildLayout(const GUIHelpers::eLayout& layout);

	private:
		void SetSize();
		


	private:
		VideoEngine::cSprite m_sprite;
		TextTypeEngine::cText* mp_text;// = nullptr
	};/// END CLASS DEFINITION cLabel
}/// END NAMESPACE DEFINITION GUIEngine
#endif/// END IFNDEF _CLABEL_HPP_
