SuperSpaceInvaderTurboApoca.../lib_headers/mingl/event/event.hpp
2021-12-13 09:08:31 +01:00

70 lines
1.9 KiB
C++

/**
*
* @file event.hpp
* @author Alexandre Sollier
* @date Décembre 2019
* @version 1.0
* @brief Différents types utile pour le gestionnaire d'événements
*
**/
#ifndef EVENT_HPP
#define EVENT_HPP
/**
* @namespace nsEvent
* @brief Espace de nom pour la gestion d'événements
*/
namespace nsEvent {
/**
* @brief EventType_t : Liste de tout les types d'événements
*/
enum EventType_t {
MouseClick, /**< L'utilisateur a cliqué sur un des boutons de la souris */
MouseMove /**< Le curseur s'est déplacé */,
MouseDrag, /**< Le curseur s'est déplacé pendant qu'un des boutons de la souris était pressé */
};
/**
* @struct MouseClickData_t
* @brief Possède des données pour un événement MouseClick
*/
struct MouseClickData_t {
int button; /**< ID numérique du bouton */
int state; /**< Nouvel état du bouton */
int x; /**< Coordonnée X du curseur, relative au coin supérieur-gauche de la fenêtre */
int y; /**< Coordonnée Y du curseur, relative au coin supérieur-gauche de la fenêtre */
};
/**
* @struct MouseMoveData_t
* @brief Possède des données pour un événement MouseMove/MouseDrag
*/
struct MouseMoveData_t {
int x; /**< Coordonnée X du curseur, relative au coin supérieur-gauche de la fenêtre */
int y; /**< Coordonnée Y du curseur, relative au coin supérieur-gauche de la fenêtre */
};
/**
* @union EventData_t
* @brief Union contenant les données d'un événement
*/
union EventData_t {
MouseClickData_t clickData; /**< Données pour un événement MouseClick */
MouseMoveData_t moveData; /**< Données pour un événment MouseMove/MouseDrag */
};
/**
* @struct Event_t
* @brief Possède des données pour un événement
*/
struct Event_t {
EventType_t eventType; /**< Type de l'événement */
EventData_t eventData; /**< Données de l'événement */
};
} // namespace nsEvent
#endif // EVENT_HPP