00001 /// \file 00002 /// Définition de la classe Pixel 00003 #ifndef GUARD_PIXEL_H 00004 #define GUARD_PIXEL_H 00005 00006 #include <string> 00007 00008 #include "Debug.hpp" 00009 #include "Color.hpp" 00010 00011 00012 using namespace std; 00013 00014 class Pixel_Base; 00015 /////////////////////////////////////////////////////////////////////////////// 00016 /// Interface sur une classe Pixel_Base 00017 /// 00018 /// Gère un compteur de références 00019 /// Les méthodes sont redirigées vers une instance de Pixel_Base 00020 /////////////////////////////////////////////////////////////////////////////// 00021 class Pixel{ 00022 /// Classe de base 00023 Pixel_Base* p; 00024 public: 00025 /// Constructeur par défaut 00026 Pixel(); 00027 /// Constructeur à partir des coordonnées du pixel et sa couleur 00028 /// \param int coordonnée horizontale 00029 /// \param int coordonnée verticale 00030 /// \param Color couleur 00031 Pixel(int, int, Color); 00032 /// Constructeur de copie 00033 Pixel(const Pixel&); 00034 /// Operateur d'affectation 00035 Pixel& operator=(const Pixel&); 00036 /// Destructeur 00037 ~Pixel(); 00038 /// Retourne une chaîne de caractères détaillée 00039 string toString() const; 00040 /// Retourne la coordonnée horizontale du pixel 00041 int getX()const; 00042 /// Retourne la coordonnée verticale du pixel 00043 int getY()const; 00044 /// Fixe la couleur du pixel 00045 void setColor(Color); 00046 /// Retourne la couleur du pixel 00047 Color getColor()const; 00048 }; 00049 /////////////////////////////////////////////////////////////////////////////// 00050 /// Un pixel 00051 /// 00052 /// Représente un pixel d'une image avec ses coordonnées et sa couleur 00053 /////////////////////////////////////////////////////////////////////////////// 00054 class Pixel_Base{ 00055 friend class Pixel; 00056 /// Compteur de référence 00057 int use; 00058 /// Couleur du pixel 00059 Color color; 00060 /// Coordonnées du pixel 00061 int x, y; 00062 /// Constructeur par défaut 00063 Pixel_Base():use(1),color(0), x(-1), y(-1){} 00064 /// Constructeur avec 00065 /// \param _x coordonnée horizontale 00066 /// \param _y coordonnée verticale 00067 /// \param _color couleur du pixel 00068 Pixel_Base(int _x, int _y, Color _color):use(1),color(_color), x(_x), y(_y){} 00069 /// Retourne une chaîne de caractères détaillée 00070 string toString() const; 00071 /// Retourne la coordonnée horizontale du pixel 00072 int getX()const{return x;} 00073 /// Retourne la coordonnée verticale du pixel 00074 int getY()const{return y;} 00075 /// Fixe la couleur du pixel 00076 void setColor(Color _color){ color = _color;} 00077 /// Retourne la couleur du pixel 00078 Color getColor()const{return color;} 00079 }; 00080 #endif 00081