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
Yann Caumartin 795ae4de46 Supprime que les pts non affichés de la prévisu
Lors d'une sauvegarde d'une configuration de points,
que les points non affichés pour cette prévisualisation
ne sont pas conservés.
2017-02-02 16:57:15 +01:00

124 lines
5.8 KiB
C

#pragma once
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <errno.h>
#include "../Headers/structures.h"
#include "verification.h"
#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);