refactored, pointers not obfuscated anymore

This commit is contained in:
Phuntsok Drak-pa 2018-11-21 10:46:01 +01:00
parent e509b7402f
commit d8c7e7d454
8 changed files with 80 additions and 91 deletions

View File

@ -13,7 +13,7 @@
* \param[in] t_zone Zone à laquelle le pixel est éligible ou non * \param[in] t_zone Zone à laquelle le pixel est éligible ou non
* \return Valeur booléenne, `true` si le pixel est éligible, `false` sinon * \return Valeur booléenne, `true` si le pixel est éligible, `false` sinon
*/ */
bool sameColor(Pixel_t t_pixel, Zone_t t_zone) { bool sameColor(Pixel* t_pixel, Zone* t_zone) {
return t_pixel->r == t_zone->r && t_pixel->g == t_zone->g && return t_pixel->r == t_zone->r && t_pixel->g == t_zone->g &&
t_pixel->b == t_zone->b; t_pixel->b == t_zone->b;
} }
@ -31,8 +31,8 @@ bool sameColor(Pixel_t t_pixel, Zone_t t_zone) {
* \param[in] t_idx Index du pixel actuel dans limage `t_img` * \param[in] t_idx Index du pixel actuel dans limage `t_img`
* \param[out] t_zone Zone à laquelle sera potentiellement ajouté le pixel * \param[out] t_zone Zone à laquelle sera potentiellement ajouté le pixel
*/ */
void addPixelToSelectedZone(Image_t t_img, int t_idx, Zone_t t_zone) { void addPixelToSelectedZone(Image* t_img, int t_idx, Zone* t_zone) {
Pixel_t current_pixel; Pixel* current_pixel;
int xd, xg, y = t_idx / (int)t_img->x; int xd, xg, y = t_idx / (int)t_img->x;
current_pixel = darrayGet(t_img->pixels, t_idx); current_pixel = darrayGet(t_img->pixels, t_idx);
if (current_pixel->visited || t_idx >= (int)darraySize(t_img->pixels) || if (current_pixel->visited || t_idx >= (int)darraySize(t_img->pixels) ||
@ -63,9 +63,9 @@ void addPixelToSelectedZone(Image_t t_img, int t_idx, Zone_t t_zone) {
/* Selects the zone related to the pixel, skip tests if pixel has /* Selects the zone related to the pixel, skip tests if pixel has
already been visited */ already been visited */
void chooseZoneForPixel(Image_t t_img, int t_idx, darray_t zones) { void chooseZoneForPixel(Image* t_img, int t_idx, darray *zones) {
Zone_t current_zone; Zone* current_zone;
Pixel_t pixel; Pixel* pixel;
size_t i; size_t i;
pixel = darrayGet(t_img->pixels, t_idx); pixel = darrayGet(t_img->pixels, t_idx);
if (pixel->visited) if (pixel->visited)
@ -80,8 +80,8 @@ void chooseZoneForPixel(Image_t t_img, int t_idx, darray_t zones) {
} }
/* converts an image to zones */ /* converts an image to zones */
darray_t imgToZones(Image_t t_img) { darray* imgToZones(Image* t_img) {
darray_t zones; darray *zones;
const size_t nb_pixels = darraySize(t_img->pixels); const size_t nb_pixels = darraySize(t_img->pixels);
size_t i; size_t i;
zones = darrayNew(sizeof(Zone)); zones = darrayNew(sizeof(Zone));
@ -93,8 +93,8 @@ darray_t imgToZones(Image_t t_img) {
} }
void compress(const char *input_file) { void compress(const char *input_file) {
Image_t img; Image* img;
darray_t zones; darray *zones;
img = newImage(); img = newImage();
imageLoadPPM(input_file, img); imageLoadPPM(input_file, img);
zones = imgToZones(img); zones = imgToZones(img);

View File

@ -9,11 +9,11 @@
#include "ppm.h" #include "ppm.h"
/// Teste léligibilité dun pixel à une zone /// Teste léligibilité dun pixel à une zone
bool sameColor(Pixel_t, Zone_t); bool sameColor(Pixel *, Zone *);
/// Ajoute un pixel et ses pixels connexes à une zone /// Ajoute un pixel et ses pixels connexes à une zone
void addPixelToSelectedZone(Image_t t_img, int t_idx, Zone_t t_zone); void addPixelToSelectedZone(Image *t_img, int t_idx, Zone *t_zone);
void chooseZoneForPixel(Image_t t_img, int t_idx, darray_t zones); void chooseZoneForPixel(Image *t_img, int t_idx, darray *zones);
darray_t imgToZones(Image_t t_img); darray *imgToZones(Image *t_img);
void compress(const char*); void compress(const char *);
#endif /* COMMON_H */ #endif /* COMMON_H */

View File

@ -16,9 +16,9 @@
* \param[in] element_size Taille des objets stockés * \param[in] element_size Taille des objets stockés
* \return Pointeur sur le nouvel objet \ref darray_t * \return Pointeur sur le nouvel objet \ref darray_t
*/ */
darray_t darrayNew(size_t t_element_size) { darray* darrayNew(size_t t_element_size) {
darray_t ret; darray* ret;
ret = (darray_t)malloc(sizeof(darray)); ret = (darray*)malloc(sizeof(darray));
ret->begin = NULL; ret->begin = NULL;
ret->end = ret->begin; ret->end = ret->begin;
ret->element_size = t_element_size; ret->element_size = t_element_size;
@ -28,15 +28,15 @@ darray_t darrayNew(size_t t_element_size) {
/** /**
* `darrayInsert` insère lélément `elem` avant l'élément pointé par `pos` dans * `darrayInsert` insère lélément `elem` avant l'élément pointé par `pos` dans
* lobjet \ref darray_t. Cela décalera tous les éléments stockés dans \a `self` * lobjet \ref darray. Cela décalera tous les éléments stockés dans \a `self`
* pen dun cran vers la fin du tableau et insérera à lendroit pointé le nouvel * pen dun cran vers la fin du tableau et insérera à lendroit pointé le nouvel
* élément. Cette fonction modifie les membres `begin` et `end` et * élément. Cette fonction modifie les membres `begin` et `end` et
* potentiellement `capacity` de `self`. * potentiellement `capacity` de `self`.
* \param[in] self Objet \ref darray_t dans lequel on souhaite insérer un nouvel élément * \param[in] self Objet \ref darray dans lequel on souhaite insérer un nouvel
* \param[in] pos Position à laquelle on souhaite insérer un nouvel élément * élément \param[in] pos Position à laquelle on souhaite insérer un nouvel
* \param[in] elem Élément que lon souhaite insérer * élément \param[in] elem Élément que lon souhaite insérer
*/ */
void darrayInsert(darray_t t_self, void *t_pos, void *t_elem) { void darrayInsert(darray *t_self, void *t_pos, void *t_elem) {
char *itr; char *itr;
long pos_aux; long pos_aux;
pos_aux = (char *)t_pos - (char *)t_self->begin; pos_aux = (char *)t_pos - (char *)t_self->begin;
@ -51,13 +51,13 @@ void darrayInsert(darray_t t_self, void *t_pos, void *t_elem) {
} }
/** /**
* Étend la capacité d'un \ref darray_t en réallouant sa mémoire, multipliant * Étend la capacité d'un \ref darray en réallouant sa mémoire, multipliant
* sa capacité par deux. Si la réallocation mémoire ne réussit pas, le * sa capacité par deux. Si la réallocation mémoire ne réussit pas, le
* programme sarrête immédiatement, renvoyant la valeur de \ref PTR_ERROR * programme sarrête immédiatement, renvoyant la valeur de \ref PTR_ERROR
* *
* \param[in] self L'objet darray_t à étendre * \param[in] self L'objet darray à étendre
*/ */
void darrayExtend(darray_t t_self) { void darrayExtend(darray *t_self) {
void *new_array; void *new_array;
size_t size; size_t size;
size = darraySize(t_self); size = darraySize(t_self);
@ -74,15 +74,15 @@ void darrayExtend(darray_t t_self) {
} }
/** /**
* `darrayErase` supprime lélément de objet \ref darray_t `self` pointé par * `darrayErase` supprime lélément de objet \ref darray `self` pointé par
* `pos`. Cela décalera tous les éléments suivants dans le tableau dun cran * `pos`. Cela décalera tous les éléments suivants dans le tableau dun cran
* vers le début du tableau de manière à ce quil ny aie pas délément vide * vers le début du tableau de manière à ce quil ny aie pas délément vide
* entre les membres `begin` et `end` de `self`. Par ailleurs, le membre `end` * entre les membres `begin` et `end` de `self`. Par ailleurs, le membre `end`
* de `self` se retrouve modifié par la fonction. * de `self` se retrouve modifié par la fonction.
* \param[out] self Objet \ref `darray_t` dont on souhaite supprimer un élément * \param[out] self Objet \ref `darray` dont on souhaite supprimer un élément
* \param[in] pos Élément de `self` que lon souhaite supprimer * \param[in] pos Élément de `self` que lon souhaite supprimer
*/ */
void darrayErase(darray_t t_self, void *t_pos) { void darrayErase(darray *t_self, void *t_pos) {
memmove(t_pos, (char *)t_pos + t_self->element_size, memmove(t_pos, (char *)t_pos + t_self->element_size,
(unsigned long)(((char *)t_self->end - t_self->element_size) - (unsigned long)(((char *)t_self->end - t_self->element_size) -
(char *)t_pos)); (char *)t_pos));
@ -92,58 +92,58 @@ void darrayErase(darray_t t_self, void *t_pos) {
/** /**
* `darrayPushBack` ajoute un nouvel élément `elem` à lobjet `self` à la fin du * `darrayPushBack` ajoute un nouvel élément `elem` à lobjet `self` à la fin du
* tableau de ce dernier. Cette fonction modifie le membre `end` de `self`. * tableau de ce dernier. Cette fonction modifie le membre `end` de `self`.
* \param[out] self Objet \ref darray_t à la fin duquel on souhaite ajouter un nouvel élément * \param[out] self Objet \ref darray à la fin duquel on souhaite ajouter un nouvel élément
* \param[in] elem Élément que lon souhaite ajouter à la fin de `self` * \param[in] elem Élément que lon souhaite ajouter à la fin de `self`
*/ */
void darrayPushBack(darray_t t_self, void *t_elem) { void darrayPushBack(darray *t_self, void *t_elem) {
darrayInsert(t_self, t_self->end, t_elem); darrayInsert(t_self, t_self->end, t_elem);
} }
/** /**
* `darrayPopBack` permet de supprimer le dernier élément de lobjet \ref * `darrayPopBack` permet de supprimer le dernier élément de lobjet \ref
* darray_t passé en argument. Cette fonction modifie le membre `end` de ce * darray passé en argument. Cette fonction modifie le membre `end` de ce
* dernier objet. * dernier objet.
* \param[out] self Objet dont on souhaite supprimer le dernier élément * \param[out] self Objet dont on souhaite supprimer le dernier élément
*/ */
void darrayPopBack(darray_t t_self) { void darrayPopBack(darray* t_self) {
darrayErase(t_self, (char *)t_self->end - t_self->element_size); darrayErase(t_self, (char *)t_self->end - t_self->element_size);
} }
/** /**
* `darrayDelete` supprime tous les éléments contenus par lobjet \ref darray_t * `darrayDelete` supprime tous les éléments contenus par lobjet \ref darray
* passé en argument avant de libérer la mémoire occupée par lobjet lui-même. * passé en argument avant de libérer la mémoire occupée par lobjet lui-même.
* Lobjet passé en argument ne sera plus utilisable après utilisation de cette * Lobjet passé en argument ne sera plus utilisable après utilisation de cette
* fonction. * fonction.
* \param[out] self Objet \ref darray_t à supprimer * \param[out] self Objet \ref darray à supprimer
*/ */
void darrayDelete(darray_t t_self) { void darrayDelete(darray* t_self) {
free(t_self->begin); free(t_self->begin);
free(t_self); free(t_self);
} }
/** /**
* `darraySize` renvoie le nombre déléments contenu dans le \ref darray_t * `darraySize` renvoie le nombre déléments contenu dans le \ref darray
* `self` passé en arguments. Cette fonction ne modifie pas lélément passé en * `self` passé en arguments. Cette fonction ne modifie pas lélément passé en
* argument. * argument.
* \param[out] self Objet \ref darray_t dont on souhaite connaître le nombre déléments * \param[out] self Objet \ref darray dont on souhaite connaître le nombre déléments
* \return Nombre déléments contenus dans `self` * \return Nombre déléments contenus dans `self`
*/ */
size_t darraySize(darray_t t_self) { size_t darraySize(darray* t_self) {
return (size_t)((char *)t_self->end - (char *)t_self->begin) / return (size_t)((char *)t_self->end - (char *)t_self->begin) /
t_self->element_size; t_self->element_size;
} }
/** /**
* `darrayGet` permet de récupérer un élément dun objet \ref darray_t grâce à * `darrayGet` permet de récupérer un élément dun objet \ref darray grâce à
* son index dans le tableau de lobjet `self`. Si lindex est trop grand, alors * son index dans le tableau de lobjet `self`. Si lindex est trop grand, alors
* le pointeur `NULL` sera renvoyé, sinon un pointeur de type `void*` pointant * le pointeur `NULL` sera renvoyé, sinon un pointeur de type `void*` pointant
* sur lélément correspondant sera renvoyé. Cette fonction ne modifie pas * sur lélément correspondant sera renvoyé. Cette fonction ne modifie pas
* lobjet `self`. * lobjet `self`.
* \param[out] self Objet \ref darray_t duquel on souhaite obtenir un pointeur sur lélément à lindex `idx` * \param[out] self Objet \ref darray duquel on souhaite obtenir un pointeur sur lélément à lindex `idx`
* \param[in] idx Index de lélément que lon souhaite récupérer * \param[in] idx Index de lélément que lon souhaite récupérer
* \return Pointeur de type `void*` pointant sur lélément si lindex est valide, sur NULL sinon. * \return Pointeur de type `void*` pointant sur lélément si lindex est valide, sur NULL sinon.
*/ */
void *darrayGet(darray_t t_self, size_t t_idx) { void *darrayGet(darray* t_self, size_t t_idx) {
void *itr; void *itr;
itr = (char *)t_self->begin + t_idx * t_self->element_size; itr = (char *)t_self->begin + t_idx * t_self->element_size;
return itr; return itr;

View File

@ -22,8 +22,6 @@ typedef struct darray_s {
size_t element_size; /*!< Taille des éléments stockés dans le tableau */ size_t element_size; /*!< Taille des éléments stockés dans le tableau */
size_t capacity; /*!< Capacité maximale du tableau actuel (non destinée à lutilisateur) */ size_t capacity; /*!< Capacité maximale du tableau actuel (non destinée à lutilisateur) */
} darray; } darray;
/// `darray_t` est un pointeur vers une structure de type \ref darray_s
typedef darray *darray_t;
/// \brief Créé un nouvel objet \ref darray vide /// \brief Créé un nouvel objet \ref darray vide
darray *darrayNew(size_t element_size); darray *darrayNew(size_t element_size);

View File

@ -152,8 +152,8 @@ void dataToImage(Image *t_img, unsigned char *t_data, unsigned long t_size) {
* \param[in] img Conteneur dimage contenant les pixels à convertir * \param[in] img Conteneur dimage contenant les pixels à convertir
* \return Tableau de pointeurs de `GLuint` * \return Tableau de pointeurs de `GLuint`
*/ */
unsigned char *imageToData(Image_t t_img) { unsigned char *imageToData(Image* t_img) {
Pixel_t pixel; Pixel* pixel;
unsigned char *data, size; unsigned char *data, size;
unsigned long i; unsigned long i;
size = (unsigned char)darraySize(t_img->pixels); size = (unsigned char)darraySize(t_img->pixels);
@ -181,7 +181,6 @@ int imageLoadPPM(const char *t_filename, Image *t_img) {
FILE *fp; FILE *fp;
unsigned long size; unsigned long size;
unsigned char *data = NULL; unsigned char *data = NULL;
printf("Hey auie\n");
fp = get_file(t_filename, "rb"); /* open PPM file for reading */ fp = get_file(t_filename, "rb"); /* open PPM file for reading */
read_file_format(fp, t_filename); /* read image format */ read_file_format(fp, t_filename); /* read image format */
check_for_comments(fp); /* check for comments */ check_for_comments(fp); /* check for comments */
@ -200,7 +199,7 @@ int imageLoadPPM(const char *t_filename, Image *t_img) {
* \param[in] filename Nom du fichier image à ouvrir * \param[in] filename Nom du fichier image à ouvrir
* \param[in] img Objet \ref Image à écrire * \param[in] img Objet \ref Image à écrire
*/ */
void imageSavePPM(char *t_filename, Image_t t_img) { void imageSavePPM(char *t_filename, Image* t_img) {
FILE *fp; FILE *fp;
unsigned char *data; unsigned char *data;
fp = get_file(t_filename, "wb"); /* open file for output */ fp = get_file(t_filename, "wb"); /* open file for output */

View File

@ -28,10 +28,10 @@ unsigned long read_data(FILE *fp, Image *img, unsigned char **data,
/// \brief Convertit les données brutes de fichier vers des conteneurs de pixels /// \brief Convertit les données brutes de fichier vers des conteneurs de pixels
void dataToImage(Image *img, unsigned char *data, unsigned long size); void dataToImage(Image *img, unsigned char *data, unsigned long size);
/// \brief Convertit les pixels dune image en tableau natif OpenGL /// \brief Convertit les pixels dune image en tableau natif OpenGL
unsigned char *imageToData(Image_t img); unsigned char *imageToData(Image *img);
/// \brief Ouverture et lecture de limage dentrée /// \brief Ouverture et lecture de limage dentrée
int imageLoadPPM(const char *filename, Image_t img); int imageLoadPPM(const char *filename, Image *img);
/// \brief Ouverture et écriture de l'image de sortie /// \brief Ouverture et écriture de l'image de sortie
void imageSavePPM(char *filename, Image_t img); void imageSavePPM(char *filename, Image *img);
#endif /* IMGTACHES_SRC_PPM_H_ */ #endif /* IMGTACHES_SRC_PPM_H_ */

View File

@ -18,9 +18,9 @@
* \param[in] b Valeur bleue du pixel * \param[in] b Valeur bleue du pixel
* \return Pointeur sur une structure de type \ref Pixel * \return Pointeur sur une structure de type \ref Pixel
*/ */
Pixel_t newPixel(uint8_t t_r, uint8_t t_g, uint8_t t_b) { Pixel *newPixel(uint8_t t_r, uint8_t t_g, uint8_t t_b) {
Pixel_t res; Pixel *res;
res = (Pixel_t)malloc(sizeof(Pixel)); res = (Pixel *)malloc(sizeof(Pixel));
res->r = t_r; res->r = t_r;
res->g = t_g; res->g = t_g;
res->b = t_b; res->b = t_b;
@ -36,9 +36,7 @@ Pixel_t newPixel(uint8_t t_r, uint8_t t_g, uint8_t t_b) {
* *
* \param[in] self Pointeur vers le pixel à détruire * \param[in] self Pointeur vers le pixel à détruire
*/ */
void deletePixel(Pixel_t t_self) { void deletePixel(Pixel *t_self) { free(t_self); }
free(t_self);
}
/** /**
* Constructeur dun conteneur dimage. Les dimensions sont initialisées à zéro * Constructeur dun conteneur dimage. Les dimensions sont initialisées à zéro
@ -47,9 +45,9 @@ void deletePixel(Pixel_t t_self) {
* *
* \return Pointeur vers une structure \ref Image initialisée. * \return Pointeur vers une structure \ref Image initialisée.
*/ */
Image_t newImage() { Image *newImage() {
Image_t res; Image *res;
res = (Image_t)malloc(sizeof(Image)); res = (Image *)malloc(sizeof(Image));
res->x = 0; res->x = 0;
res->y = 0; res->y = 0;
res->pixels = darrayNew(sizeof(Pixel)); res->pixels = darrayNew(sizeof(Pixel));
@ -64,9 +62,9 @@ Image_t newImage() {
* *
* \param[in] self Conteneur dimage à détruire * \param[in] self Conteneur dimage à détruire
*/ */
void deleteImage(Image_t t_self) { void deleteImage(Image *t_self) {
unsigned long i; unsigned long i;
for(i = 0; i < darraySize(t_self->pixels); ++i) { for (i = 0; i < darraySize(t_self->pixels); ++i) {
deletePixel(darrayGet(t_self->pixels, i)); deletePixel(darrayGet(t_self->pixels, i));
} }
darrayDelete(t_self->pixels); darrayDelete(t_self->pixels);
@ -83,9 +81,9 @@ void deleteImage(Image_t t_self) {
* \param[in] xg Abscisse extrême gauche du segment * \param[in] xg Abscisse extrême gauche du segment
* \return Pointeur sur un conteneur de segment * \return Pointeur sur un conteneur de segment
*/ */
Segment_t newSegment(uint16_t t_y, uint16_t t_xd, uint16_t t_xg) { Segment *newSegment(uint16_t t_y, uint16_t t_xd, uint16_t t_xg) {
Segment_t res; Segment *res;
res = (Segment_t)malloc(sizeof(Segment)); res = (Segment *)malloc(sizeof(Segment));
res->y = t_y; res->y = t_y;
res->xd = t_xd; res->xd = t_xd;
res->xg = t_xg; res->xg = t_xg;
@ -99,9 +97,7 @@ Segment_t newSegment(uint16_t t_y, uint16_t t_xd, uint16_t t_xg) {
* *
* \param[in] self Conteneur de segment à détruire * \param[in] self Conteneur de segment à détruire
*/ */
void deleteSegment(Segment_t t_self) { void deleteSegment(Segment *t_self) { free(t_self); }
free(t_self);
}
/** /**
* \brief function description * \brief function description
@ -115,9 +111,9 @@ void deleteSegment(Segment_t t_self) {
* \param[in] b Valeur bleue de la couleur de la zone * \param[in] b Valeur bleue de la couleur de la zone
* \return Pointeur vers la structure créée * \return Pointeur vers la structure créée
*/ */
Zone_t newZone(uint8_t t_r, uint8_t t_g, uint8_t t_b) { Zone *newZone(uint8_t t_r, uint8_t t_g, uint8_t t_b) {
Zone_t res; Zone *res;
res = (Zone_t)malloc(sizeof(Zone)); res = (Zone *)malloc(sizeof(Zone));
res->r = t_r; res->r = t_r;
res->g = t_g; res->g = t_g;
res->b = t_b; res->b = t_b;
@ -133,15 +129,15 @@ Zone_t newZone(uint8_t t_r, uint8_t t_g, uint8_t t_b) {
* *
* \param[in] self Conteneur de zone à détruire * \param[in] self Conteneur de zone à détruire
*/ */
void deleteZone(Zone_t t_self) { void deleteZone(Zone *t_self) {
unsigned long i; unsigned long i;
for(i = 0; i < darraySize(t_self->segments); ++i) { for (i = 0; i < darraySize(t_self->segments); ++i) {
deleteSegment(darrayGet(t_self->segments, i)); deleteSegment(darrayGet(t_self->segments, i));
} }
darrayDelete(t_self->segments); darrayDelete(t_self->segments);
free(t_self); free(t_self);
} }
Pixel_t imgAt(Image_t t_img, int t_x, int t_y) { Pixel *imgAt(Image *t_img, int t_x, int t_y) {
return (Pixel_t)darrayGet(t_img->pixels, t_x + t_y * t_img->x); return (Pixel *)darrayGet(t_img->pixels, t_x + t_y * t_img->x);
} }

View File

@ -38,16 +38,12 @@
struct Image; struct Image;
typedef struct Image Image; typedef struct Image Image;
typedef Image *Image_t;
struct Pixel; struct Pixel;
typedef struct Pixel Pixel; typedef struct Pixel Pixel;
typedef Pixel *Pixel_t;
struct Zone; struct Zone;
typedef struct Zone Zone; typedef struct Zone Zone;
typedef Zone *Zone_t;
struct Segment; struct Segment;
typedef struct Segment Segment; typedef struct Segment Segment;
typedef Segment *Segment_t;
/*****************************************************************************/ /*****************************************************************************/
/* STRUCT IMPLEMENTATION */ /* STRUCT IMPLEMENTATION */
@ -59,12 +55,12 @@ typedef Segment *Segment_t;
* Une image est une structure définie par ses dimensions verticales et * Une image est une structure définie par ses dimensions verticales et
* horizontales x et y, et contenant pour chacune des coordonnées possibles * horizontales x et y, et contenant pour chacune des coordonnées possibles
* selon ses dimensions un pixel de type \ref Pixel. Ces pixels sont stockés * selon ses dimensions un pixel de type \ref Pixel. Ces pixels sont stockés
* dans un tableau dynamique \ref darray_t. * dans un tableau dynamique \ref darray.
*/ */
struct Image { struct Image {
uint64_t x; /*!< Largeur de limage */ uint64_t x; /*!< Largeur de limage */
uint64_t y; /*!< Hauteur de limage */ uint64_t y; /*!< Hauteur de limage */
darray_t pixels; /*!< Vecteur à une dimention de pixels */ darray *pixels; /*!< Vecteur à une dimention de pixels */
}; };
/** /**
@ -91,7 +87,7 @@ struct Zone {
uint8_t r; /*!< Couleur rouge de la zone */ uint8_t r; /*!< Couleur rouge de la zone */
uint8_t g; /*!< Couleur verte de la zone */ uint8_t g; /*!< Couleur verte de la zone */
uint8_t b; /*!< Couleur bleue de la zone */ uint8_t b; /*!< Couleur bleue de la zone */
darray_t segments; /*!< Vecteur de segments */ darray *segments; /*!< Vecteur de segments */
}; };
/** /**
@ -112,22 +108,22 @@ struct Segment {
/*****************************************************************************/ /*****************************************************************************/
/// \brief Création dun nouveau pixel /// \brief Création dun nouveau pixel
Pixel_t newPixel(uint8_t t_r, uint8_t t_g, uint8_t t_b); Pixel *newPixel(uint8_t t_r, uint8_t t_g, uint8_t t_b);
/// \brief Destruction dun pointeur de pixel /// \brief Destruction dun pointeur de pixel
void deletePixel(Pixel_t t_self); void deletePixel(Pixel *t_self);
/// \brief Création dune nouvelle image /// \brief Création dune nouvelle image
Image_t newImage(); Image *newImage();
/// \brief Destructeur dune image /// \brief Destructeur dune image
void deleteImage(Image_t t_self); void deleteImage(Image *t_self);
/// \brief Constructeur dun segment de couleur unie /// \brief Constructeur dun segment de couleur unie
Segment_t newSegment(uint16_t t_y, uint16_t t_xd, uint16_t t_xg); Segment *newSegment(uint16_t t_y, uint16_t t_xd, uint16_t t_xg);
/// \brief Destructeur dun segment de couleur unie /// \brief Destructeur dun segment de couleur unie
void deleteSegment(Segment_t t_self); void deleteSegment(Segment *t_self);
/// \brief Constructeur de conteneur de zone /// \brief Constructeur de conteneur de zone
Zone_t newZone(uint8_t t_r, uint8_t t_g, uint8_t t_b); Zone* newZone(uint8_t t_r, uint8_t t_g, uint8_t t_b);
/// \brief Destructeur de conteneur de zone /// \brief Destructeur de conteneur de zone
void deleteZone(Zone_t t_self); void deleteZone(Zone *t_self);
/// \brief Renvoie un pixel aux coordonnées `(x, y)` dans une image /// \brief Renvoie un pixel aux coordonnées `(x, y)` dans une image
Pixel_t imgAt(Image_t t_img, int t_x, int t_y); Pixel *imgAt(Image *t_img, int t_x, int t_y);
#endif /* UTILITIES_H */ #endif /* UTILITIES_H */