/*====================ÉCOLE POLYTECHNIQUE DE MONTRÉAL============================

	NOM DU FICHIER :CFont.h

	DESCRIPTION :	Déclaration de la classe qui gère les polices portables

	AUTEUR : Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse

===============================================================================*/
#ifndef CFONT_H
#define CFONT_H

#define MAX_CHARS	256									

#include <string>
using std::string;
#include "gltext.h"

class CFont
{
	gltext::FontPtr ptrFont; //Pointeur vers la police
	gltext::FontRendererPtr ptrRenderer; //Pointeur vers le "dessinateur"

	string FontFile; //Nom du fichier de la police
	unsigned int Height; //Hauteur de la police
public:
	void Init(); //Initialisation
	void glDrawText(float x, float y, const char* cString);	//Dessine le texte en x,y
	void glDrawTextML(float x, float y, string strString); //Dessine multi ligne
	int GetTextWidth(const char *strString); //Retourne la largeur d'une chaine
	int CharWidth(const char Char); //Retourne la largeur d'un caractère
	unsigned int GetHeight(); //Retourne la hauteur de la police
	gltext::FontPtr GetFontPtr() { 	if (this->ptrFont == 0) Init(); return this->ptrFont; }
	gltext::FontRendererPtr GetFontRendererPtr() { 	if (this->ptrFont == 0) Init(); return this->ptrRenderer; }
	
	CFont(char* FontFile = "", unsigned int Height = 0);
	~CFont() {}
	
	void InitialSetup(char* FontFile, unsigned int Height); //Permet l'initialisation si celle-ci n'a pas été faite à partir du constructeur
};

#endif
