#ifndef _CTEXTBUTTON_HPP_
#define _CTEXTBUTTON_HPP_

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

/*** Custom Header Files ***/
#include "cButton.hpp"
#include "cLabel.hpp"

#include "GUIHelpers/Enums.hpp"
#include "GUIHelpers/GUIUtility.hpp"
#include "../VideoEngine/cSprite.hpp"
#include "../VideoEngine/cImage.hpp"
#include "../MathEngine/iVector/iVector2.hpp"

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

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

using UtilityEngine::cString;

namespace GUIEngine {
	class EXPORT_FROM_MYDLL cTextButton : public cButton
	{
	public:
		static const cString sNAME; /*= "button";*/

		cTextButton(cWindow* parent, const signed int id, const cString& text, const GUIHelpers::eAlign& align = GUIHelpers::eAlign::CENTER,
			const GUIHelpers::eLayout& layout = GUIHelpers::eLayout::FILL_PARENT, const GUIHelpers::Position& pos = sPOSITION,
			const GUIHelpers::Size& size = sSIZE, const GUIHelpers::Padding& padding = sPADDING, const cString& name = sNAME);
		virtual ~cTextButton();

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

		//Sets
		void setText( const cString& text );
		void setTextColour( const GUIHelpers::RGBA& colour );
		void setTextSize( const unsigned long int size );

		///Gets
		const cString getText() const;
		const GUIHelpers::RGBA getTextColour();
		const unsigned long int getTextSize();

		virtual const GUIHelpers::eType getType() const;

	private:
		void CreateLabel();
		void GenerateImage();
		void GenerateTexture();

	private:
		cLabel m_label;// = nullptr
	};/// END CLASS DEFINITION cButton
}/// END NAMESPACE DEFINITION GUIEngine
#endif/// END IFNDEF _CBUTTON_HPP_