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/Controleur/controleAffichage.h

184 lines
15 KiB
C

#pragma once
#include "../Headers/structures.h"
#include "../Modele/verification.h"
#include "tinyFileDialogsCalls.h"
/**
* @brief Appelle une fonction d'affichage de logs en fonction du mode.
*
* @param window Fenêtre dans laquelle on affiche le sprite.
* @param renderTexture Pointeur sur la renderTexture à mettre dans le sprite.
* @param tabPoint Tableau des points à afficher avec le champ posConv correctement rempli.
* @param nbElements Nombre d'éléments de tabPoint.
* @param nbPointsAffiches Pointeur sur la variable qui stockera le nombre de points effectivement affichés.
* @param nbPointAgglosMin Nombre de points formant l'agglomérat le plus petit.
* @param tabPointeursCercle Tableau de pointeurs sur objets de type 'sfCircleShape', pour conserver leur adresse une fois affichés.
* @param agglos Tableau contenant les agglomérats.
* @param nbAgglos Le nombre d'agglomérats présents sur les logs.
* @param route tableau de structure Routes pour pouvoir les relier.
* @param nbRoutes Nombre de routes dans le tableau ci dessus.
* @param tabPointeursArray Tableau de pointeurs sur objet de type 'sfVertexArray', pour stocker les cercles des routes qu'on affiche en mémoire.
* @param tabPointeursCercleAgglos Tableau de pointeurs sur objets de type 'sfCircleShape', pour stocker les cercles des agglomérats en mémoire.
* @param nbAgglosAffiches Le nombre d'agglomérats effectivement affichés sur la carte.
* @param allPoint Booléen pour savoir si on affiche les points de type agglo ou non.
* @param allRoads Booléen pour savoir si on affiche et dessine les routes ou non.
* @param carte Carte que l'on affiche pour récuperer l'échelle
* @param mode Mode dans lequel on effectue l'affichage !
* @param menu Notre menu chéri !
* @return NULL s'il y a eu une erreur, un tableau contenant les adresses des points affichés sinon.
*/
Point** affichageLogs(sfRenderWindow *const window, sfRenderTexture *renderTexture, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], Agglomerat *agglos, uint32_t nbAgglos, Route *route, uint32_t nbRoutes, sfVertexArray *tabPointeursArray[nbRoutes], sfCircleShape *tabPointeursCercleAgglos[nbAgglos], uint32_t *const nbAgglosAffiches, bool allPoint, bool allRoads, const Carte *const carte, const Mode mode, Menu *const menu);
/**
* @brief Gère l'affichage d'un fichier de Logs en mode global(notamment les appels aux fonctions concernées, dans le but de décharger le Contrôleur)
*
* @param window Fenêtre dans laquelle on affiche le sprite.
* @param renderTexture Pointeur sur la renderTexture à mettre dans le sprite.
* @param tabPoint Tableau des points à afficher avec le champ posConv correctement rempli.
* @param nbElements Nombre d'éléments de tabPoint.
* @param nbPointsAffiches Pointeur sur la variable qui stockera le nombre de points effectivement affichés.
* @param nbPointAgglosMin Nombre de points formant l'agglomérat le plus petit.
* @param tabPointeursCercle Tableau de pointeurs sur objets de type 'sfCircleShape', pour conserver leur adresse une fois affichés.
* @param agglos Tableau contenant les agglomérats.
* @param nbAgglos Le nombre d'agglomérats présents sur les logs.
* @param route tableau de structure Routes pour pouvoir les relier.
* @param nbRoutes Nombre de routes dans le tableau ci dessus.
* @param tabPointeursArray Tableau de pointeurs sur objet de type 'sfVertexArray', pour stocker les cercles des routes qu'on affiche en mémoire.
* @param tabPointeursCercleAgglos Tableau de pointeurs sur objets de type 'sfCircleShape', pour stocker les cercles des agglomérats en mémoire.
* @param allPoint Booléen pour savoir si on affiche les points de type agglo ou non.
* @param allRoads Booléen pour savoir si on affiche et dessine les routes ou non.
* @param carte Carte que l'on affiche pour récuperer l'échelle
* @return NULL s'il y a eu une erreur, un tableau contenant les adresses des points affichés sinon.
*/
Point** affichageLogsGlobal(sfRenderWindow *const window, sfRenderTexture *renderTexture, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], Agglomerat *agglos, uint32_t nbAgglos, Route *route, uint32_t nbRoutes, sfVertexArray *tabPointeursArray[nbRoutes], sfCircleShape *tabPointeursCercleAgglos[nbAgglos], bool allPoint, bool allRoads, const Carte *const carte);
/**
* @brief Gère l'affichage d'un fichier de Logs en mode preview(notamment les appels aux fonctions concernées, dans le but de décharger le Contrôleur)
*
* @param window Fenêtre dans laquelle on affiche le sprite.
* @param renderTexture Pointeur sur la renderTexture à mettre dans le sprite.
* @param tabPoint Tableau des points à afficher avec le champ posConv correctement rempli.
* @param nbElements Nombre d'éléments de tabPoint.
* @param nbPointsAffiches Pointeur sur la variable qui stockera le nombre de points effectivement affichés.
* @param nbPointAgglosMin Nombre de points formant l'agglomérat le plus petit.
* @param tabPointeursCercle Tableau de pointeurs sur objets de type 'sfCircleShape', pour conserver leur adresse une fois affichés.
* @param agglos Tableau contenant les agglomérats.
* @param nbAgglos Le nombre d'agglomérats présents sur les logs.
* @param route tableau de structure Routes pour pouvoir les relier.
* @param nbRoutes Nombre de routes dans le tableau ci dessus.
* @param tabPointeursArray Tableau de pointeurs sur objet de type 'sfVertexArray', pour stocker les cercles des routes qu'on affiche en mémoire.
* @param tabPointeursCercleAgglos Tableau de pointeurs sur objets de type 'sfCircleShape', pour stocker les cercles des agglomérats en mémoire.
* @param allPoint Booléen pour savoir si on affiche les points de type agglo ou non.
* @param allRoads Booléen pour savoir si on affiche et dessine les routes ou non.
* @param carte Carte que l'on affiche pour récuperer l'échelle
* @return NULL s'il y a eu une erreur, un tableau contenant les adresses des points affichés sinon.
*/
Point** affichageLogsPreview(sfRenderWindow *const window, sfRenderTexture *renderTexture, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], Agglomerat *agglos, uint32_t nbAgglos, Route *route, uint32_t nbRoutes, sfVertexArray *tabPointeursArray[nbRoutes], sfCircleShape *tabPointeursCercleAgglos[nbAgglos], bool allPoint, bool allRoads, const Carte *const carte);
/**
* @brief Gère l'affichage d'un fichier de Logs en mode preview(notamment les appels aux fonctions concernées, dans le but de décharger le Contrôleur)
*
* @param window Fenêtre dans laquelle on affiche le sprite.
* @param renderTexture Pointeur sur la renderTexture à mettre dans le sprite.
* @param tabPoint Tableau des points à afficher avec le champ posConv correctement rempli.
* @param nbElements Nombre d'éléments de tabPoint.
* @param nbPointsAffiches Pointeur sur la variable qui stockera le nombre de points effectivement affichés.
* @param nbPointAgglosMin Nombre de points formant l'agglomérat le plus petit.
* @param tabPointeursCercle Tableau de pointeurs sur objets de type 'sfCircleShape', pour conserver leur adresse une fois affichés.
* @param agglos Tableau contenant les agglomérats.
* @param nbAgglos Le nombre d'agglomérats présents sur les logs.
* @param route tableau de structure Routes pour pouvoir les relier.
* @param nbRoutes Nombre de routes dans le tableau ci dessus.
* @param tabPointeursArray Tableau de pointeurs sur objet de type 'sfVertexArray', pour stocker les cercles des routes qu'on affiche en mémoire.
* @param tabPointeursCercleAgglos Tableau de pointeurs sur objets de type 'sfCircleShape', pour stocker les cercles des agglomérats en mémoire.
* @param allPoint Booléen pour savoir si on affiche les points de type agglo ou non.
* @param allRoads Booléen pour savoir si on affiche et dessine les routes ou non.
* @param carte Carte que l'on affiche pour récuperer l'échelle
* @return NULL s'il y a eu une erreur, un tableau contenant les adresses des points affichés sinon.
*/
Point** affichageLogsPreviewSugg(sfRenderWindow *const window, sfRenderTexture *renderTexture, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], Agglomerat *agglos, uint32_t nbAgglos, Route *route, uint32_t nbRoutes, sfVertexArray *tabPointeursArray[nbRoutes], sfCircleShape *tabPointeursCercleAgglos[nbAgglos], bool allPoint, bool allRoads, const Carte *const carte);
/**
* @brief Gère l'affichage d'un fichier de Logs en mode PBP_AUTOMATIC(notamment les appels aux fonctions concernées, dans le but de décharger le Contrôleur)
*
* @param window Fenêtre dans laquelle on affiche le sprite.
* @param renderTexture Pointeur sur la renderTexture à mettre dans le sprite.
* @param tabPoint Tableau des points à afficher avec le champ posConv correctement rempli.
* @param nbElements Nombre d'éléments de tabPoint.
* @param nbPointsAffiches Pointeur sur la variable qui stockera le nombre de points effectivement affichés.
* @param nbPointAgglosMin Nombre de points formant l'agglomérat le plus petit.
* @param tabPointeursCercle Tableau de pointeurs sur objets de type 'sfCircleShape', pour conserver leur adresse une fois affichés.
* @param agglos Tableau contenant les agglomérats.
* @param nbAgglos Le nombre d'agglomérats présents sur les logs.
* @param tabPointeursCercleAgglos Tableau de pointeurs sur objets de type 'sfCircleShape', pour stocker les cercles des agglomérats en mémoire.
* @param nbAgglosAffiches Le nombre d'agglomérats effectivement affichés sur la carte.
* @param carte Carte que l'on affiche pour récuperer l'échelle
* @param menu Notre menu chéri !
* @return NULL s'il y a eu une erreur, un tableau contenant les adresses des points affichés sinon.
*/
Point** affichageLogsPBPAuto(sfRenderWindow *const window, sfRenderTexture *renderTexture, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], Agglomerat *agglos, uint32_t nbAgglos, sfCircleShape *tabPointeursCercleAgglos[nbAgglos], uint32_t *const nbAgglosAffiches, const Carte *const carte, Menu *const menu);
/**
* @brief Gère l'affichage d'un fichier de Logs en mode PBP_AUTOMATIC(notamment les appels aux fonctions concernées, dans le but de décharger le Contrôleur)
*
* @param window Fenêtre dans laquelle on affiche le sprite.
* @param renderTexture Pointeur sur la renderTexture à mettre dans le sprite.
* @param tabPoint Tableau des points à afficher avec le champ posConv correctement rempli.
* @param nbElements Nombre d'éléments de tabPoint.
* @param nbPointsAffiches Pointeur sur la variable qui stockera le nombre de points effectivement affichés.
* @param nbPointAgglosMin Nombre de points formant l'agglomérat le plus petit.
* @param tabPointeursCercle Tableau de pointeurs sur objets de type 'sfCircleShape', pour conserver leur adresse une fois affichés.
* @param agglos Tableau contenant les agglomérats.
* @param nbAgglos Le nombre d'agglomérats présents sur les logs.
* @param tabPointeursCercleAgglos Tableau de pointeurs sur objets de type 'sfCircleShape', pour stocker les cercles des agglomérats en mémoire.
* @param nbAgglosAffiches Le nombre d'agglomérats effectivement affichés sur la carte.
* @param carte Carte que l'on affiche pour récuperer l'échelle
* @param menu Notre menu chéri !
* @return NULL s'il y a eu une erreur, un tableau contenant les adresses des points affichés sinon.
*/
Point** affichageLogsPBPManual(sfRenderWindow *const window, sfRenderTexture *renderTexture, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], Agglomerat *agglos, uint32_t nbAgglos, sfCircleShape *tabPointeursCercleAgglos[nbAgglos], uint32_t *const nbAgglosAffiches, const Carte *const carte, const Menu *const menu);
/**
* @brief Gère l'affichage de la date suivi de la sélection d'un point affiché (si clique).
*
* @param event Pointeur sur la variable d'évènements de la fonction appelante.
* @param renderTexture Pointeur sur pointeur de la texture de rendue de la fenêtre.
* @param renderSprite Pointeur sur pointeur du sprite affiché à l'écran.
* @param nbPointsAffiches Nombre de points effectivement affichés à l'écran.
* @param ptsAffiches Tableau de pointeur sur les poitns affichés
* @param tabPointeursCercles Tableau de pointeurs sur objets de type 'sfCircleShape', qui conserve les adresses des points affichés.
* @param tabDatesConverties Tableau des tring qui contient les dates de chaque point.
* @param font Pointeur sur la fonte à utiliser pour afficher les dates.
* @return Le numéro du point sur lequel le curseur se trouve.nbPointsAffiches s'il ne se trouve sur aucun point.
*/
uint32_t afficherDateSelectionnerPoint(sfEvent *event, sfRenderTexture *const renderTexture, sfSprite **renderSprite, const uint32_t nbPointsAffiches,Point ** ptsAffiches, sfCircleShape *tabPointeursCercles[nbPointsAffiches], Point * tabPoint, char **tabDatesConverties, const sfFont *font);
/**
* @brief Gère la sélection d'un agglomérat au clique (en remplissant un tableau au bon endroit).
*
* @param event Pointeur sur la variable d'évènements de la fonction appelante.
* @param nbAgglos Nombre d'agglomérats présents sur la carte.
* @param tabPointeursCercleAgglos Tableau de pointeurs sur objets de type 'sfCircleShape', qui conserve les adresses des agglomérats affichés.
* @param agglos Tableau contenant les agglomérats.
* @return Procédure.
*/
uint32_t selectionnerAgglomerats(sfEvent *event, const uint32_t nbAgglos, sfCircleShape *tabPointeursCerclesAgglos[nbAgglos],Agglomerat *agglos);
/**
* @brief Gère l'affichage des adresse d'agglomérats en mode multi-fichiers.
*
* @param event Pointeur sur la variable d'évènements de la fonction appelante.
* @param renderTexture Pointeur sur pointeur de la texture de rendue de la fenêtre.
* @param renderSprite Pointeur sur pointeur du sprite affiché à l'écran.
* @param tailleGlobalMultiFile Nombre d'agglos total.
* @param globalMultiFile Tableau des agglomérats !
* @param tabPointeursCerclesAgglos Tableau de pointeurs sur objets de type 'sfCircleShape', qui conserve les adresses des points affichés.
* @param font Pointeur sur la fonte à utiliser pour afficher les dates.
* @return Booléen qui indique si oui ou non une adresse a été affichée.
*/
bool afficherAdresseAgglomerats(const sfEvent *const event, sfRenderTexture *const renderTexture, sfSprite **renderSprite, const uint32_t tailleGlobalMultiFile, const AgglomeratGlobal globalMultiFile[tailleGlobalMultiFile], sfCircleShape **tabPointeursCerclesAgglos, const sfFont *const font);