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

	NOM DU FICHIER :CPngTexture.cpp

	DESCRIPTION :	Ce fichier contient l'implémentation de la classe CPngTexture 
					qui représente une texture chargée à partir d'un fichier .png

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

	DATE DE CRÉATION : 2004-3-17

	MISES À JOUR :

===============================================================================*/
#include "CPngTexture.h"
#include "glpng.h"
#include "GL/glut.h"




/*------------------------------------------------------------------
  Fonction :	CPngTexture::CPngTexture

  Description :	Constructeur de la classe CPngTexture

  Paramètres :

  Valeur retournée :	 : 

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
CPngTexture::CPngTexture()
{
    ID = 0;
}




/*------------------------------------------------------------------
  Fonction :	CPngTexture::~CPngTexture

  Description :	Description de la classe CPngTexture

  Paramètres :

  Valeur retournée :	 : 

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
CPngTexture::~CPngTexture()
{
    ID = 0;
}




/*------------------------------------------------------------------
  Fonction :	CPngTexture::LoadPNG

  Description :	Charge une texture à partir d'un fichier .png

  Paramètres :
	 const char* FileName : Nom du fichier
	 int Mipmap : Utilisation de mipmap
	 int Transparency : Utilisation de transparence
	 int TextureWrap : Utilisation d'enroulement de texture
	 int MagFilterParam : fonction de filtre max
	 int MinFilterParam : fonction de filtre min

  Valeur retournée :	int : ID de la texture OpenGL

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
int CPngTexture::LoadPNG(const char* FileName, int Mipmap, int Transparency, int TextureWrap, int MagFilterParam, int MinFilterParam)
{
    pngLoadRaw(FileName,(pngRawInfo*)&this->RawInfo);
    return(this->ID = pngBind(FileName, Mipmap, Transparency, ((pngInfo*)&this->Info), TextureWrap, MagFilterParam, MinFilterParam));
}





/*------------------------------------------------------------------
  Fonction :	CPngTexture::Unload

  Description :	Decharge la texture de la mémoire

  Paramètres :

  Valeur retournée :	void : 

  Par : 2004-3-17 Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse
  MAJ: 
------------------------------------------------------------------*/
void CPngTexture::Unload()
{
    glDeleteTextures(1,&this->ID);
}
