surfaces-unies/src/utilities.c

96 lines
2.9 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* \file utilities.c
* \brief Implémentation des fonctions utilitaires
*
* Dans ce fichier sont implémentées les fonctions utilitaires pour la
* manipulation des structures de données déclarées dans le fichier header
* correspondant.
*/
#include "utilities.h"
/**
* Créé un nouveau pixel initialisé avec les arguments `r`, `g` et `b` et
* renvoie un pointeur vers ce pixel créé.
*
* \param[in] t_r Valeur rouge du pixel
* \param[in] t_g Valeur verte du pixel
* \param[in] t_b Valeur bleue du pixel
* \return Pointeur sur une structure de type \ref Pixel
*/
Pixel *newPixel(uint8_t t_r, uint8_t t_g, uint8_t t_b) {
Pixel *res;
res = (Pixel *)malloc(sizeof(Pixel));
res->red = t_r;
res->green = t_g;
res->blue = t_b;
res->visited = 0;
return res;
}
/**
* Constructeur dun conteneur dimage. Les dimensions sont initialisées à zéro
* (0) et son tableau de pixels a été créé et initialisé en tableau vide. Le
* constructeur renvoie un pointeur vers la nouvelle structure \ref Image.
*
* \return Pointeur vers une structure \ref Image initialisée.
*/
Image *newImage() {
Image *res;
res = (Image *)malloc(sizeof(Image));
res->sizeX = 0;
res->sizeY = 0;
res->pixels = darrayNew(sizeof(Pixel));
return res;
}
/**
* Destructeur dun conteneur dimage. Le destructeur appellera le destructeur
* du vecteur de pixels qui sera libéré de la mémoire, puis ultimement le
* destructeur libérera la structure \ref Image pointée par le pointeur passé
* en argument.
*
* \param[in] t_self Conteneur dimage à détruire
*/
void deleteImage(Image *t_self) {
darrayDelete(t_self->pixels);
free(t_self);
}
/**
* Constructeur dun conteneur de segment. Le constructeur va initialiser les
* valeurs quil contiendra avec les arguments qui lui seront passés lors de
* lappel de la fonction.
*
* \param[in] t_right_limit Abscisse extrême droite du segment
* \param[in] t_left_limit Abscisse extrême gauche du segment
* \return Pointeur sur un conteneur de segment
*/
Segment *newSegment(uint32_t t_right_limit, uint32_t t_left_limit) {
Segment *res = (Segment *)malloc(sizeof(Segment));
res->left_limit = t_left_limit;
res->right_limit = t_right_limit;
return res;
}
/**
* \brief function description
*
* Constructeur de conteneur de zone, initialise grâce aux arguments la couleur
* de la zone et initialise un tableau dynamique vide de \ref Segment. Renvoie
* un pointeur vers la structure nouvellement créée.
*
* \param[in] t_r Valeur rouge de la couleur de la zone
* \param[in] t_g Valeur verte de la couleur de la zone
* \param[in] t_b Valeur bleue de la couleur de la zone
* \return Pointeur vers la structure créée
*/
Zone *newZone(uint8_t t_r, uint8_t t_g, uint8_t t_b) {
Zone *res = (Zone *)malloc(sizeof(Zone));
res->red = t_r;
res->green = t_g;
res->blue = t_b;
res->segments = darrayNew(sizeof(Segment));
return res;
}