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

	NOM DU FICHIER :CEditeurTroudeau.cpp

	DESCRIPTION :	Ce fichier contient l'implémentation de la classe CEditeurTroudeau,
					l'objet représentant un trou d'eau.

	AUTEUR : Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse

	DATE DE CRÉATION : 2004-3-17

	MISES À JOUR :

===============================================================================*/

#include "CEditeurTroudeau.h"
#include <GL/glut.h>

CPngTexture CEditeurTroudeau::TextureTroudeau;





/*------------------------------------------------------------------
  Fonction :	CEditeurTroudeau::GetType

  Description :	Fonction qui retourne le type de l'objet

  Paramètres :

  Valeur retournée :	type_editeurobjet : Type de l'objet

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
type_editeurobjet CEditeurTroudeau::GetType() const
{
    return EDITEUROBJET_TROUDEAU;
}




/*------------------------------------------------------------------
  Fonction :	CEditeurTroudeau::Affiche

  Description :	Fonction affichant l'objet

  Paramètres :
	 bool ADetruire : Si ADetruire est vrai, elle l'affiche comme 
					  si on essaie d'enlever l'objet

  Valeur retournée :	void : 

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
void CEditeurTroudeau::Affiche(bool ADetruire) const
{
    glEnable(GL_TEXTURE_2D);
    glColor3f(1,1,1);
    glBindTexture(GL_TEXTURE_2D, TextureTroudeau.GetID());
    
    glBegin(GL_QUADS);
    glTexCoord2i(0, 1); glVertex2f(GetLeft(),  GetBottom());
    glTexCoord2i(1, 1); glVertex2f(GetRight(), GetBottom());
    glTexCoord2i(1, 0); glVertex2f(GetRight(), GetTop());
    glTexCoord2i(0, 0); glVertex2f(GetLeft(), GetTop());
    glEnd();
    
    glDisable(GL_TEXTURE_2D);
    
    if (ADetruire)
    {
	glColor4f(1.0f,0.0f,0.0f,0.7f);
	glBegin(GL_QUADS);
	glVertex2f(GetLeft(),  GetBottom());
	glVertex2f(GetRight(), GetBottom());
	glVertex2f(GetRight(), GetTop());
	glVertex2f(GetLeft(), GetTop());
	glEnd();
    }
    glColor4f(1.0f,1.0f,1.0f,1.0f);
}




/*------------------------------------------------------------------
  Fonction :	CEditeurTroudeau::GetNewCopy

  Description :	Fonction qui retourne une copie identique nouvellement allouée de l'objet

  Paramètres :

  Valeur retournée :	CEditeurObjet* : Pointeur vers la copie nouvellement allouée

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
CEditeurObjet* CEditeurTroudeau::GetNewCopy() const
{
    return new CEditeurTroudeau(getPosition());
}




/*------------------------------------------------------------------
  Fonction :	CEditeurTroudeau::MouseOver

  Description :	Fonction qui retourne vrai si la souris est au-dessus de l'objet

  Paramètres :
	 float MouseX : Position en X de la souris
	 float MouseY : Position en Y de la souris

  Valeur retournée :	bool : vrai si la souris est au-dessus de l'objet

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
bool CEditeurTroudeau::MouseOver(float MouseX, float MouseY) const
{
    return ( ( MouseX > GetLeft()) && (MouseX < GetRight()) &&
	     ( MouseY > GetBottom() ) && (MouseY < GetTop()) );
}




/*------------------------------------------------------------------
  Fonction :	CEditeurTroudeau::ChargeTextures

  Description :	Fonction qui charge les textures

  Paramètres :

  Valeur retournée :	bool : retourne vrai si la texture est bien chargée

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
bool CEditeurTroudeau::ChargeTextures()
{
    return (TextureTroudeau.LoadPNG("editeur/images/Troudeau.png") != 0);
}




/*------------------------------------------------------------------
  Fonction :	CEditeurTroudeau::DechargeTextures

  Description :	Fonction qui décharge les textures

  Paramètres :

  Valeur retournée :	bool : vrai

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
bool CEditeurTroudeau::DechargeTextures()
{
    TextureTroudeau.Unload();
    return true;
}
