#ifndef CTEXTTEXTURE_HPP
#define CTEXTTEXTURE_HPP

#include "../../../Controller/Exception/CLibException.hpp"
#include "../../../Controller/Exception/CRuntimeException.hpp"
#include "../../../Controller/Exception/CLogicException.hpp"
#include "CAbstractTexture.hpp"

#include <string>
#include <SDL.h>
#include <glm/glm.hpp>
#include <SDL_ttf.h>
#ifdef WIN32
    #include <gl/glew.h>
#else
    #include <GL/glew.h>
#endif

class CTextTexture : CAbstractTexture {
private:
	// Path of the file.
	std::string m_fontFilePath;

	// The size of the font.
	unsigned int m_fontSize;

	// The color of the font.
	glm::vec3 m_fontColor;

	// The style of the font (x is bold, y is italic, z is underline, w is strikethrough).
	glm::bvec4 m_fontStyle;

	// The text to render.
	std::string m_renderText;

public:
	CTextTexture(void) = delete;
	CTextTexture(ETextureType type, std::string filePath, std::string text, unsigned int fontSize, glm::vec3 fontColor, glm::bvec4 fontStyle);
	~CTextTexture() {};
	std::string getFontFilePath(void);
	void setFontFilePath(std::string filePath);
	std::string getText(void);
	void setText(std::string text);
	virtual void init(void);
};

#endif