reperage des Agglos avec la souris
This commit is contained in:
@ -80,6 +80,7 @@ ErrEnum controlePoints(sfRenderWindow *window, const char *cheminFichier, Mode m
|
||||
// De petits tableaux pour sauvegarder l'adresse de certains objets en mémoire
|
||||
sfCircleShape *tabPointeursCercle[nbElements];
|
||||
sfText *tabPointeursTexte[nbElements];
|
||||
sfCircleShape *tabPointeursCercleAgglos[nbAgglos];
|
||||
|
||||
|
||||
// On affiche la carte !
|
||||
@ -87,7 +88,7 @@ ErrEnum controlePoints(sfRenderWindow *window, const char *cheminFichier, Mode m
|
||||
if(mode == GLOBAL)
|
||||
{
|
||||
nbPointAgglosMin = getMinAgglo(agglos, nbAgglos);
|
||||
affichageLogs(window, renderTexture, renderSprite, tabPointConvertis, tabPoint, nbElements, &nbPointsAffiches,nbPointAgglosMin, tabPointeursCercle, aggloConverti, nbAgglos, mode);
|
||||
affichageLogs(window, renderTexture, renderSprite, tabPointConvertis, tabPoint, nbElements, &nbPointsAffiches, nbPointAgglosMin, tabPointeursCercle, aggloConverti, nbAgglos, tabPointeursCercleAgglos, mode);
|
||||
while(1)
|
||||
{
|
||||
sfTexture *originalTexture = sfTexture_copy(sfRenderTexture_getTexture(renderTexture));
|
||||
@ -111,9 +112,10 @@ ErrEnum controlePoints(sfRenderWindow *window, const char *cheminFichier, Mode m
|
||||
renderSprite = loadSpriteFromTexture((sfVector2f){0.0, 0.0}, originalTexture);
|
||||
sfRenderTexture_drawSprite(renderTexture, renderSprite, NULL);
|
||||
|
||||
afficherCoordonneesPoint(&event, renderTexture, &renderSprite, nbPointsAffiches, tabPointeursCercle, tabDateConverties, font);
|
||||
afficherCoordonneesPoint(window, &event, renderTexture, &renderSprite, nbPointsAffiches, tabPointeursCercle, tabDateConverties, font);
|
||||
|
||||
displayBackgroundSprite(window, renderSprite);
|
||||
selectionnerAgglomerats(window, &event,nbAgglos, tabPointeursCercleAgglos, aggloConverti);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -140,7 +142,7 @@ ErrEnum controlePoints(sfRenderWindow *window, const char *cheminFichier, Mode m
|
||||
}
|
||||
}
|
||||
|
||||
affichageLogs(window, renderTexture, renderSprite, tabPointConvertis, tabPoint, nbElements, &nbPointsAffiches, nbPointAgglosMin, tabPointeursCercle, aggloConverti, nbAgglos, mode);
|
||||
affichageLogs(window, renderTexture, renderSprite, tabPointConvertis, tabPoint, nbElements, &nbPointsAffiches, nbPointAgglosMin, tabPointeursCercle, aggloConverti, nbAgglos,tabPointeursCercleAgglos, mode);
|
||||
}
|
||||
|
||||
else
|
||||
@ -153,6 +155,7 @@ ErrEnum controlePoints(sfRenderWindow *window, const char *cheminFichier, Mode m
|
||||
{
|
||||
detruireCarte(&mapTexture, &mapSprite, MAPFILE);
|
||||
detruireCercles(nbElements, tabPointeursCercle);
|
||||
detruireCercles(nbAgglos, tabPointeursCercleAgglos);
|
||||
detruireTextes(nbElements, tabPointeursTexte);
|
||||
sfFont_destroy(font);
|
||||
free(aggloConverti);
|
||||
|
@ -28,7 +28,7 @@ void affichageMenuContinu(sfRenderWindow *const window, sfRenderTexture *renderT
|
||||
}
|
||||
|
||||
|
||||
void affichageLogs(sfRenderWindow *const window, sfRenderTexture *renderTexture, sfSprite *renderSprite, sfVector2f *tabPointConvertis, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], AgglomeratConverti *agglos, uint32_t nbAgglos, const Mode mode)
|
||||
void affichageLogs(sfRenderWindow *const window, sfRenderTexture *renderTexture, sfSprite *renderSprite, sfVector2f *tabPointConvertis, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], AgglomeratConverti *agglos, uint32_t nbAgglos, sfCircleShape *tabPointeursCercleAgglos[nbAgglos], const Mode mode)
|
||||
{
|
||||
sfEvent event;
|
||||
(void)agglos;
|
||||
@ -81,8 +81,7 @@ void affichageLogs(sfRenderWindow *const window, sfRenderTexture *renderTexture,
|
||||
{
|
||||
for (uint32_t i = 0; i < nbAgglos; i++)
|
||||
{
|
||||
afficherAgglo(renderTexture, agglos[i],&tabPointeursCercle[*nbPointsAffiches], nbPointAgglosMin);
|
||||
*nbPointsAffiches +=1;
|
||||
afficherAgglo(renderTexture, &agglos[i],&tabPointeursCercleAgglos[i], nbPointAgglosMin);
|
||||
}
|
||||
}
|
||||
sfRenderTexture_display(renderTexture);
|
||||
@ -107,20 +106,43 @@ void affichageLogs(sfRenderWindow *const window, sfRenderTexture *renderTexture,
|
||||
}
|
||||
|
||||
|
||||
void afficherCoordonneesPoint(const sfEvent *const event, sfRenderTexture *const renderTexture, sfSprite **renderSprite, const uint32_t nbPointsAffiches, sfCircleShape *tabPointeursCercles[nbPointsAffiches], char **tabDatesConverties, const sfFont *font)
|
||||
void afficherCoordonneesPoint(sfRenderWindow *const window, sfEvent *event, sfRenderTexture *const renderTexture, sfSprite **renderSprite, const uint32_t nbPointsAffiches, sfCircleShape *tabPointeursCercles[nbPointsAffiches], char **tabDatesConverties, const sfFont *font)
|
||||
{
|
||||
for(uint32_t i = 0; i < nbPointsAffiches; i++)
|
||||
{
|
||||
sfVector2f positionCercle = sfCircleShape_getPosition(tabPointeursCercles[i]);
|
||||
|
||||
if(mouseIsInCircle((sfVector2f){event->mouseMove.x, event->mouseMove.y}, (Cercle){positionCercle, CIRCLERADIUS}))
|
||||
if(mouseIsInCircle((sfVector2f){event->mouseMove.x - CIRCLERADIUS, event->mouseMove.y - CIRCLERADIUS}, (Cercle){positionCercle, CIRCLERADIUS}))
|
||||
{
|
||||
sfText *texte = creerTexte((sfVector2f){positionCercle.x + OFFSETFORDATE, positionCercle.y - OFFSETFORDATE}, tabDatesConverties[i], font, 20, sfBlack);
|
||||
sfRenderTexture_drawText(renderTexture, texte, NULL);
|
||||
*renderSprite = loadSpriteFromRenderTexture(renderTexture);
|
||||
sfText_destroy(texte);
|
||||
|
||||
sfRenderWindow_waitEvent(window, event);
|
||||
if((event->type == sfEvtMouseButtonPressed) && (sfMouse_isButtonPressed(sfMouseRight)))
|
||||
{
|
||||
printf("Point numéro : %d\n", i);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void selectionnerAgglomerats(sfRenderWindow *const window, sfEvent *event, const uint32_t nbAgglos, sfCircleShape *tabPointeursCerclesAgglos[nbAgglos],AgglomeratConverti *agglos)
|
||||
{
|
||||
for(uint32_t i = 0; i < nbAgglos; i++)
|
||||
{
|
||||
sfVector2f positionCercle = sfCircleShape_getPosition(tabPointeursCerclesAgglos[i]);
|
||||
|
||||
if(mouseIsInCircle((sfVector2f){event->mouseMove.x - agglos[i].tailleCercle, event->mouseMove.y - agglos[i].tailleCercle}, (Cercle){positionCercle,agglos[i].tailleCercle}))
|
||||
{
|
||||
sfRenderWindow_waitEvent(window, event);
|
||||
if((event->type == sfEvtMouseButtonPressed) && (sfMouse_isButtonPressed(sfMouseRight)))
|
||||
{
|
||||
printf("Point agglos numéro : %d\n", i);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@ -31,10 +31,11 @@ void affichageMenuContinu(sfRenderWindow *const window, sfRenderTexture *renderT
|
||||
* @param tabPointeursCercle Tableau de pointeurs sur objets de type 'sfCircleShape', pour conserver leur adresse une fois affichés.
|
||||
* @param agglos Tableau des agglos que l'on va afficher.
|
||||
* @param nbAgglos Taille de Tableau d'agglos.
|
||||
* @param tabPointeursCercleAgglos Tableau de pointeurs sur objet e type 'sfCircleShape', contenant les agglos, pour conserver leur adresse une fois affichés.
|
||||
* @param mode Mode dans lequel on effectue l'affichage !
|
||||
* @return Procédure.
|
||||
*/
|
||||
void affichageLogs(sfRenderWindow *const window, sfRenderTexture *renderTexture, sfSprite *renderSprite, sfVector2f *tabPointConvertis, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], AgglomeratConverti *agglos, uint32_t nbAgglos, const Mode mode);
|
||||
void affichageLogs(sfRenderWindow *const window, sfRenderTexture *renderTexture, sfSprite *renderSprite, sfVector2f *tabPointConvertis, Point *tabPoint, uint32_t nbElements, uint32_t *nbPointsAffiches, uint32_t nbPointAgglosMin, sfCircleShape *tabPointeursCercle[nbElements], AgglomeratConverti *agglos, uint32_t nbAgglos, sfCircleShape *tabPointeursCercleAgglos[nbAgglos], const Mode mode);
|
||||
|
||||
|
||||
/**
|
||||
@ -52,4 +53,8 @@ void affichageLogs(sfRenderWindow *const window, sfRenderTexture *renderTexture,
|
||||
* @param font Fonte à utiliser pour afficher les dates à côté des points !
|
||||
* @return Procédure.
|
||||
*/
|
||||
void afficherCoordonneesPoint(const sfEvent *const event, sfRenderTexture *const renderTexture, sfSprite **renderSprite, const uint32_t nbPointsAffiches, sfCircleShape *tabPointeursCercles[nbPointsAffiches], char **tabDatesConverties, const sfFont *font);
|
||||
void afficherCoordonneesPoint(sfRenderWindow *const window, sfEvent *event, sfRenderTexture *const renderTexture, sfSprite **renderSprite, const uint32_t nbPointsAffiches, sfCircleShape *tabPointeursCercles[nbPointsAffiches], char **tabDatesConverties, const sfFont *font);
|
||||
|
||||
|
||||
|
||||
void selectionnerAgglomerats(sfRenderWindow *const window, sfEvent *event, const uint32_t nbAgglos, sfCircleShape *tabPointeursCerclesAgglos[nbAgglos], AgglomeratConverti *agglos);
|
@ -37,6 +37,7 @@ struct Agglomerat
|
||||
uint32_t nbPts;
|
||||
Route **ptRoute;
|
||||
double rayon;
|
||||
double tailleCercle;
|
||||
};
|
||||
|
||||
struct AgglomeratConverti
|
||||
@ -46,6 +47,7 @@ struct AgglomeratConverti
|
||||
uint32_t nbPts;
|
||||
Route **ptRoute;
|
||||
double rayon;
|
||||
double tailleCercle;
|
||||
};
|
||||
|
||||
|
||||
|
@ -49,34 +49,39 @@ void afficherPoint(sfRenderTexture *const renderTexture, sfVector2f points, sfCi
|
||||
*ptrCercle = cercle;
|
||||
}*/
|
||||
|
||||
void afficherAgglo(sfRenderTexture *const renderTexture, AgglomeratConverti agglos, sfCircleShape **ptrCercle, uint32_t nbPointAgglosMin)
|
||||
void afficherAgglo(sfRenderTexture *const renderTexture, AgglomeratConverti *agglos, sfCircleShape **ptrCercle, uint32_t nbPointAgglosMin)
|
||||
{
|
||||
sfCircleShape *cercle = NULL;
|
||||
if (agglos.nbPts <= nbPointAgglosMin * 1.5)
|
||||
if (agglos->nbPts <= nbPointAgglosMin * 1.5)
|
||||
{
|
||||
cercle = creerCercle((sfVector2f){agglos.moy.x, agglos.moy.y}, CIRCLERADIUSAGGLO, sfBlue);
|
||||
cercle = creerCercle((sfVector2f){agglos->moy.x, agglos->moy.y}, CIRCLERADIUSAGGLO, sfBlue);
|
||||
agglos->tailleCercle = CIRCLERADIUSAGGLO;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (agglos.nbPts <= nbPointAgglosMin * 2)
|
||||
if (agglos->nbPts <= nbPointAgglosMin * 2)
|
||||
{
|
||||
cercle = creerCercle((sfVector2f){agglos.moy.x, agglos.moy.y}, CIRCLERADIUSAGGLO * 1.5, sfBlue);
|
||||
cercle = creerCercle((sfVector2f){agglos->moy.x, agglos->moy.y}, CIRCLERADIUSAGGLO * 1.5, sfBlue);
|
||||
agglos->tailleCercle = CIRCLERADIUSAGGLO * 1.5;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (agglos.nbPts <= nbPointAgglosMin * 2.5)
|
||||
if (agglos->nbPts <= nbPointAgglosMin * 2.5)
|
||||
{
|
||||
cercle = creerCercle((sfVector2f){agglos.moy.x, agglos.moy.y}, CIRCLERADIUSAGGLO * 2, sfBlue);
|
||||
cercle = creerCercle((sfVector2f){agglos->moy.x, agglos->moy.y}, CIRCLERADIUSAGGLO * 2, sfBlue);
|
||||
agglos->tailleCercle = CIRCLERADIUSAGGLO * 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (agglos.nbPts <= nbPointAgglosMin * 3)
|
||||
if (agglos->nbPts <= nbPointAgglosMin * 3)
|
||||
{
|
||||
cercle = creerCercle((sfVector2f){agglos.moy.x, agglos.moy.y}, CIRCLERADIUSAGGLO * 2.5, sfBlue);
|
||||
cercle = creerCercle((sfVector2f){agglos->moy.x, agglos->moy.y}, CIRCLERADIUSAGGLO * 2.5, sfBlue);
|
||||
agglos->tailleCercle = CIRCLERADIUSAGGLO * 2.5;
|
||||
}
|
||||
else
|
||||
{
|
||||
cercle = creerCercle((sfVector2f){agglos.moy.x, agglos.moy.y}, CIRCLERADIUSAGGLO * 3, sfBlue);
|
||||
cercle = creerCercle((sfVector2f){agglos->moy.x, agglos->moy.y}, CIRCLERADIUSAGGLO * 3, sfBlue);
|
||||
agglos->tailleCercle = CIRCLERADIUSAGGLO * 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ void afficherPoint(sfRenderTexture *const renderTexture, sfVector2f points, sfCi
|
||||
* @param nbPointAggloMin Nombre de point minimal dans une agglo
|
||||
* @return Procédure.
|
||||
*/
|
||||
void afficherAgglo(sfRenderTexture *const renderTexture, AgglomeratConverti agglos, sfCircleShape **ptrCercle, uint32_t nbPointAgglosMin);
|
||||
void afficherAgglo(sfRenderTexture *const renderTexture, AgglomeratConverti *agglos, sfCircleShape **ptrCercle, uint32_t nbPointAgglosMin);
|
||||
|
||||
/**
|
||||
* @brief Affiche une carte à partir d'une image et charge les pointeurs ad hoc !
|
||||
|
Reference in New Issue
Block a user