La souris

 

 

Modifier/cacher le curseur du pointeur de la souris

Il est possible de modifier/cacher le curseur de la souris de la fenêtre courante:

void glutSetCursor(int cursor);

où cursor est une valeur représentant l'une des formes disponibles:

GLUT_CURSOR_RIGHT_ARROW, GLUT_CURSOR_LEFT_ARROW, GLUT_CURSOR_INFO, GLUT_CURSOR_DESTROY, GLUT_CURSOR_HELP, GLUT_CURSOR_CYCLE, GLUT_CURSOR_SPRAY, GLUT_CURSOR_WAIT, GLUT_CURSOR_TEXT, GLUT_CURSOR_CROSSHAIR, GLUT_CURSOR_UP_DOWN, GLUT_CURSOR_LEFT_RIGHT, GLUT_CURSOR_TOP_SIDE, GLUT_CURSOR_BOTTOM_SIDE, GLUT_CURSOR_LEFT_SIDE, GLUT_CURSOR_RIGHT_SIDE, GLUT_CURSOR_TOP_LEFT_CORNER, GLUT_CURSOR_TOP_RIGHT_CORNER, GLUT_CURSOR_BOTTOM_RIGHT_CORNER, GLUT_CURSOR_BOTTOM_LEFT_CORNER, GLUT_CURSOR_FULL_CROSSHAIR (si cela marche, sinonutiliser GLUT_CURSOR_CROSSHAIR).

Les cas particuliers étant
GLUT_CURSOR_NONE pour cacher le curseur

GLUT_CURSOR_INHERIT pour hériter de la forme du curseur de celui du parent.

 

Positionner le pointeur de la souris

Il est possible de postionner le pointeur de la souris à l'écran. Il suffit d'utiliser la fonction glutWarpPointer()

void glutWarpPointer ( int x , int y );

En entrée:

x, y qui sont les nouvelles coordonnées de la souris par rapport à la fenêtre GLUT. Origine (donc le (0,0)) correspondant au coin supérieur gauche de la fenêtre.

En sortie: rien !

Image non trouvée !Cette fonction ne marche pas sous VirtualBox !

 

La souris quitte ou rentre dans notre fenêtre

Nous pouvons être informé lorsque le pointeur de la souris quitte ou rentre dans notre fenêtre.

Nous allons une fois de plus définir notre fonction qui sera informée de cet état par une fonction permattent d'indiquer à GLUT que nous désirons connaître cette information via glutEntryFunc()

void glutEntryFunc ( void (*func) (int state ));
func Avec toujours la même chose, func qui est notre fonction

Notre fonction recevra en paramètre la valeur de state qui prend les valeurs GLUT_LEFT ou GLUT_ENTERED selon que le pointeur de la souris a quitté ou est entré dans la fenêtre courante.

Image non trouvée !La valeur NULLpassée en paramètre de glutEntryFunc désactive l'appel à la fonction.

 

Etat des boutons de la souris

Il est possible d'être tenu informé de l'état des boutons de la souris en définissant notre fonction via glutMouseFunc()

void glutMouseFunc ( void (*func) ( int button, int state, int x, int y );
Où func est toujours notre fonction !

Notre fonction recevra donc des paramètres qui sont:

button pour le bouton pressé:

- Bouton gauche:GLUT_LEFT_BUTTON,

- Bouton du milieu (si votre souris en a): GLUT_MIDDLE_BUTTON,

- Bouton de droite: GLUT_RIGHT_BUTTON (si votre souris n'a pas qu'un bouton, mais cela existe encore ?)

state indique que le bouton est pressé (GLUT_DOWN) ou relaché (GLUT_UP).

x et y étant les coordonnées de la souris au moment du déclenchement de notre fonction

Image non trouvée !Si votre fonction reçoit GLUT_DOWN, alors elle recevra obligatoirement GLUT_UP. Et ceci même si la souris n'est plus dans la fenêtre.

Image non trouvée !Vous pourrez connaître l'état des boutons ALT, CTRL et Shifr via glutGetModifiers()

Image non trouvée !Vous ne recevrez aucune information si un menu est attaché à un bouton de la souris

 

Image non trouvée !Là encore, la valeur NULL passée en paramètre de glutMouseFunc désactive l'appel à la fonction.

 

 

Position de la souris

Il y a deux manières d'être informées des positions de la souris

- glutMotionFunc: la fonction qui y sera associée sera déclenchée lorsque la souris se déplace avec un bouton pressé.

- glutPassiveMotionFunc: la fonction qui y sera associée sera déclenchée lorsque la souris se déplace avec un bouton non pressé.

void glutMotionFunc ( void (*func) (int x, int y ));
void glutPassiveMotionFunc ( void (*func) ( int x, int y ));

func qui est votre fonction qui sera déclenchée !

Ces fonctions attendent toutes deux les coordonées X et Y en pixels.de la souris.

Image non trouvée !Les paramètres x et y sont relativent au coin supérieur gauche de la fenêtre


Image non trouvée !Comme toujours, la valeur NULL passée en paramètre de l'une des fonctions glut désactive l'appel à la fonction correspondante.