GL4Dummies
0.1.7
|
Fonctions haut-niveau de GL4Dummies pour la gestion des fenêtres avec SDL2. Plus de détails...
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "bin_tree.h"
#include "gl4duw_SDL2.h"
Aller au code source de ce fichier.
Structures de données | |
struct | window_t |
structure de données englobant le nom de la fenêtre, le pointeur vers sa structure SDL, son contexte OpenGL et les pointeurs vers ses fonctions callback. Plus de détails... | |
Définitions de type | |
typedef struct window_t | window_t |
type lié à la structure de données struct window_t. Plus de détails... | |
Fonctions | |
static int | initGL4DUW (int argc, char **argv) |
initialise SDL et GL4Dummies. Plus de détails... | |
static window_t * | newWindow (const char *name, SDL_Window *win, SDL_GLContext oglc) |
créé la fenêtre de type window_t. Plus de détails... | |
static int | windowCmpFunc (const void *w1, const void *w2) |
fonction de comparaison de deux fenêtres window_t en fonction du nom pour insertion dans l'arbre binaire. Plus de détails... | |
static void | freeWindows (void *window) |
libère la fenêtre Plus de détails... | |
static void | quit (void) |
est appelée au moment de sortir du programme (atexit), elle libère la (les) fenêtre(s) SDL et le(s) contexte(s) OpenGL lié(s). Plus de détails... | |
static void | resize (window_t *win) |
est appelée au moment du redimensionnement de la fenêtre win, elle récupère la taille de la fenêtre à l'aide de SDL_GetWindowSize puis appelle la callback resize de la fenêtre. Plus de détails... | |
static void | manageEvents (void) |
dispatche les événement selon le type en utilisant les callbacks de la fenêtre ayant le focus. Plus de détails... | |
static void | mainLoopBody (void *window, void **data) |
corps de la boucle principale événement/simulation/affichage Plus de détails... | |
static void | fake_resize (int w, int h) |
fonction fictive liée au callback de resize de la fenêtre. Plus de détails... | |
static void | fake_keydown (int keycode) |
fonction fictive liée au callback de touche clavier enfoncée. Plus de détails... | |
static void | fake_keyup (int keycode) |
fonction fictive liée au callback de touche clavier relachée. Plus de détails... | |
static void | fake_mousebutton (int button, int state, int x, int y) |
fonction fictive liée au callback d'un bouton de souris enfoncé ou relaché. Plus de détails... | |
static void | fake_mousemotion (int x, int y) |
fonction fictive liée au callback du mouvement de la souris avec bouton enfoncé. Plus de détails... | |
static void | fake_passivemousemotion (int x, int y) |
fonction fictive liée au callback du mouvement de la souris sans bouton enfoncé. Plus de détails... | |
static void | fake_idle (void) |
fonction fictive liée au callback de l'état idle de la fenêtre. Plus de détails... | |
static void | fake_display (void) |
fonction fictive liée au callback de display. Plus de détails... | |
static int | fake_catchSDL_Event (SDL_Event *event) |
fonction fictive liée au callback de catchSDL_Event. Plus de détails... | |
void | gl4duwSetGLAttributes (int glMajorVersion, int glMinorVersion, int glProfileMask, int glDoubleBuffer, int glDepthSize) |
modifie les paramètre par défaut du contexte OpenGL. Plus de détails... | |
GLboolean | gl4duwCreateWindow (int argc, char **argv, const char *title, int x, int y, int width, int height, Uint32 wflags) |
créé une fenêtre SDL avec un contexte OpenGL. Plus de détails... | |
SDL_Window * | gl4duwGetSDL_Window (void) |
retourne le pointeur vers la structure SDL_Window de la fenêtre courante (suite à un gl4duwCreateWindow ou gl4duwBindWindow ...). Plus de détails... | |
GLboolean | gl4duwBindWindow (const char *title) |
recherche et positionne "courant" une fenêtre en fonction de son titre. Plus de détails... | |
void | gl4duwMainLoop (void) |
boucle principale événement/simulation/affichage Plus de détails... | |
void | gl4duwResizeFunc (void(*func)(int width, int height)) |
affecte la fonction appelée lors du resize. Plus de détails... | |
void | gl4duwKeyDownFunc (void(*func)(int keycode)) |
affecte la fonction appelée lors de l'événement key down. Plus de détails... | |
void | gl4duwKeyUpFunc (void(*func)(int keycode)) |
affecte la fonction appelée lors de l'événement key up. Plus de détails... | |
void | gl4duwMouseFunc (void(*func)(int button, int state, int x, int y)) |
affecte la fonction appelée lorsqu'un utilisateur appuie ou relache un bouton de la souris dans la fenêtre. Plus de détails... | |
void | gl4duwMotionFunc (void(*func)(int x, int y)) |
affecte la fonction appelée lorsqu'un utilisateur déplace la souris dans la fenêtre tout en ayant un ou plusieurs boutons enfoncés. Plus de détails... | |
void | gl4duwPassiveMotionFunc (void(*func)(int x, int y)) |
affecte la fonction appelée lorsqu'un utilisateur déplace la souris dans la fenêtre sans qu'aucun bouton ne soit enfoncé Plus de détails... | |
void | gl4duwIdleFunc (void(*func)(void)) |
affecte la fonction appelée lors de l'idle (calcul/simulation avant affichage). Plus de détails... | |
void | gl4duwDisplayFunc (void(*func)(void)) |
affecte la fonction appelée lors de l'affichage. Plus de détails... | |
void | gl4duwCatchSDL_EventFunc (int(*func)(SDL_Event *)) |
affecte la fonction appelée lors de la gestion manuelle par le programmeur des événements SDL. Plus de détails... | |
void | gl4duwEnableManageEvents (void) |
void | gl4duwDisableManageEvents (void) |
void | gl4duwGetWindowSize (int *w, int *h) |
récupère la largeur et la hauteur de la fenêtre courante. Plus de détails... | |
Variables | |
static bin_tree_t * | _btWindows = NULL |
arbre binaire contenant l'ensemble des fenêtres créées. Plus de détails... | |
static bin_tree_t ** | _lastWindown = NULL |
adresse du pointeur vers le noeud référençant la dernière fenêtre créée. Plus de détails... | |
static window_t * | _curWindow = NULL |
la fenêtre window_t courante (coté code, Plus de détails... | |
static window_t * | _focusedWindow = NULL |
la fenêtre window_t ayant le focus ( Plus de détails... | |
static int | _glMajorVersion = 3 |
les paramètres par défaut du contexte OpenGL Plus de détails... | |
static int | _glMinorVersion = 2 |
static int | _glProfileMask = SDL_GL_CONTEXT_PROFILE_CORE |
static int | _glDoubleBuffer = 1 |
static int | _glDepthSize = 16 |
static int | _hasInit = 0 |
flag permettant de savoir si la lib a déjà été initialisée Plus de détails... | |
static int | _hasManageEvents = 1 |
flag permettant de savoir si la lib gère les événements Plus de détails... | |
Fonctions haut-niveau de GL4Dummies pour la gestion des fenêtres avec SDL2.
Définition dans le fichier gl4duw_SDL2.c.
|
inlinestatic |
fonction fictive liée au callback de catchSDL_Event.
Référencé par gl4duwCatchSDL_EventFunc(), et newWindow().
|
inlinestatic |
fonction fictive liée au callback de display.
Référencé par gl4duwDisplayFunc(), et newWindow().
|
inlinestatic |
fonction fictive liée au callback de l'état idle de la fenêtre.
Référencé par gl4duwIdleFunc(), et newWindow().
|
inlinestatic |
fonction fictive liée au callback de touche clavier enfoncée.
Référencé par gl4duwKeyDownFunc(), et newWindow().
|
inlinestatic |
fonction fictive liée au callback de touche clavier relachée.
Référencé par gl4duwKeyUpFunc(), et newWindow().
|
inlinestatic |
fonction fictive liée au callback d'un bouton de souris enfoncé ou relaché.
Référencé par gl4duwMouseFunc(), et newWindow().
|
inlinestatic |
fonction fictive liée au callback du mouvement de la souris avec bouton enfoncé.
Référencé par gl4duwMotionFunc(), et newWindow().
|
inlinestatic |
fonction fictive liée au callback du mouvement de la souris sans bouton enfoncé.
Référencé par gl4duwPassiveMotionFunc(), et newWindow().
|
inlinestatic |
fonction fictive liée au callback de resize de la fenêtre.
Référencé par gl4duwResizeFunc(), et newWindow().
|
inlinestatic |
GLboolean gl4duwBindWindow | ( | const char * | title | ) |
recherche et positionne "courant" une fenêtre en fonction de son titre.
La fenêtre courante est celle qui est affectée par les appelles des fonctions telles que gl4duwResizeFunc, gl4duwKeyDownFunc, gl4duwKeyUpFunc, gl4duwIdleFunc, gl4duwDisplayFunc.
title | titre de la fenêtre SDL recherchée. |
Références _btWindows, _curWindow, btFind(), pair_t::compResult, window_t::glContext, pair_t::ptr, window_t::window, et windowCmpFunc().
void gl4duwCatchSDL_EventFunc | ( | int(*)(SDL_Event *) | func | ) |
affecte la fonction appelée lors de la gestion manuelle par le programmeur des événements SDL.
func | pointeur vers fonction utilisateur à appeler pour la gestion manuelle des événements SDL. Cette fonction reçoit le pointeur vers l'événement bas-niveau SDL à traiter. Si la fonction utilisateur traitant l'événement renvoie une valeur non nulle ceci implique que l'événement est traité et ne doit plus figurer dans la liste des événements à traiter, sinon, potentiellement l'événement pourra être traité par une des "autres" fonctions "événements" spécialisées. |
Références _curWindow, window_t::catchSDL_Event, et fake_catchSDL_Event().
GLboolean gl4duwCreateWindow | ( | int | argc, |
char ** | argv, | ||
const char * | title, | ||
int | x, | ||
int | y, | ||
int | width, | ||
int | height, | ||
Uint32 | wflags | ||
) |
créé une fenêtre SDL avec un contexte OpenGL.
Pour modifier les valeurs utilisée par le contexte OpenGL, utiliser la fonction gl4duwSetGLAttributes.
argc | nombre d'arguments passés au programme (premier argument de la fonction main). |
argv | liste des arguments passés au programme (second argument de la fonction main). |
title | titre de la fenêtre SDL à créer. |
x | la postion x de la fenêtre à créer ou GL4DW_POS_CENTERED, ou GL4DW_POS_UNDEFINED. |
y | la postion y de la fenêtre à créer ou GL4DW_POS_CENTERED, ou GL4DW_POS_UNDEFINED. |
width | la largeur de la fenêtre à créer. |
height | la hauteur de la fenêtre à créer. |
wflags | des options sur la fenêtre à créer. Peut être 0 ou une ou toute combinaison (via OR "|") de : GL4DW_FULLSCREEN, GL4DW_FULLSCREEN_DESKTOP, GL4DW_OPENGL, GL4DW_HIDDEN, GL4DW_BORDERLESS, GL4DW_RESIZABLE, GL4DW_MINIMIZED, GL4DW_MAXIMIZED, GL4DW_INPUT_GRABBED, GL4DW_ALLOW_HIGHDPI. |
Références _btWindows, _curWindow, _glDepthSize, _glDoubleBuffer, _glMajorVersion, _glMinorVersion, _glProfileMask, _lastWindown, btFind(), btInsert(), pair_t::compResult, GL4DW_OPENGL, GL4DW_POS_CENTERED, initGL4DUW(), newWindow(), pair_t::ptr, et windowCmpFunc().
void gl4duwDisableManageEvents | ( | void | ) |
Références _hasManageEvents.
void gl4duwDisplayFunc | ( | void(*)(void) | func | ) |
affecte la fonction appelée lors de l'affichage.
func | pointeur vers fonction utilisateur à appeler pour réaliser le display (dessin). |
Références _curWindow, window_t::display, et fake_display().
void gl4duwEnableManageEvents | ( | void | ) |
Références _hasManageEvents.
SDL_Window* gl4duwGetSDL_Window | ( | void | ) |
retourne le pointeur vers la structure SDL_Window de la fenêtre courante (suite à un gl4duwCreateWindow ou gl4duwBindWindow ...).
Références _curWindow, et window_t::window.
void gl4duwGetWindowSize | ( | int * | w, |
int * | h | ||
) |
récupère la largeur et la hauteur de la fenêtre courante.
w | pointeur vers entier où sera renseignée la largeur de la fenêtre. |
h | pointeur vers entier où sera renseignée la hauteur de la fenêtre. |
Références _curWindow, et window_t::window.
void gl4duwIdleFunc | ( | void(*)(void) | func | ) |
affecte la fonction appelée lors de l'idle (calcul/simulation avant affichage).
func | pointeur vers fonction utilisateur à appeler pour réaliser la phase calcul/simulation. |
Références _curWindow, fake_idle(), et window_t::idle.
void gl4duwKeyDownFunc | ( | void(*)(int keycode) | func | ) |
affecte la fonction appelée lors de l'événement key down.
func | pointeur vers fonction utilisateur à appeler lors du de l'événement keydown. Cette dernière reçoit en paramètre le code keycode de la touche enfoncée (voir les macros GL4DK_xxx). |
Références _curWindow, fake_keydown(), et window_t::keydown.
void gl4duwKeyUpFunc | ( | void(*)(int keycode) | func | ) |
affecte la fonction appelée lors de l'événement key up.
func | pointeur vers fonction utilisateur à appeler lors du de l'événement keyup. Cette dernière reçoit en paramètre le code keycode de la touche relachée (voir les macros GL4DK_xxx). |
Références _curWindow, fake_keyup(), et window_t::keyup.
void gl4duwMainLoop | ( | void | ) |
boucle principale événement/simulation/affichage
Références _btWindows, _curWindow, _hasManageEvents, btForAll(), gl4duPrintFPS(), gl4duUpdateShaders(), window_t::glContext, mainLoopBody(), manageEvents(), et window_t::window.
void gl4duwMotionFunc | ( | void(*)(int x, int y) | func | ) |
affecte la fonction appelée lorsqu'un utilisateur déplace la souris dans la fenêtre tout en ayant un ou plusieurs boutons enfoncés.
func | pointeur vers fonction utilisateur à appeler lors du déplacement "drag" de la souris. Cette dernière reçoit en paramètre : l'abscisse x de la souris et son ordonée y. |
Références _curWindow, fake_mousemotion(), et window_t::mousemotion.
void gl4duwMouseFunc | ( | void(*)(int button, int state, int x, int y) | func | ) |
affecte la fonction appelée lorsqu'un utilisateur appuie ou relache un bouton de la souris dans la fenêtre.
func | pointeur vers fonction utilisateur à appeler lors du de l'événement lié à la souris. Cette dernière reçoit en paramètre : le code button du bouton concerné (voir les macros GL4D_MOUSE_xxx), l'état state du bouton, l'abscisse x de la souris et son ordonée y. |
Références _curWindow, fake_mousebutton(), et window_t::mousebutton.
void gl4duwPassiveMotionFunc | ( | void(*)(int x, int y) | func | ) |
affecte la fonction appelée lorsqu'un utilisateur déplace la souris dans la fenêtre sans qu'aucun bouton ne soit enfoncé
func | pointeur vers fonction utilisateur à appeler lors du "drop" de la souris. Cette dernière reçoit en paramètre : l'abscisse x de la souris et son ordonée y. |
Références _curWindow, fake_passivemousemotion(), et window_t::passivemousemotion.
void gl4duwResizeFunc | ( | void(*)(int width, int height) | func | ) |
affecte la fonction appelée lors du resize.
func | pointeur vers fonction utilisateur à appeler lors du resize. Cette dernière reçoit en paramètre la largeur width et la hauteur height de la fenêtre. |
Références _curWindow, fake_resize(), et window_t::resize.
void gl4duwSetGLAttributes | ( | int | glMajorVersion, |
int | glMinorVersion, | ||
int | glProfileMask, | ||
int | glDoubleBuffer, | ||
int | glDepthSize | ||
) |
modifie les paramètre par défaut du contexte OpenGL.
Cette fonction est à appeler avant gl4duwCreateWindow si vous souhaitez que ses paramètres soient pris en compte. Si vous souhaitez modifier plus de paramètres voir la fonction SDL_GL_SetAttribute.
glMajorVersion | version majeure d'OpenGL, par défaut vaut 3. |
glMinorVersion | version mineure d'OpenGL, par défaut vaut 2. |
glProfileMask | modifie le profile d'OpenGL, par défaut vaut GL4DW_CONTEXT_PROFILE_CORE mais peut aussi prendre GL4DW_CONTEXT_PROFILE_COMPATIBILITY, GL4DW_CONTEXT_PROFILE_ES. |
glDoubleBuffer | modifie l'état actif ou non du double buffer, par défaut vaut 1 (vrai). |
glDepthSize | modifie la dimension (nombre de bits utilisés) du buffer de profondeur, par défaut vaut 16. |
Références _glDepthSize, _glDoubleBuffer, _glMajorVersion, _glMinorVersion, et _glProfileMask.
|
inlinestatic |
initialise SDL et GL4Dummies.
argc | nombre d'arguments passés au programme (premier argument de la fonction main). |
argv | liste des arguments passés au programme (second argument de la fonction main). |
Références _hasInit, gl4duInit(), et quit().
Référencé par gl4duwCreateWindow().
|
inlinestatic |
corps de la boucle principale événement/simulation/affichage
Références window_t::display, window_t::glContext, window_t::idle, et window_t::window.
Référencé par gl4duwMainLoop().
|
inlinestatic |
dispatche les événement selon le type en utilisant les callbacks de la fenêtre ayant le focus.
Références _btWindows, _focusedWindow, btFind(), window_t::catchSDL_Event, window_t::keydown, window_t::keyup, window_t::mousebutton, window_t::mousemotion, window_t::passivemousemotion, pair_t::ptr, resize(), et windowCmpFunc().
Référencé par gl4duwMainLoop().
|
inlinestatic |
créé la fenêtre de type window_t.
name | titre de la fenêtre |
win | le pointeur vers la structure de fenêtre SDL |
oglc | la référence vers le contexte OpenGL lié à la fenêtre |
Références window_t::catchSDL_Event, window_t::display, fake_catchSDL_Event(), fake_display(), fake_idle(), fake_keydown(), fake_keyup(), fake_mousebutton(), fake_mousemotion(), fake_passivemousemotion(), fake_resize(), window_t::glContext, window_t::idle, window_t::keydown, window_t::keyup, window_t::mousebutton, window_t::mousemotion, window_t::name, window_t::passivemousemotion, window_t::resize, et window_t::window.
Référencé par gl4duwCreateWindow().
|
inlinestatic |
est appelée au moment de sortir du programme (atexit), elle libère la (les) fenêtre(s) SDL et le(s) contexte(s) OpenGL lié(s).
Références _btWindows, btFree(), et freeWindows().
Référencé par initGL4DUW().
|
inlinestatic |
est appelée au moment du redimensionnement de la fenêtre win, elle récupère la taille de la fenêtre à l'aide de SDL_GetWindowSize puis appelle la callback resize de la fenêtre.
win | la fenêtre redimensionnée |
Références window_t::resize, et window_t::window.
Référencé par manageEvents().
|
inlinestatic |
fonction de comparaison de deux fenêtres window_t en fonction du nom pour insertion dans l'arbre binaire.
Cette fonction utilise strcmp.
Référencé par gl4duwBindWindow(), gl4duwCreateWindow(), et manageEvents().
|
static |
arbre binaire contenant l'ensemble des fenêtres créées.
Référencé par gl4duwBindWindow(), gl4duwCreateWindow(), gl4duwMainLoop(), manageEvents(), et quit().
|
static |
la fenêtre window_t courante (coté code,
Référencé par gl4duwBindWindow(), gl4duwCatchSDL_EventFunc(), gl4duwCreateWindow(), gl4duwDisplayFunc(), gl4duwGetSDL_Window(), gl4duwGetWindowSize(), gl4duwIdleFunc(), gl4duwKeyDownFunc(), gl4duwKeyUpFunc(), gl4duwMainLoop(), gl4duwMotionFunc(), gl4duwMouseFunc(), gl4duwPassiveMotionFunc(), et gl4duwResizeFunc().
|
static |
|
static |
Référencé par gl4duwCreateWindow(), et gl4duwSetGLAttributes().
|
static |
Référencé par gl4duwCreateWindow(), et gl4duwSetGLAttributes().
|
static |
les paramètres par défaut du contexte OpenGL
Référencé par gl4duwCreateWindow(), et gl4duwSetGLAttributes().
|
static |
Référencé par gl4duwCreateWindow(), et gl4duwSetGLAttributes().
|
static |
Référencé par gl4duwCreateWindow(), et gl4duwSetGLAttributes().
|
static |
flag permettant de savoir si la lib a déjà été initialisée
Référencé par initGL4DUW().
|
static |
flag permettant de savoir si la lib gère les événements
Référencé par gl4duwDisableManageEvents(), gl4duwEnableManageEvents(), et gl4duwMainLoop().
|
static |
adresse du pointeur vers le noeud référençant la dernière fenêtre créée.
Référencé par gl4duwCreateWindow().