Les intéractions avec le Window Manager |
|
|
|
Passons à quelque chose de plus simple histoire de digérer le cours précédent... |
|
|
|
La souris |
|
|
|
En mode fenêtré c'est le Window Manager WM qui prend en charge le curseur de la souris, par contre en mode plein écran, SDL prend le relais. Il existe donc une structure dédiée à la souris : SDL_Cursor ! La création d'un curseur se fait par un appel à : SDL_Cursor *SDL_CreateCursor(Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y); Les paramètres w et h correspondant aux largeurs et hauteurs deu curseur. Il s'aagit obligatoirement d'un multiple de 8 bits. Les deux derniers argument correspondent quant à eux aux coordonnées du hot-spot. C'est le point considéré comme le centre du curseur. Enfin les paramètres data et mask concernent les données liées au curseur que l'on désire créer. Il s'agit d'une combiansaison binaire des valeurs suivantes : Data Mask 0 1 Blanc 1 1 Noir 0 0 Transparent 1 0 Couleur inversée sous le curseur si possible Une fois un curseur crée de cette manière on utilise pour SDL_SetCursor(SDL_Cursor *cursor) pour rendre un curseur actif. Puis la fonction SDL_ShowCursor(int toggle) pour l'afficher ou l'enlever de l'écran. De plus il est possible de placer un curseur ainsi crée à un endroit voulu par un appel à SDL_WarpMouse(int x, int y). Enfin on libère un curseur par l'appel à SDL_FreeCursor(SDL_Cursor *cursor). |
|
|
|
La gestion des fenêtres |
|
|
|
Cette partie est réellement très simple et ne vous posera aucun problème. Je ne vais que lister les fonctions :
Cette fonction vous permet de spécifier le titre et l'icone de la fenêtre.
La même chose mais dans le sens inverse !
Cette fonction charge une image comme icone d'une fenêtre. Cette fonction doit être appelée AVANT l'appel à SDL_SetVideoMode(). Le mask, est géré d'une manière analogue à celui du curseur et traite de la transparence de l'icone.
Permet d'iconifier une fenêtre si le WM le permet.
Cette fonction permet un passage entre le mode fenêtré et le mode plein écran. Pour l'instant (SDL version 1.1.4) seule Linux supporte cette fonction. BeOS est en cours.
Cete fonction permet à l'application de garder la main mise sur la souris. D'autre part les messages provenant du clavier seront traités directement par SDL et ne passeront plus par le WM. Le mode correspond à une des valeurs suivantes : typedef enum { SDL_GRAB_QUERY, SDL_GRAB_OFF, SDL_GRAB_ON } SDL_GrabMode; Voilà les fonctions liées aux WM. Au prochain cours j'aborderais une des partie les plus importante que représente les évènements. Il s'agira d'une longue partie mais qui reste primordiale si vous désirez développez plus avant avec SDL. |
|
|
|
|