/* Stockage d'une lumiere                       */
/*                                              */
/* Auteur: Nicolas JANEY                        */
/* nicolas.janey@univ-fcomte.fr                 */
/* Mars 2014                                    */

#ifndef ____LUMIERE____
#define ____LUMIERE____

class Couleur;
class Energie;
class Pos3D;
class Dir3D;
class Scene;
class TG3D;

class Lumiere  {

  public :
    Couleur *c;
    double intensite;
    bool on;

  public :

    /* Constructeurs                            */
    Lumiere(void);
    Lumiere(Couleur *c,double intensite);
    Lumiere(Lumiere *l);

    /* Destructeur                              */
    virtual ~Lumiere(void);

//////////////////////////////////////////////////

    /* Methode de calcul de la quantite         */
    /* d'energie diffusee en un point p         */
    /* de normale n et de coefficient           */
    /* de diffusion kd                          */

    virtual void energieDiffusee(Energie *e,Pos3D *p,Dir3D *n,Couleur *kd) = 0;

//////////////////////////////////////////////////

    virtual int eclaire(Pos3D *p,Scene *scn,double d) = 0;

    /* Methode d'affichage texte                */
    virtual void print(void);

    virtual double distance(Pos3D *p) = 0;
    virtual void transforme(TG3D *m) = 0;
    virtual void modeliseOpenGL(int num) = 0;

    virtual Lumiere *clone(void) = 0;
};

#endif
