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/conversion.h

92 lines
3.9 KiB
C

#pragma once
#include <stdlib.h>
#include "../Controleur/controleur.h"
/** @def DATESIZE
* @brief Taille de buffer utilisée lors de la conversion de date. */
#define DATESIZE 64
/**
* @brief Renvoie simplement un ration nécessaire aux calculs effectués sur la carte.
*
* @param echelle Échelle de la carte adoptée !
* @return Procédure.
*/
double getRatio(const double echelle);
/**
* @brief Convertit un point de longitude / latitude vers des coordonnées cartésiennes.
*
* @param destinationPix Pointeur sur le vecteur qui contiendra les coordonnées converties.
* @param sourceGPS Pointeur sur la structure qui contient les coordonnées à convertir.
* @param pointCentral Pointeur sur les coordonnées du point central de la carte.
* @param echelle Échelle de la carte adoptée !
* @return Procédure.
*/
void conversionCoordonneesPixels(sfVector2f *const destinationPix, const Coordonnees *const sourceGPS, const Coordonnees *const pointCentral, const double echelle);
/**
* @brief Convertit un point des coordonnées cartésiennes vers longitude / latitude.
*
* @param sourceGPS Pointeur sur la structure qui contiendra les coordonnées converties.
* @param destinationPix Pointeur sur le vecteur qui contient la position à convertir.
* @param pointCentral Pointeur sur les coordonnées du point central de la carte.
* @param echelle Échelle de la carte adoptée !
* @return Procédure.
*/
void conversionPixelsCoordonnees(Coordonnees *const destinationGPS, const sfVector2f *const sourcePix, const Coordonnees *const pointCentral, const double echelle);
/**
* @brief Convertit des points de longitude / latitude vers des coordonnées cartésiennes.
*
* @param tabInitial Tableau de pointeurs sur structure 'Point', à convertir.
* @param nbElements Nombre de points à convertir.
* @param pointCentral Coordonnées du points central de la carte affichee a l'ecran
* @param echelle Échelle de la carte adoptée !
* @return Un tableau de points convertis.
*/
void conversionPoints(Point *tabPoint, uint32_t nbElements, const Coordonnees *const pointCentral, const double echelle);
/**
* @brief Convertit les positions de rec en coordonnées latitude longitude.
*
* @param rec Le rectangle dont on convertit les champs positionHG/BD en coordonnées longitudinales.
* @param hg Coordonnée qui contiendra la latitude/longitude correspondant à la positionHG de rec.
* @param bd Coordonnée qui contiendra la latitude/longitude correspondant à la positionBD de rec.
* @param pointCentral Point central de la carte en latitude/longitude. Sert de repère pour la conversion.
* @echelle Échelle de la carte nécessaire pour la conversion.
* @return Procédure.
*/
void conversionRec(const Rectangle *const rec, Coordonnees *const hg, Coordonnees *const bd,const Coordonnees *const pointCentral, const double echelle);
/**
* @brief Convertit des points d'agglos de longitude / latitude vers des coordonnees cartesiennes.
*
* @param aggloInital Tableau des agglos a convertir.
* @param nbAgglos Nombre d'agglos a convertir.
* @param pointCentral Coordonnées du points central de la carte affichee a l'ecran
* @param echelle Échelle de la carte adoptée
*@return Un tableau d'agglos de coordonnees cartesiennes
*/
void conversionAgglos(Agglomerat *aggloInitial, uint32_t nbAgglos, const Coordonnees *const pointCentral, const double echelle);
/**
* @brief Convertit les dates codées (en nombre de secondes depuis 'Epoch') en chaînes de caractères lisibles.
*
* @param tabInitial Tableau de pointeurs sur structure 'Point', à convertir.
* @param nbElements Nombre de points à convertir.
* @return Un tableau de chaînes de caractères.
*/
char** conversionDates(Point *tabInitial, uint32_t nbElements);
/**
* @brief Supprime les accents d'une chaîne (allouée dynamiquement) en entrée.
*
* @param input Chaîne de caractère à convertir.
* @return Une chaîne de caractères sans accent.
*/
char* getRidOfAccents(char *const input);