03 Rutinas de rat�n


int install_mouse();
Instala el controlador del rat�n de Allegro. Debe hacer esto antes de usar cualquier otra funci�n del rat�n. Devuelve -1 si hubo error (ej. si el controlador int33 no est� cargado), o el n�mero de botones del rat�n.

Relacionado con: position_mouse, set_mouse_range, set_mouse_speed, remove_mouse, poll_mouse, mouse_x, show_mouse, get_mouse_mickeys, Variables de configuraci�n est�ndar.
void remove_mouse();
Quita el controlador de rat�n. Normalmente no necesita llamar esta funci�n, porque allegro_exit() lo har� por usted.
Relacionado con: install_mouse, allegro_exit.
int poll_mouse();
Siempre que sea posible, Allegro leer� la entrada del rat�n as�ncronamente (ej: dentro de una interrupci�n), pero en algunas plataformas esto puede no ser posible, en cuyo caso debe llamar a esta rutina en intervalos regulares para actualizar las variables de estado del rat�n. Para ayudarle a comprobar que su c�digo de muestreo del rat�n funciona incluso en una plataforma que no lo necesita, tras la primera llamada a esta rutina, Allegro entrar� en modo muestreo, por lo que desde entonces en adelante deber� llamar manualmente a esta funci�n para obtener cualquier dato del rat�n, sin importar si el controlador actual necesita ser muestreado o n�. Devuelve cero con �xito, o un n�mero negativo si hubo un fallo (ej: no hay driver de rat�n instalado).
Relacionado con: mouse_needs_poll, install_mouse, mouse_x.
int mouse_needs_poll();
Devuelve TRUE si el controlador de rat�n actual est� siendo operado en modo muestreo.
Relacionado con: poll_mouse, install_mouse, mouse_x.
extern volatile int mouse_x;
extern volatile int mouse_y;
extern volatile int mouse_b;
extern volatile int mouse_pos;
Variables globales que contienen la posici�n actual del rat�n y el estado de los botones. Las posiciones mouse_x y mouse_y son enteros que van de cero a la esquina inferior derecha de la pantalla. La variable mouse_b es un campo de bits indicando el estado de cada bot�n: bit 0 es el bot�n izquierdo, bit 1 es del derecho, y bit 2 el bot�n central. Por ejemplo:
      if (mouse_b & 1)
         printf("El bot�n izquierdo est� pulsado\n");

      if (!(mouse_b & 2))
         printf("El bot�n derecho no est� pulsado\n");
La variable pouse_pos contiene la coordenada X actual en la palabra alta y la coordenada Y en la palabra baja. Esto es �til en bucles r�pidos de lectura donde una interrupci�n del rat�n podr�a ocurrir mientras lee las dos variables por separado, ya que puede copiar este valor a una variable local con una instrucci�n, y entonces separarlo con tranquilidad.
Relacionado con: install_mouse.
extern BITMAP *mouse_sprite;
extern int mouse_x_focus;
exterm int mouse_y_focus;
Variables globales que contienen el sprite actual del rat�n y el punto del foco. Estas variables s�lo son de lectura, y s�lo se pueden modificar usando las funciones set_mouse_sprite() y set_mouse_sprite_focus().
Relacionado con: set_mouse_sprite, set_mouse_sprite_focus.
void show_mouse(BITMAP *bmp);
Le dice a Allegro que muestre el puntero del rat�n en la pantalla. Esto s�lo funcionar� si el m�dulo de temporizaci�n est� instalado. El puntero del rat�n ser� dibujado sobre el bitmap especificado, que ser� normalmente 'screen' (lee m�s abajo informaci�n sobre bitmaps). Para ocultar el puntero del rat�n, llame show_mouse(NULL). Aviso: si dibuja algo en la pantalla mientras el puntero est� visible, podr�a ocurrir una interrupci�n de movimiento en medio de su operaci�n de dibujo. Si esto ocurre, el buffer del rat�n y el c�digo de cambio de banco SVGA se confundir�n, y dejar�n 'rastros de rat�n' por toda la pantalla. Para evitar esto, debe asegurarse que oculta el puntero del rat�n siempre que vaya a dibujar la pantalla.
Relacionado con: freeze_mouse_flag, install_mouse, install_timer, set_mouse_sprite, scare_mouse.
void scare_mouse();
Funci�n de ayuda para ocultar el puntero del rat�n antes de una operaci�n de dibujado. Esto se deshar� temporalmente del puntero del rat�n, pero s�lo si es realmente necesario (ej. el rat�n es visible, y est� siendo visualizado en la pantalla f�sica, y no se trata de un cursor por hardware). El estado previo del rat�n es almacenado para las llamadas siguientes a unscare_mouse().
Relacionado con: unscare_mouse, show_mouse.
void scare_mouse_area(int x, int y, int w, int h);
Como scare_mouse(), pero s�lo ocultar� el cursor si �ste se encuentra dentro del rect�ngulo especificado. Si no lo est�, el cursor simplemente ser� congelado hasta que llame a unscare_mouse(), para que no pueda interferir con su dibujado.
Relacionado con: unscare_mouse, scare_mouse_area, show_mouse.
void unscare_mouse();
Deshace el efecto de una llamada previa a scare_mouse(), recuperando el estado original del puntero.
Relacionado con: scare_mouse.
extern int freeze_mouse_flag;
Si esta variable est� activa, el puntero del rat�n no ser� redibujado cuando mueva el rat�n. Esto le puede evitar tener que ocultar el puntero cada vez que dibuje en la pantalla, siempre que no dibuje sobre la posici�n actual del puntero.
Relacionado con: show_mouse.
void position_mouse(int x, int y);
Mueve el rat�n a la posici�n de pantalla especificada. Puede llamar esta funci�n incluso mientras el puntero est� visible.
Relacionado con: install_mouse, set_mouse_range, set_mouse_speed.
void position_mouse_z(int z);
Establece la variable que contiene la posici�n de la ruedecilla del rat�n al valor indicado.
Relacionado con: install_mouse, position_mouse.
void set_mouse_range(int x1, int y1, int x2, int y2);
Crea un �rea de pantalla sobre la que el rat�n se podr� desplazar. Pase los par�metros de las esquinas del recuadro (coordenadas inclusivas). Si no llama esta funci�n, el �rea por defecto se activar� a (0, 0, SCREEN_W-1, SCREEN_H-1).
Relacionado con: install_mouse, set_mouse_speed, position_mouse.
void set_mouse_speed(int xspeed, int yspeed);
Ajusta la velocidad del rat�n. Valores grandes de xspeed e yspeed significan un movimiento m�s lento: por defecto ambos son 2.
Relacionado con: install_mouse, set_mouse_range, position_mouse.
void set_mouse_sprite(BITMAP *sprite);
�No le gusta mi puntero de rat�n? No problemo. Use esta funci�n para usar uno propio alternativo. Si cambia el puntero y luego quiere volver a ver mi querida flecha otra vez, llame set_mouse_sprite(NULL).

Como bonificaci�n, set_mouse_sprite(NULL) usa la paleta de colores actualmente seleccionada para elegir los colores de la flecha. Por lo que si el cursor se ve feo tras cambiar la paleta, llame a set_mouse_sprite(NULL).

Relacionado con: install_mouse, show_mouse, set_mouse_sprite_focus.
void set_mouse_sprite_focus(int x, int y);
El foco del rat�n es la parte del puntero que representa la posici�n actual del rat�n, vamos, la posici�n (mouse_x, mouse_y). Por defecto el foco est� arriba a la izquierda de la flecha, pero si va a usar un puntero de rat�n diferente, quiz�s deba alterar esto.
Relacionado con: set_mouse_sprite.
void get_mouse_mickeys(int *mickeyx, int *mickeyy);
Mide c�mo de lejos se ha movido el rat�n desde la �ltima llamada a esta funci�n. El rat�n seguir� generando unidades de movimiento incluso cuando llegue al borde de la pantalla, por lo que esta forma de control puede ser �til en juegos que requieran un rango de movimiento del rat�n infinito.
Relacionado con: install_mouse.
extern void (*mouse_callback)(int flags);
Llamado por el controlador de interrupciones siempre cuando el rat�n se mueva o el valor de los botones cambie. Esta funci�n debe ser bloqueada en memoria (locked), y debe ejecutarse �muy r�pido! Se le pasan los bits de evento que activaron la llamada, que son una m�scara de bits que puede contener cualquiera de los siguientes valores MOUSE_FLAG_MOVE, MOUSE_FLAG_LEFT_DOWN, MOUSE_FLAG_LEFT_UP, MOUSE_FLAG_RIGHT_DOWN, MOUSE_FLAG_RIGHT_UP, MOUSE_FLAG_MIDDLE_DOWN, MOUSE_FLAG_MIDDLE_UP, y MOUSE_FLAG_MOVE_Z.
Relacionado con: install_mouse.

Volver al Indice