Envoyé par
deebou
voilà juste le squelette de tes classes... à toi de remplir les commentaires...
class Couleur
{
public:
Couleur() { Col = 0; }
Couleur(unsigned char r, unsigned char g, unsigned char b) { R = r ; G = g ; B = b; }
union
{
unsigned char A, R, G, B; //(ou l'inverse ... à voir plus tard);
unsigned char V[4];
unsigned long Col;
};
};
//- la classe générique matrice
template <class T> class Matrice
{
public:
Matrice(): W(0), H(0), Datas(0) {}
Matrice(unsigned int w, unsigned int h) { W = w; H = h; Datas = new T[w*h]; }
~Matrice() { if(Datas) delete Datas; }
unsigned int W, H;
T *Datas;
};
//- la classe pixel qui derive de la classe couleur
class Pixel : public Couleur
{
public:
unsigned int X, Y;
};
//- la classe matrice_couleur qui est definie par la classe générique matrice avec paramètre d'instanciation la classe couleur
class MatriceCouleur : public Matrice<Couleur>
{
};
//- la classe image qui est définie par la classe générique matrice avec paramètre d'instanciation la classe pixel
class Image : public Matrice<Pixel>
{
public:
bool operator == (const Image &I) { /* ...*/ return true; }
Image & operator = (const Image &I) { /* ...*/ return *this; }
Image & oprator /= (int Dir) { /* ...*/ return *this; }
Image & oprator *= (int n) { /* ...*/ return *this; }
Image Extraire( unsigned int x, unsigned int y, unsigned int n) { Image Tmp; /* ...*/ return Tmp; }
void Noir_Blanc() { /* ... */ }
// Pour l'opé << je sais pas sur quel périphérique tu affiches et je peux donc même pas prévoir le prototype
};
Bonne chance...
Partager