/***************************************************************************** * * Copyright (C) 2003 Cédric Brégardis <cedric.bregardis@free.fr> * * This file is part of BRIQUOLO * * BRIQUOLO is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * BRIQUOLO is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with BRIQUOLO; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *****************************************************************************/ #ifndef MOGL_TEXTURE #define MOGL_TEXTURE #include <map> #include "MOGL_MatriceTransformation.h" #ifdef _WIN32 #include <windows.h> #include <windowsx.h> #endif #include <GL/gl.h> #include "MOGL_Structure.h" #include "MOGL_Image.h" #include <fstream> class MOGL_Texture: public MOGL_Image { // **** Types locaux à la classe **** public: /** Indique le type de texture. */ enum MOGL_Enum_TypeTexture { TEXTURE_OPAQUE, /**< La texture est totalement opaque, quelle que soit la valeur alpha. Elle peut cependant être trouée. @sa SetCouleurTrou() SetCouleurTrouOctet()*/ TEXTURE_TRANSPARENTE, /**< La texture est transparente, avec un mode de tranparence <i>normal</i> défini à partir de la valeur alpha. Elle peut aussi être trouée. @sa SetCouleurTrou() SetCouleurTrouOctet()*/ TEXTURE_SATURE, /**< La texture est transparente, avec un mode de tranparence <i>saturant</i> défini à partir de la valeur alpha. Elle peut aussi être trouée. @sa SetCouleurTrou() SetCouleurTrouOctet()*/ }; // ********************************** protected : void _Init(); void _AnimerTexture(); GLuint _Nom; bool _RepeterTexture; MOGL_Enum_TypeTexture _TypeTexture; bool _Animer; float _VitesseX, _VitesseY, _VitesseRotation; float _TranslationX, _TranslationY, _Rotation; float _Temps; bool _MipMap; public : /** Constructeur. @param p_TypeTexture : indique le type de texture (par défaut la texture est opaque). @sa MOGL_Type_Texture. */ MOGL_Texture(MOGL_Enum_TypeTexture p_TypeTexture=TEXTURE_OPAQUE, bool p_AutoriserTrou=false, bool p_MipMap=true); /** Destructeur. */ ~MOGL_Texture(); /** Permet de charger la texture à partir d'une image BMP. @remark Une image BMP ne possède jamais de paramètre alpha, donc dans le cas de l'utilisation du mode ALPHA_FICHIER, la valeur alpha vaut toujours 1. @param p_NomFichier : nom du fichier à charger. @return <i>true</i> si il n'y a pas eu de problème, <i>false</i> sinon. @sa SetGestionModeAlpha() SetGestionModeRGB() */ bool ChargerBMP(const char * p_NomFichier); /** Permet de charger la texture à partir d'une image PNG. @remark Une image PNG peut ne pas possèder de paramètre alpha donc dans ce cas, l'utilisation du mode ALPHA_FICHIER donne une valeur alpha de 1. @param p_NomFichier : nom du fichier à charger. @return <i>true</i> si il n'y a pas eu de problème, <i>false</i> sinon. @sa SetGestionModeAlpha() SetGestionModeRGB() */ bool ChargerPNG(const char * p_NomFichier); /** Permet de récupérer le type de texture. Le type de la texture est défini à la construction de celle-ci. @return Le type de texture. @sa MOGL_Type_Texture MOGL_Texture. */ MOGL_Enum_TypeTexture GetTypeTexture() const; /** Permet de définir s'il faut ou no animer la texture Par défaut elle ne l'est pas @param p_Animer : <i>true</i> pour animer, <i>false</i> sinon. @sa GetAnimation() SetVitesseTranslation() SetVitesseRotation() */ void SetAnimation(bool p_Animer); /** Indique si la texture est animée. @return <i>true</i> si la texture est animée, <i>false</i> sinon. @sa SetAnimation() SetVitesseTranslation() SetVitesseRotation() */ bool GetAnimation() const; /** Permet de spécifier la vitesse de translation de la texture. Cette vitesse est utilisée si la texture est animée (cf SetAnimation()). @param p_VitesseX : vitesse de translation en largeur/seconde. La largeur de la texture est égale à 1 ainsi une vitesse de 5, indique que la texture est déplacée de 5 fois sa largeur en une seconde. @param p_VitesseY : vitesse de translation en hauteur/seconde. La hauteur de la texture est égale à 1 ainsi une vitesse de 5, indique que la texture est déplacée de 5 fois sa hauteur en une seconde. @sa SetAnimation() GetAnimation(), SetVitesseRotation() */ void SetVitesseTranslation(float p_VitesseX, float p_VitesseY); /** Permet de spécifier la vitesse de rotation de la texture. Cette vitesse est utilisée si la texture est animée (cf SetAnimation()). @param p_VitesseRotation : vitesse de rotation en degré par seconde. @sa SetAnimation() GetAnimation(), SetVitesseTranslation() */ void SetVitesseRotation(float p_VitesseRotation); /** Permet de sélectionner la texture au niveau d'OpenGL. */ void Selectionner(); /** Permet de définir si la texture doit être répétée ou non. */ void RepeterTexture(bool p_Val); }; #endif