#ifndef TYPE_IMAGE_H
#define TYPE_IMAGE_H

#include <string>
using std::string;

enum enum_type_couleur { ROUGE, VERT, BLEU };

// Classe qui représente le tableau contenant l'image

class type_image
{
	int Width, Height;
	float *PtrImage;

public:
	// Constructeur et destructeur
	inline type_image(int W = 0, int H = 0)
	{ Width = W; Height = H; PtrImage = new float[Width*Height*3]; }
	inline ~type_image() { delete []PtrImage; }

	
	// Opérateur servant à accéder aux cases du tableau de pixels
	inline float& operator() (int i, int j, enum_type_couleur c)
	{ return PtrImage[(i + j*Width)*3 + int(c)]; }
	// Fonction qui s'assure que la couleur est correcte
	inline void Valide(float& Couleur)
	{ if (Couleur < 0) Couleur = 0;
	  else if (Couleur > 1) Couleur = 1; }

	
	// Fonction qui sauvegarde l'image en .bmp
	bool SauveBMP(const string& NomFic) const;
	friend bool SauveBMP24(const string& NomFic, const type_image& Image);
	// Fonction qui charge l'image d'un .bmp
	bool ChargeBMP(const string& NomFic);

  friend void afficher(type_image& Img);
  friend void display(void);
};

#endif