23 std::vector<Color> m_pixels;
28 Image( ) : m_pixels(), m_width(0), m_height(0) {}
29 Image(
const int w,
const int h,
const Color& color=
Black() ) : m_pixels(w*h, color), m_width(w), m_height(h) {}
42 return m_pixels[
offset(x, y)];
48 return m_pixels[
offset(x, y)];
53 assert(
offset < m_pixels.size());
59 assert(
offset < m_pixels.size());
67 float u= x - std::floor(x);
68 float v= y - std::floor(y);
71 return (*
this)(ix, iy) * ((1 - u) * (1 - v))
72 + (*this)(ix+1, iy) * (u * (1 - v))
73 + (*
this)(ix, iy+1) * ((1 - u) * v)
74 + (*
this)(ix+1, iy+1) * (u * v);
80 return sample(x * m_width, y * m_height);
86 assert(!m_pixels.empty());
87 return &m_pixels.front();
93 assert(!m_pixels.empty());
94 return &m_pixels.front();
98 int width( )
const {
return m_width; }
102 unsigned size( )
const {
return m_width * m_height; }
105 unsigned offset(
const int x,
const int y )
const
109 if(px > m_width-1) px= m_width-1;
112 if(py > m_height-1) py= m_height-1;
114 assert(py * m_width + px <
int(m_pixels.size()));
115 return py * m_width + px;
136 return (
this == &im);
representation d'une image.
int height() const
renvoie la hauteur de l'image.
void * data()
renvoie un pointeur sur le stockage des couleurs des pixels.
const void * data() const
renvoie un pointeur sur le stockage des couleurs des pixels.
Color & operator()(const int x, const int y)
unsigned size() const
renvoie le nombre de pixels de l'image.
bool operator==(const Image &im) const
comparaison avec la sentinelle.
Color texture(const float x, const float y) const
renvoie la couleur interpolee aux coordonnees normalisees (x, y) [0 .. 1]x[0 .. 1].
unsigned offset(const int x, const int y) const
renvoie l'indice du pixel.
Color sample(const float x, const float y) const
renvoie la couleur interpolee a la position (x, y) [0 .. width]x[0 .. height].
int width() const
renvoie la largeur de l'image.
Color Black()
utilitaire. renvoie une couleur noire.
representation d'une couleur (rgba) transparente ou opaque.