This repository has been archived on 2023-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
GINPA/Modele/suppression.h

127 lines
5.9 KiB
C

#pragma once
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <errno.h>
#include "../Headers/structures.h"
#include "verification.h"
/** @def SIZE
* @brief Taille de buffer utilisée lors de la sauvegarde points. */
#define SIZE 100
/**
* @brief Crée un fichier sans les points ayant le champ aSupprimer.
*
* @param tabPoint Tableau contenant tous les points.
* @param nbPoints Taille du tableau tabPoint.
* @param tabAgglo Tableau contenant tous les agglomérats existants.
* @param tailleA Taille du tableau tabAgglo.
* @param dest Chaîne de caractères contenant le nom du nouveau fichier créé.
* @param mode Mode dans lequel l'utilisateur est. Permet de savoir si les points
* suggérés à la suppression doivent être supprimer.
*
* @return Retourne SUCCESS (défini dans Headers/structures.h) en cas de succès, un code d'erreur sinon(défini dans Headers/structures.h).
* */
ErrEnum supprimePoints(const Point tabPoint[],uint32_t nbPoints, const Agglomerat tabAgglo[],uint32_t nbAgglos, const char *const dest, const Mode mode);
/**
* @brief Ajoute/enlève le point dans les points à supprimer en mettant le champ aSupprimer de pt à
* la valeur du paramètre aSupprimer.
*
* @param pt Pointeur sur le point qu'on rajoute/enlève dans les points à supprimer.
* @param aSupprimer Si le paramètre est à true, le point est ajouté dans les points à supprimer.
* S'il est à false, le point est enlevé des points à supprimer.
*
* @return Procédure
*/
void setASupprimerPoint(Point * pt, bool aSupprimer);
/**
* @brief Ajoute/enlève l'agglomérat dans les agglomérats à supprimer en mettant le champ aSupprimer
* de ag à la valeur du paramètre aSupprimer.
*
* @param pt Pointeur sur l'agglomérat qu'on rajoute/enlève dans les agglomérats à supprimer.
* @param aSupprimer Si le paramètre est à true, l'agglomérat est ajouté dans les agglomérats
* à supprimer. S'il est à false, l'agglomérat est enlevé des points à supprimer.
*
* @return Procédure
*/
void setASupprimerAgglo(Agglomerat * ag, bool aSupprimer);
/**
* @brief Ajoute/enlève tous les points contenus dans un cercle comme point à supprimer en mettant
* leurs champs aSupprimer à la valeur du paramètre aSupprimer.
*
* @param cercle Cercle contenant les points à enlever/rajouter des points à supprimer.
* @param tabPointeursCercles Tableau de pointeurs sur les cercles des points affichés. Sert
* à calculer si un point est dans le cercle où non.
* @param nbPointsAffiches Nombre de points affichés sur la fenêtre.
* @param ptsAffiches Tableau de pointeurs sur les points affichés.
* @param aSupprimer Si le paramètre est à true, les points dans le cercle sont ajoutés dans les
* points à supprimer. Si le paramètre est à false, les points dans le cercle sont enlevés des points
* à supprimer.
*
* @return Procédure.
*/
void setASupprimerPointsInCercle(Cercle cercle, sfCircleShape ** tabPointeursCercles, uint32_t nbPointsAffiches, Point ** ptsAffiches, bool aSupprimer);
/**
* @brief Ajoute/enlève tous les agglomérats contenus dans un cercle comme agglomérat à supprimer en
* mettant leurs champs aSupprimer à la valeur du paramètre aSupprimer.
*
* @param cercle Cercle contenant les agglomérats à enlever/rajouter des agglomérats à supprimer.
* @param tabPointeursCerclesAgglos Tableau de pointeurs sur les cercles des agglomérats. Sert
* à calculer si un agglomérat est dans le cercle où non.
* @param agglos Tableau contenant tous les agglomérats.
* @param nbAgglos Nombre d'agglomérats au total (même ceux non affichés).
* @param aSupprimer Si le paramètre est à true, les agglomérats dans le cercle sont ajoutés dans les
* agglomérats à supprimer. Si le paramètre est à false, les agglomérats dans le cercle sont enlevés
* des points à supprimer.
*
* @return Procédure.
*/
void setASupprimerAgglosInCercle(Cercle cercle, sfCircleShape ** tabPointeursCercleAgglos, Agglomerat * agglos, uint32_t nbAgglos, bool aSupprimer);
/**
* @brief Ajoute/enlève tous les points contenus dans un rectangle comme point à supprimer
* en mettant leurs champs aSupprimer à la valeur du paramètre aSupprimer.
*
* @param rec Rectangle contenant les points à enlever/ajouter des points à supprimer.
* @param tabPointeursCercles Tableau de pointeurs sur les cercles des points affichés. Sert
* à calculer si un point est dans le rectangle ou non.
* @param nbPointsAffiches Nombre de points affichés sur la fenêtre.
* @param ptsAffiches Tableau de pointeurs sur les points affichés.
* @param aSupprimer Si le paramètre est à true, les points dans le rectangle sont ajoutés dans
* les points à supprimer. Si le paramètre est à false, les points dans le rectangle sont
* enlevés des points à supprimer.
*
* @return Procédure.
*/
void setASupprimerPointsInRec(Rectangle rec, sfCircleShape ** tabPointeursCercles, uint32_t nbPointsAffiches, Point ** ptsAffiches, bool aSupprimer);
/**
* @brief Ajoute/enlève tous les agglomérats contenus dans un rectangle comme agglomérat à supprimer
* en mettant leurs champs aSupprimer à la valeur du paramètre aSupprimer.
*
* @param rec Rectangle contenant les agglomérats à enlever/ajouter des agglomérats à supprimer.
* @param tabPointeursCerclesAgglos Tableau de pointeurs sur les cercles des agglomérats. Sert
* à calculer si un agglomérat est dans le rectangle ou non.
* @param agglos Tableau contenant tous les agglomérats.
* @param nbAgglos Nombre d'agglomérats au total (même ceux non affichés).
* @param aSupprimer Si le paramètre est à true, les agglomérats dans le rectangle sont ajoutés dans
* les agglomérats à supprimer. Si le paramètre est à false, les agglomérats dans le rectangle sont
* enlevés des agglomérats à supprimer.
*
* @return Procédure.
*/
void setASupprimerAgglosInRec(Rectangle rec, sfCircleShape ** tabPointeursCercleAgglos, Agglomerat * agglos, uint32_t nbAgglos, bool aSupprimer);