gKit2 light
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members

representation d'une image. More...

#include <image.h>

Public Member Functions

 Image (const int w, const int h, const Color &color=Black())
 
Coloroperator() (const int x, const int y)
 
Color operator() (const int x, const int y) const
 renvoie la couleur d'un pixel de l'image (image non modifiable). More...
 
Coloroperator() (const unsigned offset)
 
Color operator() (const unsigned offset) const
 
Color sample (const float x, const float y) const
 renvoie la couleur interpolee a la position (x, y) [0 .. width]x[0 .. height]. More...
 
Color texture (const float x, const float y) const
 renvoie la couleur interpolee aux coordonnees normalisees (x, y) [0 .. 1]x[0 .. 1]. More...
 
const void * data () const
 renvoie un pointeur sur le stockage des couleurs des pixels. More...
 
void * data ()
 renvoie un pointeur sur le stockage des couleurs des pixels. More...
 
int width () const
 renvoie la largeur de l'image. More...
 
int height () const
 renvoie la hauteur de l'image. More...
 
unsigned size () const
 renvoie le nombre de pixels de l'image. More...
 
unsigned offset (const int x, const int y) const
 renvoie l'indice du pixel. More...
 
bool operator== (const Image &im) const
 comparaison avec la sentinelle. More...
 

Static Public Member Functions

static Imageerror ()
 

Protected Attributes

std::vector< Colorm_pixels
 
int m_width
 
int m_height
 

Detailed Description

representation d'une image.

Definition at line 20 of file image.h.

Member Function Documentation

◆ operator()() [1/2]

Color& Image::operator() ( const int  x,
const int  y 
)
inline

renvoie une reference sur la couleur d'un pixel de l'image. permet de modifier et/ou de connaitre la couleur d'un pixel :

Image image(512, 512);
image(10, 10)= make_red(); // le pixel (10, 10) devient rouge
image(0, 0)= image(10, 10); // le pixel (0, 0) recupere la couleur du pixel (10, 10)
representation d'une image.
Definition: image.h:21

Definition at line 40 of file image.h.

41  {
42  return m_pixels[offset(x, y)];
43  }
unsigned offset(const int x, const int y) const
renvoie l'indice du pixel.
Definition: image.h:105

◆ operator()() [2/2]

Color Image::operator() ( const int  x,
const int  y 
) const
inline

renvoie la couleur d'un pixel de l'image (image non modifiable).

Definition at line 46 of file image.h.

47  {
48  return m_pixels[offset(x, y)];
49  }

◆ sample()

Color Image::sample ( const float  x,
const float  y 
) const
inline

renvoie la couleur interpolee a la position (x, y) [0 .. width]x[0 .. height].

Definition at line 64 of file image.h.

65  {
66  // interpolation bilineaire
67  float u= x - std::floor(x);
68  float v= y - std::floor(y);
69  int ix= x;
70  int iy= 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);
75  }

◆ texture()

Color Image::texture ( const float  x,
const float  y 
) const
inline

renvoie la couleur interpolee aux coordonnees normalisees (x, y) [0 .. 1]x[0 .. 1].

Definition at line 78 of file image.h.

79  {
80  return sample(x * m_width, y * m_height);
81  }
Color sample(const float x, const float y) const
renvoie la couleur interpolee a la position (x, y) [0 .. width]x[0 .. height].
Definition: image.h:64

◆ data() [1/2]

const void* Image::data ( ) const
inline

renvoie un pointeur sur le stockage des couleurs des pixels.

Definition at line 84 of file image.h.

85  {
86  assert(!m_pixels.empty());
87  return &m_pixels.front();
88  }

◆ data() [2/2]

void* Image::data ( )
inline

renvoie un pointeur sur le stockage des couleurs des pixels.

Definition at line 91 of file image.h.

92  {
93  assert(!m_pixels.empty());
94  return &m_pixels.front();
95  }

◆ width()

int Image::width ( ) const
inline

renvoie la largeur de l'image.

Definition at line 98 of file image.h.

98 { return m_width; }

◆ height()

int Image::height ( ) const
inline

renvoie la hauteur de l'image.

Definition at line 100 of file image.h.

100 { return m_height; }

◆ size()

unsigned Image::size ( ) const
inline

renvoie le nombre de pixels de l'image.

Definition at line 102 of file image.h.

102 { return m_width * m_height; }

◆ offset()

unsigned Image::offset ( const int  x,
const int  y 
) const
inline

renvoie l'indice du pixel.

Definition at line 105 of file image.h.

106  {
107  int px= x;
108  if(px < 0) px= 0;
109  if(px > m_width-1) px= m_width-1;
110  int py= y;
111  if(py < 0) py= 0;
112  if(py > m_height-1) py= m_height-1;
113 
114  assert(py * m_width + px < int(m_pixels.size()));
115  return py * m_width + px;
116  }

◆ error()

static Image& Image::error ( )
inlinestatic

sentinelle pour la gestion d'erreur lors du chargement d'un fichier. exemple :

Image image= read_image("debug.png");
if(image == Image::error())
return "erreur de chargement";
static Image & error()
Definition: image.h:126
Image read_image(const char *filename)
Definition: image_io.cpp:18

Definition at line 126 of file image.h.

127  {
128  static Image image;
129  return image;
130  }

◆ operator==()

bool Image::operator== ( const Image im) const
inline

comparaison avec la sentinelle.

if(image == Image::error()) { ... }

Definition at line 133 of file image.h.

134  {
135  // renvoie vrai si im ou l'objet est la sentinelle
136  return (this == &im);
137  }

The documentation for this class was generated from the following file: