Nouvelle structure de fichiers sources + Refonte de la boucle graphique + Corrections doc' & syntaxe
This commit is contained in:
@ -13,9 +13,9 @@ endif
|
||||
|
||||
.SILENT:
|
||||
|
||||
all: $(OBJ)/graphique.o
|
||||
all: $(OBJ)/graphique.o $(OBJ)/creation.o $(OBJ)/chargement.o $(OBJ)/selection.o
|
||||
|
||||
$(OBJ)/%.o:%.c %.h
|
||||
$(OBJ)/%.o: %.c %.h
|
||||
$(CC) -c -o $@ $< $(CFLAGS) $(GFLAGS)
|
||||
|
||||
debug:
|
||||
|
65
Graphique/chargement.c
Normal file
65
Graphique/chargement.c
Normal file
@ -0,0 +1,65 @@
|
||||
#include "chargement.h"
|
||||
|
||||
|
||||
sfFont* loadFont(const char *const cheminFichier)
|
||||
{
|
||||
sfFont *font = sfFont_createFromFile(cheminFichier);
|
||||
|
||||
if(font == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors du chargement de la fonte \"%s\".\n", cheminFichier);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return font;
|
||||
}
|
||||
|
||||
|
||||
sfSprite* loadSpriteFromTexture(const sfVector2f position, const sfTexture *texture)
|
||||
{
|
||||
sfSprite *sprite = sfSprite_create();
|
||||
|
||||
if(sprite == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création d'un sprite.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfSprite_setTexture(sprite, texture, sfTrue);
|
||||
sfSprite_setPosition(sprite, position);
|
||||
|
||||
return sprite;
|
||||
}
|
||||
|
||||
|
||||
sfSprite* loadSpriteFromRenderTexture(const sfRenderTexture *const renderTexture)
|
||||
{
|
||||
sfSprite *renderSprite = sfSprite_create();
|
||||
|
||||
if(renderSprite == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création d'un sprite.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfSprite_setTexture(renderSprite, sfRenderTexture_getTexture(renderTexture), sfTrue);
|
||||
|
||||
sfVector2f positionSpriteBuffer = {0.f, 0.f};
|
||||
sfSprite_setPosition(renderSprite, positionSpriteBuffer);
|
||||
|
||||
return renderSprite;
|
||||
}
|
||||
|
||||
|
||||
sfTexture* loadTextureFromFile(const char *const cheminFichier)
|
||||
{
|
||||
sfTexture *texture = sfTexture_createFromFile(cheminFichier, NULL);
|
||||
|
||||
if(texture == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création d'une texture à partir du fichier \"%s\".\n", cheminFichier);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return texture;
|
||||
}
|
36
Graphique/chargement.h
Normal file
36
Graphique/chargement.h
Normal file
@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include "graphique.h"
|
||||
|
||||
|
||||
/**
|
||||
* @brief Cette fonction se chargera de monter en mémoire une fonte dont le chemin d'accès sera passer en paramètre
|
||||
*
|
||||
* @param cheminFichier Chemin relatif du fichier de fonte à charger.
|
||||
* @return Pointeur sur la fonte fraîchement chargée.
|
||||
*/
|
||||
sfFont* loadFont(const char *const);
|
||||
|
||||
/**
|
||||
* @brief Crée un sprite, le charge avec une texture, et le renvoit
|
||||
*
|
||||
* @param texture Pointeur sur la texture à charger sur un sprite.
|
||||
* @return Pointeur sur le sprite fraîchement créé.
|
||||
*/
|
||||
sfSprite* loadSpriteFromTexture(const sfVector2f, const sfTexture*);
|
||||
|
||||
/**
|
||||
* @brief Crée un sprite, le charge avec une texture de rendu, et le renvoit
|
||||
*
|
||||
* @param renderTexture Pointeur sur la texture de rendu à charger sur un sprite.
|
||||
* @return Pointeur sur le sprite fraîchement créé.
|
||||
*/
|
||||
sfSprite* loadSpriteFromRenderTexture(const sfRenderTexture *const);
|
||||
|
||||
/**
|
||||
* @brief Crée une texture, à partir d'une image, et la renvoit
|
||||
*
|
||||
* @param cheminFichier Chemin relatif du fichier image à charger.
|
||||
* @return Pointeur sur la texture fraîchement créée.
|
||||
*/
|
||||
sfTexture* loadTextureFromFile(const char *const);
|
140
Graphique/creation.c
Normal file
140
Graphique/creation.c
Normal file
@ -0,0 +1,140 @@
|
||||
#include "creation.h"
|
||||
|
||||
|
||||
sfRenderWindow* initialisationFenetre(void)
|
||||
{
|
||||
sfVideoMode mode = {WIDTH, HEIGHT, BITSPERPIXEL};
|
||||
sfRenderWindow *window = sfRenderWindow_create(mode, WINDOWNAME, sfDefaultStyle, NULL);
|
||||
|
||||
if(window == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création de la fenêtre.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* La partie ci-dessous ne fonctionne pas sous Linux apparemment... Mais l'idée y est ! */
|
||||
sfImage *image = sfImage_createFromFile(WINDOWICONPATH);
|
||||
|
||||
if(image == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de l'ouverture du fichier icône: \"%s\".\n", WINDOWICONPATH);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfRenderWindow_setIcon(window, sfImage_getSize(image).x, sfImage_getSize(image).y, sfImage_getPixelsPtr(image));
|
||||
sfImage_destroy(image);
|
||||
/* ____________________________________________________________________________________ */
|
||||
|
||||
//Le programme tournera avec un nombre de FPS limité, afin de contenir l'utilisation CPU...
|
||||
sfWindow_setFramerateLimit((sfWindow*)window, FRAMERATELIMITSLEEP);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
sfRenderTexture* initialisationTextureBuffer(void)
|
||||
{
|
||||
sfRenderTexture *renderTexture = sfRenderTexture_create(WIDTH, HEIGHT, sfFalse);
|
||||
|
||||
if(renderTexture == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création d'une nouvelle texture de rendu..\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return renderTexture;
|
||||
}
|
||||
|
||||
|
||||
sfCircleShape* creerCercle(const sfVector2f position, const float rayon, const sfColor couleur)
|
||||
{
|
||||
sfCircleShape *shape = sfCircleShape_create();
|
||||
|
||||
if(shape == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création du cercle de centre (%f, %f) et de rayon %f.\n", position.x, position.y, rayon);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfVector2f positionCercle = {position.x - rayon, position.y - rayon};
|
||||
|
||||
sfCircleShape_setPosition(shape, positionCercle);
|
||||
sfCircleShape_setRadius(shape, rayon);
|
||||
sfCircleShape_setFillColor(shape, couleur);
|
||||
|
||||
return shape;
|
||||
}
|
||||
|
||||
|
||||
sfConvexShape* creerRectangle(const sfVector2f positionHG, const sfVector2f positionBD, const sfColor couleur)
|
||||
{
|
||||
sfConvexShape *shape = sfConvexShape_create();
|
||||
|
||||
if(shape == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création du rectangle de point HAUT GAUCHE (%f, %f), et de point BAS DROIT (%f,%f).\n", positionHG.x, positionHG.y, positionBD.x, positionBD.y);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfConvexShape_setPointCount(shape, 4);
|
||||
|
||||
sfVector2f positionA = {positionHG.x, positionHG.y};
|
||||
sfVector2f positionB = {positionHG.x + positionBD.x, positionHG.y};
|
||||
sfVector2f positionC = {positionHG.x + positionBD.x, positionHG.y + positionBD.y};
|
||||
sfVector2f positionD = {positionHG.x, positionHG.y + positionBD.y };
|
||||
|
||||
sfConvexShape_setPoint(shape, 0, positionA);
|
||||
sfConvexShape_setPoint(shape, 1, positionB);
|
||||
sfConvexShape_setPoint(shape, 2, positionC);
|
||||
sfConvexShape_setPoint(shape, 3, positionD);
|
||||
sfConvexShape_setFillColor(shape, couleur);
|
||||
|
||||
return shape;
|
||||
}
|
||||
|
||||
|
||||
sfConvexShape* creerDroite(const sfVector2f position1, const sfVector2f position2, const sfColor couleur)
|
||||
{
|
||||
sfConvexShape *shape = sfConvexShape_create();
|
||||
|
||||
if(shape == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création de la droite de (%f, %f) à (%f, %f)\n", position1.x, position1.y, position2.x, position2.y);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfConvexShape_setPointCount(shape, 4);
|
||||
|
||||
sfVector2f positionA = {position1.x + OFFSETFORLINES, position1.y};
|
||||
sfVector2f positionB = {position1.x, position1.y + OFFSETFORLINES};
|
||||
sfVector2f positionC = {position2.x + OFFSETFORLINES, position2.y};
|
||||
sfVector2f positionD = {position2.x, position2.y + OFFSETFORLINES};
|
||||
|
||||
sfConvexShape_setPoint(shape, 0, positionA);
|
||||
sfConvexShape_setPoint(shape, 1, positionB);
|
||||
sfConvexShape_setPoint(shape, 3, positionC);
|
||||
sfConvexShape_setPoint(shape, 2, positionD);
|
||||
sfConvexShape_setFillColor(shape, couleur);
|
||||
|
||||
return shape;
|
||||
}
|
||||
|
||||
|
||||
sfText* creerTexte(const sfVector2f position, const char *const chaine, const sfFont *const font, const uint16_t taille, const sfColor couleur)
|
||||
{
|
||||
sfText *text = sfText_create();
|
||||
|
||||
if(text == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création du texte: \"%s\".\n", chaine);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfText_setPosition(text, position);
|
||||
sfText_setString(text, chaine);
|
||||
sfText_setFont(text, font);
|
||||
sfText_setCharacterSize(text, taille);
|
||||
sfText_setColor(text, couleur);
|
||||
|
||||
return text;
|
||||
}
|
82
Graphique/creation.h
Normal file
82
Graphique/creation.h
Normal file
@ -0,0 +1,82 @@
|
||||
#pragma once
|
||||
|
||||
#include "graphique.h"
|
||||
|
||||
#define WIDTH 1024
|
||||
#define HEIGHT 768
|
||||
#define BITSPERPIXEL 32
|
||||
|
||||
#define WINDOWNAME "GINPA Is Not a Position Analyst"
|
||||
|
||||
#define PROJECTIMAGEPATH "Graphique/Ressources/GINPA.jpg"
|
||||
|
||||
#define OFFSETFORLINES 1
|
||||
|
||||
|
||||
/**
|
||||
* @brief Crée une fenêtre, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction initialise une fenêtre en accord avec les variables globales définies dans 'graphique.h'.
|
||||
*
|
||||
* @return Pointeur sur la fenêtre fraîchement créée.
|
||||
*/
|
||||
sfRenderWindow* initialisationFenetre(void);
|
||||
|
||||
/**
|
||||
* @brief Crée une texture de rendu, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction initialise une texture en accord avec les variables globales définies dans 'graphique.h'.
|
||||
*
|
||||
* @return Pointeur sur la texture fraîchement créée.
|
||||
*/
|
||||
sfRenderTexture* initialisationTextureBuffer(void);
|
||||
|
||||
/**
|
||||
* @brief Crée un cercle, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction crée un cercle en accord avec les variables passées en paramètres, à savoir:
|
||||
*
|
||||
* @param position Vecteur contenant les positions 'x' et 'y' du cercle à créer.
|
||||
* @param rayon Rayon du cercle à créer.
|
||||
* @param couleur Couleur intérieure du cercle à créer.
|
||||
* @return Pointeur sur le cercle fraîchement créé.
|
||||
*/
|
||||
sfCircleShape* creerCercle(const sfVector2f, const float, const sfColor);
|
||||
|
||||
/**
|
||||
*@brief Crée un rectangle, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction crée un rectangle en accord avec les variables passées en paramètres, à savoir:
|
||||
*
|
||||
* @param positionHG Vecteur contenant les coordonées du coin HAUT GAUCHE du rectangle à créer.
|
||||
* @param positionBD Vecteur contenant les coordonées du coin BAS DROIT du rectangle à créer.
|
||||
* @param couleur Couleur intérieure du rectangle à créer.
|
||||
* @return Pointeur sur le rectangle fraîchement créé.
|
||||
*/
|
||||
sfConvexShape* creerRectangle(const sfVector2f, const sfVector2f, const sfColor);
|
||||
|
||||
/**
|
||||
*@brief Crée une droite, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction crée une droite entre 2 points donnés en paramètre, à l'aide de:
|
||||
*
|
||||
* @param position1 Vecteur contenant les coordonées du premier point.
|
||||
* @param position2 Vecteur contenant les coordonées du second point.
|
||||
* @param couleur Couleur de la droite à créer.
|
||||
* @return Pointeur sur la droite fraîchement créée.
|
||||
*/
|
||||
sfConvexShape* creerDroite(const sfVector2f, const sfVector2f, const sfColor);
|
||||
|
||||
/**
|
||||
* @brief Crée un text, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction crée un text en accord avec les variables passées en paramètres, à savoir:
|
||||
*
|
||||
* @param position Vecteur contenant les positions 'x' et 'y' du texte à créer.
|
||||
* @param chaine Le texte à afficher.
|
||||
* @param font La fonte à appliquer sur ce texte.
|
||||
* @param taille La taille du texte à créer.
|
||||
* @param couleur La couleur du texte à créer.
|
||||
* @return Pointeur sur le texte fraîchement créé.
|
||||
*/
|
||||
sfText* creerTexte(const sfVector2f, const char *const, const sfFont *const, const uint16_t, const sfColor);
|
@ -1,299 +1,13 @@
|
||||
#include "graphique.h"
|
||||
|
||||
|
||||
sfRenderWindow* initialisationFenetre(void)
|
||||
void boucleGraphique(void)
|
||||
{
|
||||
sfVideoMode mode = {WIDTH, HEIGHT, BITSPERPIXEL};
|
||||
sfRenderWindow *window = sfRenderWindow_create(mode, WINDOWNAME, sfDefaultStyle, NULL);
|
||||
sfRenderWindow *window = initialisationFenetre();
|
||||
|
||||
if(window == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création de la fenêtre.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
/* Définition de quelques formes de base, et structure générale:
|
||||
--> Clear > Draw > Display */
|
||||
|
||||
/* La partie ci-dessous ne fonctionne pas sous Linux apparemment... Mais l'idée y est ! */
|
||||
sfImage *image = sfImage_createFromFile(WINDOWICONPATH);
|
||||
|
||||
if(image == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de l'ouverture du fichier icône: \"%s\".\n", WINDOWICONPATH);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfRenderWindow_setIcon(window, sfImage_getSize(image).x, sfImage_getSize(image).y, sfImage_getPixelsPtr(image));
|
||||
sfImage_destroy(image);
|
||||
/* ____________________________________________________________________________________ */
|
||||
|
||||
sfWindow_setFramerateLimit((sfWindow*)window, FRAMERATELIMITSLEEP);
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
sfRenderTexture* initialisationTextureBuffer(void)
|
||||
{
|
||||
sfRenderTexture *renderTexture = sfRenderTexture_create(WIDTH, HEIGHT, sfFalse);
|
||||
|
||||
if(renderTexture == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création d'une nouvelle texture de rendu..\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return renderTexture;
|
||||
}
|
||||
|
||||
|
||||
sfCircleShape* creerCercle(const sfVector2f position, const float rayon, const sfColor couleur)
|
||||
{
|
||||
sfCircleShape *shape = sfCircleShape_create();
|
||||
|
||||
if(shape == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création du cercle de centre (%f, %f) et de rayon %f.\n", position.x, position.y, rayon);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfVector2f positionCercle = {position.x - rayon, position.y - rayon};
|
||||
|
||||
sfCircleShape_setPosition(shape, positionCercle);
|
||||
sfCircleShape_setRadius(shape, rayon);
|
||||
sfCircleShape_setFillColor(shape, couleur);
|
||||
|
||||
return shape;
|
||||
}
|
||||
|
||||
|
||||
sfConvexShape* creerRectangle(const sfVector2f positionHG, const sfVector2f positionBD, const sfColor couleur)
|
||||
{
|
||||
sfConvexShape *shape= sfConvexShape_create();
|
||||
|
||||
if(shape == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création du rectangle de point HAUT GAUCHE (%f, %f), et de point BAS DROIT(%f,%f).\n", positionHG.x, positionHG.y, positionBD.x, positionBD.y);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
sfConvexShape_setPointCount(shape, 4);
|
||||
|
||||
sfVector2f positionA = {positionHG.x, positionHG.y};
|
||||
sfVector2f positionB = {positionHG.x + positionBD.x, positionHG.y};
|
||||
sfVector2f positionC = {positionHG.x + positionBD.x, positionHG.y + positionBD.y};
|
||||
sfVector2f positionD = {positionHG.x, positionHG.y +positionBD.y };
|
||||
|
||||
sfConvexShape_setPoint(shape, 0, positionA);
|
||||
sfConvexShape_setPoint(shape, 1, positionB);
|
||||
sfConvexShape_setPoint(shape, 2, positionC);
|
||||
sfConvexShape_setPoint(shape, 3, positionD);
|
||||
sfConvexShape_setFillColor(shape, couleur);
|
||||
|
||||
return shape;
|
||||
}
|
||||
|
||||
|
||||
sfConvexShape* creerDroite(const sfVector2f position1, const sfVector2f position2, const sfColor couleur)
|
||||
{
|
||||
sfConvexShape *shape = sfConvexShape_create();
|
||||
|
||||
if(shape == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création de la droite de (%f, %f) à (%f, %f)\n", position1.x, position1.y, position2.x, position2.y);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfConvexShape_setPointCount(shape, 4);
|
||||
|
||||
sfVector2f positionA = {position1.x + OFFSETFORLINES, position1.y};
|
||||
sfVector2f positionB = {position1.x, position1.y + OFFSETFORLINES};
|
||||
sfVector2f positionC = {position2.x + OFFSETFORLINES, position2.y};
|
||||
sfVector2f positionD = {position2.x, position2.y + OFFSETFORLINES};
|
||||
|
||||
sfConvexShape_setPoint(shape, 0, positionA);
|
||||
sfConvexShape_setPoint(shape, 1, positionB);
|
||||
sfConvexShape_setPoint(shape, 3, positionC);
|
||||
sfConvexShape_setPoint(shape, 2, positionD);
|
||||
sfConvexShape_setFillColor(shape, couleur);
|
||||
|
||||
return shape;
|
||||
|
||||
}
|
||||
|
||||
sfFont* chargerFonte(const char *const cheminFichier)
|
||||
{
|
||||
sfFont *font = sfFont_createFromFile(cheminFichier);
|
||||
|
||||
if(font == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors du chargement de la fonte \"%s\".\n", cheminFichier);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return font;
|
||||
}
|
||||
|
||||
|
||||
sfText* creerTexte(const sfVector2f position, const char *const chaine, const sfFont *const font, const uint16_t taille, const sfColor couleur)
|
||||
{
|
||||
sfText *text = sfText_create();
|
||||
|
||||
if(text == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création du texte: \"%s\".\n", chaine);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfText_setPosition(text, position);
|
||||
sfText_setString(text, chaine);
|
||||
sfText_setFont(text, font);
|
||||
sfText_setCharacterSize(text, taille);
|
||||
sfText_setColor(text, couleur);
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
|
||||
sfSprite* loadSpriteFromTexture(const sfVector2f position, const sfTexture *texture)
|
||||
{
|
||||
sfSprite *sprite = sfSprite_create();
|
||||
|
||||
if(sprite == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création d'un sprite.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfSprite_setTexture(sprite, texture, sfTrue);
|
||||
sfSprite_setPosition(sprite, position);
|
||||
|
||||
return sprite;
|
||||
}
|
||||
|
||||
|
||||
sfSprite* loadSpriteFromRenderTexture(const sfRenderTexture *const textureBuffer)
|
||||
{
|
||||
sfSprite *renderSprite = sfSprite_create();
|
||||
|
||||
if(renderSprite == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création d'un sprite.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sfSprite_setTexture(renderSprite, sfRenderTexture_getTexture(textureBuffer), sfTrue);
|
||||
|
||||
sfVector2f positionSpriteBuffer = {0.f, 0.f};
|
||||
sfSprite_setPosition(renderSprite, positionSpriteBuffer);
|
||||
|
||||
return renderSprite;
|
||||
}
|
||||
|
||||
|
||||
sfTexture* loadTextureFromFile(const char *const cheminFichier)
|
||||
{
|
||||
sfTexture *texture = sfTexture_createFromFile(cheminFichier, NULL);
|
||||
|
||||
if(texture == NULL)
|
||||
{
|
||||
fprintf(stderr, "Erreur lors de la création d'une texture à partir du fichier \"%s\".\n", cheminFichier);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
||||
Rectangle selectionRectangle (sfRenderWindow *const window, sfEvent *event, const sfSprite *const sprite)
|
||||
{
|
||||
const sfVector2f positionInitiale = {event->mouseButton.x, event->mouseButton.y};
|
||||
|
||||
event->mouseMove.x = event->mouseButton.x;
|
||||
event->mouseMove.y = event->mouseButton.y;
|
||||
sfConvexShape *shape = NULL;
|
||||
sfVector2f positionBD;
|
||||
|
||||
sfColor couleur = {255, 0, 0, 64};
|
||||
sfWindow_setFramerateLimit((sfWindow*)window, FRAMERATELIMITPOWER);
|
||||
while(!(event->type == sfEvtMouseButtonReleased))
|
||||
{
|
||||
/* Clear */
|
||||
sfRenderWindow_clear(window, sfWhite);
|
||||
|
||||
//Mise à jour du cercle en fonction de la nouvelle position du pointeur
|
||||
positionBD.x = (double)(-(positionInitiale.x) + event->mouseMove.x);
|
||||
positionBD.y = (double)(-(positionInitiale.y) + event->mouseMove.y);
|
||||
shape = creerRectangle (positionInitiale, positionBD, couleur);
|
||||
|
||||
/* Draw */
|
||||
// --> On n'oublie pas de re-dessiner le fond sur lequel on effectue une sélection
|
||||
sfRenderWindow_drawSprite(window, sprite, NULL);
|
||||
sfRenderWindow_drawConvexShape(window, shape, NULL);
|
||||
|
||||
/* Display */
|
||||
sfRenderWindow_display(window);
|
||||
|
||||
sfConvexShape_destroy(shape);
|
||||
|
||||
// Indispensable ici pour forcer la mise à jour de la variable d'évènements
|
||||
(void)sfRenderWindow_pollEvent(window, event);
|
||||
}
|
||||
Rectangle rectangleSelectionne = {positionInitiale, positionBD};
|
||||
return rectangleSelectionne;
|
||||
|
||||
}
|
||||
Cercle selectionCercle(sfRenderWindow *const window, sfEvent *event, const sfSprite *const sprite)
|
||||
{
|
||||
const sfVector2f positionCentre = {event->mouseButton.x, event->mouseButton.y};
|
||||
|
||||
/* Petite méthode de truand pour que la position du centre du cercle
|
||||
et la position du pointeur soient égales, lors de la première itération */
|
||||
event->mouseMove.x = event->mouseButton.x;
|
||||
event->mouseMove.y = event->mouseButton.y;
|
||||
|
||||
sfCircleShape *shape = NULL;
|
||||
double rayon;
|
||||
|
||||
// Une couleur verte un poil transparente pour voir ce que l'on sélectionne !
|
||||
sfColor couleur = {0, 255, 0, 64};
|
||||
|
||||
// Pendant la sélection, et uniquement ici, on relève la limite de FPS
|
||||
sfWindow_setFramerateLimit((sfWindow*)window, FRAMERATELIMITPOWER);
|
||||
|
||||
// Tant que l'utilisateur n'a pas relâché la souris...
|
||||
while(!(event->type == sfEvtMouseButtonReleased))
|
||||
{
|
||||
/* Clear */
|
||||
sfRenderWindow_clear(window, sfWhite);
|
||||
|
||||
//Mise à jour du cercle en fonction de la nouvelle position du pointeur
|
||||
rayon = sqrt(pow((double)(positionCentre.x - event->mouseMove.x), 2.f) + pow((double)(positionCentre.y - event->mouseMove.y), 2.f));
|
||||
shape = creerCercle(positionCentre, rayon, couleur);
|
||||
|
||||
/* Draw */
|
||||
// --> On n'oublie pas de re-dessiner le fond sur lequel on effectue une sélection
|
||||
sfRenderWindow_drawSprite(window, sprite, NULL);
|
||||
sfRenderWindow_drawCircleShape(window, shape, NULL);
|
||||
|
||||
/* Display */
|
||||
sfRenderWindow_display(window);
|
||||
|
||||
sfCircleShape_destroy(shape);
|
||||
|
||||
// Indispensable ici pour forcer la mise à jour de la variable d'évènements
|
||||
(void)sfRenderWindow_pollEvent(window, event);
|
||||
}
|
||||
|
||||
// On repasse sur un nombre de FPS limité !
|
||||
sfWindow_setFramerateLimit((sfWindow*)window, FRAMERATELIMITSLEEP);
|
||||
|
||||
/* On crée une structure Cercle, dans laquelle on stocke la position initiale
|
||||
ainsi que le rayon que l'utilisateur a choisi durant sa sélection de zone */
|
||||
Cercle cercleSelectionne = {positionCentre, rayon};
|
||||
|
||||
return cercleSelectionne;
|
||||
}
|
||||
|
||||
|
||||
void boucleGraphique(sfRenderWindow *const window)
|
||||
{
|
||||
/* ______Clear______ */
|
||||
sfRenderWindow_clear(window, sfWhite);
|
||||
/* _________________ */
|
||||
@ -317,7 +31,7 @@ void boucleGraphique(sfRenderWindow *const window)
|
||||
sfRenderWindow_drawConvexShape(window, shape3, NULL);
|
||||
|
||||
// --> Texte
|
||||
sfFont *font = chargerFonte(REGULARFONTPATH);
|
||||
sfFont *font = loadFont(REGULARFONTPATH);
|
||||
sfVector2f positionTexte = {50.f, 60.f};
|
||||
sfText *text = creerTexte(positionTexte, "Test texte !", font, 20, sfBlue);
|
||||
sfRenderWindow_drawText(window, text, NULL);
|
||||
@ -333,28 +47,40 @@ void boucleGraphique(sfRenderWindow *const window)
|
||||
sfRenderWindow_display(window);
|
||||
/* ___________________ */
|
||||
|
||||
/* Boucle de gestion des évènements */
|
||||
// Petite pause pour admirer le résultat
|
||||
sleep(2);
|
||||
|
||||
/* Boucle infinie maintenant */
|
||||
sfEvent event;
|
||||
|
||||
while(sfRenderWindow_pollEvent(window, &event))
|
||||
while(sfRenderWindow_isOpen(window))
|
||||
{
|
||||
if(event.type == sfEvtClosed)
|
||||
{
|
||||
sfRenderWindow_close(window);
|
||||
}
|
||||
sfRenderWindow_clear(window, sfWhite);
|
||||
sfRenderWindow_drawSprite(window, sprite, NULL);
|
||||
sfRenderWindow_display(window);
|
||||
|
||||
else if(event.type == sfEvtMouseButtonPressed && event.mouseButton.button == sfMouseLeft)
|
||||
while(sfRenderWindow_pollEvent(window, &event))
|
||||
{
|
||||
Cercle cercleSelectionne = selectionCercle(window, &event, sprite);
|
||||
fprintf(stdout, "L'utilisateur a sélectionné un cercle de centre (%f, %f) et de rayon %f.\n", cercleSelectionne.centre.x, cercleSelectionne.centre.y, cercleSelectionne.rayon);
|
||||
}
|
||||
else if(event.type == sfEvtMouseButtonPressed && event.mouseButton.button == sfMouseRight)
|
||||
{
|
||||
Rectangle rectangleSelectionne = selectionRectangle(window, &event, sprite);
|
||||
fprintf(stdout, "L'utilisateur a sélectionné un rectangle de positionHG (%f, %f) et de positionBD (%f, %f).\n", rectangleSelectionne.positionHG.x, rectangleSelectionne.positionHG.y, rectangleSelectionne.positionBD.x, rectangleSelectionne.positionBD.y);
|
||||
if(event.type == sfEvtClosed)
|
||||
{
|
||||
sfRenderWindow_close(window);
|
||||
}
|
||||
|
||||
else if(event.type == sfEvtMouseButtonPressed)
|
||||
{
|
||||
if(event.mouseButton.button == sfMouseLeft)
|
||||
{
|
||||
Cercle cercleSelectionne = selectionCercle(window, &event, sprite);
|
||||
fprintf(stdout, "L'utilisateur a sélectionné un cercle de centre (%f, %f) et de rayon %f.\n", cercleSelectionne.centre.x, cercleSelectionne.centre.y, cercleSelectionne.rayon);
|
||||
}
|
||||
|
||||
else if(event.mouseButton.button == sfMouseRight)
|
||||
{
|
||||
Rectangle rectangleSelectionne = selectionRectangle(window, &event, sprite);
|
||||
fprintf(stdout, "L'utilisateur a sélectionné un rectangle de positionHG (%f, %f) et de positionBD (%f, %f).\n", rectangleSelectionne.positionHG.x, rectangleSelectionne.positionHG.y, rectangleSelectionne.positionBD.x, rectangleSelectionne.positionBD.y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* ... */
|
||||
|
||||
/* Destruction des objets dessinés */
|
||||
sfCircleShape_destroy(shape);
|
||||
@ -364,4 +90,7 @@ void boucleGraphique(sfRenderWindow *const window)
|
||||
sfText_destroy(text);
|
||||
sfTexture_destroy(texture);
|
||||
sfSprite_destroy(sprite);
|
||||
|
||||
/* Destruction de la fenêtre */
|
||||
sfRenderWindow_destroy(window);
|
||||
}
|
||||
|
@ -7,11 +7,9 @@
|
||||
#include <math.h>
|
||||
#include <SFML/Graphics.h>
|
||||
|
||||
#define WIDTH 1024
|
||||
#define HEIGHT 768
|
||||
#define BITSPERPIXEL 32
|
||||
|
||||
#define WINDOWNAME "GINPA Is Not a Position Analyst"
|
||||
#include "creation.h"
|
||||
#include "chargement.h"
|
||||
#include "selection.h"
|
||||
|
||||
#define FRAMERATELIMITSLEEP 32
|
||||
#define FRAMERATELIMITPOWER 128
|
||||
@ -19,158 +17,7 @@
|
||||
#define REGULARFONTPATH "Graphique/Ressources/AllerFont/Aller_Rg.ttf"
|
||||
|
||||
#define WINDOWICONPATH "Graphique/Ressources/GINPA.png"
|
||||
#define PROJECTIMAGEPATH "Graphique/Ressources/GINPA.jpg"
|
||||
|
||||
#define OFFSETFORLINES 1
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
sfVector2f centre;
|
||||
double rayon;
|
||||
} Cercle;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
sfVector2f positionHG;
|
||||
sfVector2f positionBD;
|
||||
}Rectangle;
|
||||
/**
|
||||
* @brief Crée une fenêtre, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction initialise une fenêtre en accord avec les variables globales définies dans 'graphique.h'.
|
||||
*
|
||||
* @return Pointeur sur la fenêtre fraîchement créée.
|
||||
*/
|
||||
sfRenderWindow* initialisationFenetre(void);
|
||||
|
||||
/**
|
||||
* @brief Crée un cercle, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction crée un cercle en accord avec les variables passées en paramètres, à savoir:
|
||||
*
|
||||
* @param position Vecteur contenant les positions 'x' et 'y' du cercle à créer.
|
||||
* @param rayon Rayon du cercle à créer.
|
||||
* @param couleur Couleur intérieure du cercle à créer.
|
||||
* @return Pointeur sur le cercle fraîchement créé.
|
||||
*/
|
||||
sfCircleShape* creerCercle(const sfVector2f, const float, const sfColor);
|
||||
|
||||
/**
|
||||
* @brief Crée une texture de rendu, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction initialise une texture en accord avec les variables globales définies dans 'graphique.h'.
|
||||
*
|
||||
* @return Pointeur sur la texture fraîchement créée.
|
||||
*/
|
||||
sfRenderTexture* initialisationTextureBuffer(void);
|
||||
|
||||
/**
|
||||
*@brief Crée un rectangle, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction crée un rectangle en accord avec les variables passées en paramètres, à savoir:
|
||||
*
|
||||
* @param positionHG Vecteur contenant les coordonées du coin HAUT GAUCHE du rectangle à créer.
|
||||
* @param positionBD Vecteur contenant les coordonées du coin BAS DROIT du rectangle à créer.
|
||||
* @param couleur Couleur intérieure du rectangle à créer.
|
||||
* @return Pointeur sur le rectangle fraîchement créé.
|
||||
*/
|
||||
sfConvexShape* creerRectangle(const sfVector2f, const sfVector2f, const sfColor);
|
||||
|
||||
/**
|
||||
*@brief Crée une droite, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction crée une droite entre 2 points donnés en paramètre, à l'aide de:
|
||||
*
|
||||
* @param position1 Vecteur contenant les coordonées du premier point.
|
||||
* @param position2 Vecteur contenant les coordonées du second point.
|
||||
* @param couleur Couleur de la droite à créer.
|
||||
* @return Pointeur sur la droite fraîchement créée.
|
||||
*/
|
||||
sfConvexShape* creerDroite(const sfVector2f, const sfVector2f, const sfColor);
|
||||
|
||||
/**
|
||||
* @brief Cette fonction se chargera de monter en mémoire une fonte dont le chemin d'accès sera passer en paramètre
|
||||
*
|
||||
* @param cheminFichier Chemin relatif du fichier de fonte à charger.
|
||||
* @return Pointeur sur la fonte fraîchement chargée.
|
||||
*/
|
||||
sfFont* chargerFonte(const char *const);
|
||||
|
||||
/**
|
||||
* @brief Crée un text, et renvoie un pointeur dessus
|
||||
*
|
||||
* Cette fonction crée un text en accord avec les variables passées en paramètres, à savoir:
|
||||
*
|
||||
* @param position Vecteur contenant les positions 'x' et 'y' du texte à créer.
|
||||
* @param chaine Le texte à afficher.
|
||||
* @param font La fonte à appliquer sur ce texte.
|
||||
* @param taille La taille du texte à créer.
|
||||
* @param couleur La couleur du texte à créer.
|
||||
* @return Pointeur sur le texte fraîchement créé.
|
||||
*/
|
||||
sfText* creerTexte(const sfVector2f, const char *const, const sfFont *const, const uint16_t, const sfColor);
|
||||
|
||||
/**
|
||||
* @brief Crée un sprite, le charge avec une texture, et le renvoit
|
||||
*
|
||||
* @param texture Pointeur sur la texture à charger sur un sprite.
|
||||
* @return Pointeur sur le sprite fraîchement créé.
|
||||
*/
|
||||
sfSprite* loadSpriteFromTexture(const sfVector2f, const sfTexture*);
|
||||
|
||||
/**
|
||||
* @brief Crée un sprite, le charge avec une texture de rendu, et le renvoit
|
||||
*
|
||||
* @param renderTexture Pointeur sur la texture de rendu à charger sur un sprite.
|
||||
* @return Pointeur sur le sprite fraîchement créé.
|
||||
*/
|
||||
sfSprite* loadSpriteFromRenderTexture(const sfRenderTexture *const);
|
||||
|
||||
/**
|
||||
* @brief Crée une texture, à partir d'une image, et la renvoit
|
||||
*
|
||||
* @param cheminFichier Chemin relatif du fichier image à charger.
|
||||
* @return Pointeur sur la texture fraîchement créée.
|
||||
*/
|
||||
sfTexture* loadTextureFromFile(const char *const);
|
||||
|
||||
/**
|
||||
* @brief Sélection d'une zone rectangulaire à l'écran
|
||||
*
|
||||
* Cette fonction permet à l'utilisateur de sélectionner une zone rectangulaire à l'aide de la souris
|
||||
* et renvoit une structure Rectangle correspondante.
|
||||
*
|
||||
* /!\ Prière de n'appeler cette fonction que depuis 'boucleGestionEvenement()'...
|
||||
*
|
||||
* Piste d'évolution: donner à la fonction un tableau de sprites, et une taille, et les afficher un-par-un à chaque fois...
|
||||
*
|
||||
* @param window Pointeur sur la fenêtre sur laquelle on "sélectionne".
|
||||
* @param sprite (ou autre) Pointeur sur un (ou plusieurs) éléments à ré-afficher constamment.
|
||||
* @return Procédure.
|
||||
*/
|
||||
|
||||
Rectangle selectionRectangle (sfRenderWindow *const window, sfEvent *event, const sfSprite *const);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Sélection d'une zone circulaire à l'écran
|
||||
*
|
||||
* Cette fonction permet à l'utilisateur de sélectionner une zone circulaire à l'aide de la souris
|
||||
* et renvoit une structure Cercle correspondante.
|
||||
*
|
||||
* /!\ Prière de n'appeler cette fonction que depuis 'boucleGestionEvenement()'...
|
||||
*
|
||||
* Piste d'évolution: donner à la fonction un tableau de sprites, et une taille, et les afficher un-par-un à chaque fois...
|
||||
*
|
||||
* @param window Pointeur sur la fenêtre sur laquelle on "sélectionne".
|
||||
* @param sprite (ou autre) Pointeur sur un (ou plusieurs) éléments à ré-afficher constamment.
|
||||
* @return Procédure.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
Cercle selectionCercle(sfRenderWindow *const window, sfEvent *event, const sfSprite *const);
|
||||
|
||||
/**
|
||||
* @brief Boucle infinie de traitement graphique... changera dans le futur en fonction des besoins
|
||||
@ -178,4 +25,4 @@ Cercle selectionCercle(sfRenderWindow *const window, sfEvent *event, const sfSpr
|
||||
* @param window Fenêtre dans laquelle on effectue des opérations.
|
||||
* @return Procédure.
|
||||
*/
|
||||
void boucleGraphique(sfRenderWindow *const);
|
||||
void boucleGraphique(void);
|
||||
|
101
Graphique/selection.c
Normal file
101
Graphique/selection.c
Normal file
@ -0,0 +1,101 @@
|
||||
#include "selection.h"
|
||||
|
||||
|
||||
Rectangle selectionRectangle(sfRenderWindow *const window, sfEvent *event, const sfSprite *const sprite)
|
||||
{
|
||||
const sfVector2f positionInitiale = {event->mouseButton.x, event->mouseButton.y};
|
||||
|
||||
/* Petite méthode de truand pour que la position du centre du cercle
|
||||
et la position du pointeur soient égales, lors de la première itération */
|
||||
event->mouseMove.x = event->mouseButton.x;
|
||||
event->mouseMove.y = event->mouseButton.y;
|
||||
|
||||
sfConvexShape *shape = NULL;
|
||||
sfVector2f positionBD;
|
||||
|
||||
sfColor couleur = {255, 0, 0, 64};
|
||||
|
||||
sfWindow_setFramerateLimit((sfWindow*)window, FRAMERATELIMITPOWER);
|
||||
|
||||
while(!(event->type == sfEvtMouseButtonReleased))
|
||||
{
|
||||
/* Clear */
|
||||
sfRenderWindow_clear(window, sfWhite);
|
||||
|
||||
// Mise à jour du rectangle en fonction de la nouvelle position du pointeur
|
||||
positionBD.x = (double)(-(positionInitiale.x) + event->mouseMove.x);
|
||||
positionBD.y = (double)(-(positionInitiale.y) + event->mouseMove.y);
|
||||
shape = creerRectangle(positionInitiale, positionBD, couleur);
|
||||
|
||||
/* Draw */
|
||||
// --> On n'oublie pas de re-dessiner le fond sur lequel on effectue une sélection
|
||||
sfRenderWindow_drawSprite(window, sprite, NULL);
|
||||
sfRenderWindow_drawConvexShape(window, shape, NULL);
|
||||
|
||||
/* Display */
|
||||
sfRenderWindow_display(window);
|
||||
|
||||
sfConvexShape_destroy(shape);
|
||||
|
||||
// Indispensable ici pour forcer la mise à jour de la variable d'évènements
|
||||
(void)sfRenderWindow_pollEvent(window, event);
|
||||
}
|
||||
|
||||
Rectangle rectangleSelectionne = {positionInitiale, positionBD};
|
||||
|
||||
return rectangleSelectionne;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Cercle selectionCercle(sfRenderWindow *const window, sfEvent *event, const sfSprite *const sprite)
|
||||
{
|
||||
const sfVector2f positionCentre = {event->mouseButton.x, event->mouseButton.y};
|
||||
|
||||
/* Petite méthode de truand pour que la position du centre du cercle
|
||||
et la position du pointeur soient égales, lors de la première itération */
|
||||
event->mouseMove.x = event->mouseButton.x;
|
||||
event->mouseMove.y = event->mouseButton.y;
|
||||
|
||||
sfCircleShape *shape = NULL;
|
||||
double rayon;
|
||||
|
||||
// Une couleur verte un poil transparente pour voir ce que l'on sélectionne !
|
||||
sfColor couleur = {0, 255, 0, 64};
|
||||
|
||||
// Pendant la sélection, et uniquement ici, on relève la limite de FPS
|
||||
sfWindow_setFramerateLimit((sfWindow*)window, FRAMERATELIMITPOWER);
|
||||
|
||||
// Tant que l'utilisateur n'a pas relâché la souris...
|
||||
while(!(event->type == sfEvtMouseButtonReleased))
|
||||
{
|
||||
/* Clear */
|
||||
sfRenderWindow_clear(window, sfWhite);
|
||||
|
||||
// Mise à jour du cercle en fonction de la nouvelle position du pointeur
|
||||
rayon = sqrt(pow((double)(positionCentre.x - event->mouseMove.x), 2.f) + pow((double)(positionCentre.y - event->mouseMove.y), 2.f));
|
||||
shape = creerCercle(positionCentre, rayon, couleur);
|
||||
|
||||
/* Draw */
|
||||
// --> On n'oublie pas de re-dessiner le fond sur lequel on effectue une sélection
|
||||
sfRenderWindow_drawSprite(window, sprite, NULL);
|
||||
sfRenderWindow_drawCircleShape(window, shape, NULL);
|
||||
|
||||
/* Display */
|
||||
sfRenderWindow_display(window);
|
||||
|
||||
sfCircleShape_destroy(shape);
|
||||
|
||||
// Indispensable ici pour forcer la mise à jour de la variable d'évènements
|
||||
(void)sfRenderWindow_pollEvent(window, event);
|
||||
}
|
||||
|
||||
// On repasse sur un nombre de FPS limité !
|
||||
sfWindow_setFramerateLimit((sfWindow*)window, FRAMERATELIMITSLEEP);
|
||||
|
||||
/* On crée une structure Cercle, dans laquelle on stocke la position initiale
|
||||
ainsi que le rayon que l'utilisateur a choisi durant sa sélection de zone */
|
||||
Cercle cercleSelectionne = {positionCentre, rayon};
|
||||
|
||||
return cercleSelectionne;
|
||||
}
|
51
Graphique/selection.h
Normal file
51
Graphique/selection.h
Normal file
@ -0,0 +1,51 @@
|
||||
#pragma once
|
||||
|
||||
#include "graphique.h"
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
sfVector2f centre;
|
||||
double rayon;
|
||||
} Cercle;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
sfVector2f positionHG;
|
||||
sfVector2f positionBD;
|
||||
} Rectangle;
|
||||
|
||||
|
||||
/**
|
||||
* @brief Sélection d'une zone rectangulaire à l'écran
|
||||
*
|
||||
* Cette fonction permet à l'utilisateur de sélectionner une zone rectangulaire à l'aide de la souris
|
||||
* et renvoit une structure Rectangle correspondante.
|
||||
*
|
||||
* /!\ Prière de n'appeler cette fonction que depuis une boucle de gestion des évènements...
|
||||
*
|
||||
* Piste d'évolution: donner à la fonction une texture de rendu, et l'afficher à chaque fois...
|
||||
*
|
||||
* @param window Pointeur sur la fenêtre sur laquelle on "sélectionne".
|
||||
* @param event Pointeur sur la variable d'évènement de la fonction appelante.
|
||||
* @param sprite (ou autre) Pointeur sur un (ou plusieurs) éléments à ré-afficher constamment.
|
||||
* @return Procédure.
|
||||
*/
|
||||
Rectangle selectionRectangle(sfRenderWindow *const, sfEvent *event, const sfSprite *const);
|
||||
|
||||
/**
|
||||
* @brief Sélection d'une zone circulaire à l'écran
|
||||
*
|
||||
* Cette fonction permet à l'utilisateur de sélectionner une zone circulaire à l'aide de la souris
|
||||
* et renvoit une structure Cercle correspondante.
|
||||
*
|
||||
* /!\ Prière de n'appeler cette fonction que depuis une boucle de gestion des évènements...
|
||||
*
|
||||
* Piste d'évolution: donner à la fonction une texture de rendu, et l'afficher à chaque fois...
|
||||
*
|
||||
* @param window Pointeur sur la fenêtre sur laquelle on "sélectionne".
|
||||
* @param event Pointeur sur la variable d'évènement de la fonction appelante.
|
||||
* @param sprite (ou autre) Pointeur sur un (ou plusieurs) éléments à ré-afficher constamment.
|
||||
* @return Procédure.
|
||||
*/
|
||||
Cercle selectionCercle(sfRenderWindow *const window, sfEvent *event, const sfSprite *const);
|
8
main.c
8
main.c
@ -7,15 +7,9 @@ int main(int argc, char const *argv[])
|
||||
(void)argv;
|
||||
|
||||
/* Début du programme */
|
||||
sfRenderWindow *window = initialisationFenetre();
|
||||
|
||||
while(sfRenderWindow_isOpen(window))
|
||||
{
|
||||
/* Routine de test */
|
||||
boucleGraphique(window);
|
||||
}
|
||||
boucleGraphique();
|
||||
|
||||
sfRenderWindow_destroy(window);
|
||||
/* Fin du programme */
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user