1. with Allegro.Bitmaps;                   use Allegro.Bitmaps; 
  2.  
  3. package Allegro.Mouse is 
  4.  
  5.     -- Allegro 4.4.1 - Mouse routines 
  6.     -- This package is complete 
  7.  
  8.     type Cursor_Type is private; 
  9.  
  10.     type A_Mouse_Callback is 
  11.         access procedure( flags : Integer ); 
  12.  
  13.     ---------------------------------------------------------------------------- 
  14.  
  15.     MOUSE_CURSOR_NONE      : constant Cursor_Type; 
  16.     MOUSE_CURSOR_ALLEGRO   : constant Cursor_Type; 
  17.     MOUSE_CURSOR_ARROW     : constant Cursor_Type; 
  18.     MOUSE_CURSOR_BUSY      : constant Cursor_Type; 
  19.     MOUSE_CURSOR_QUESTION  : constant Cursor_Type; 
  20.     MOUSE_CURSOR_EDIT      : constant Cursor_Type; 
  21.  
  22.     MOUSE_FLAG_MOVE        : constant Unsigned_32; 
  23.     MOUSE_FLAG_LEFT_DOWN   : constant Unsigned_32; 
  24.     MOUSE_FLAG_LEFT_UP     : constant Unsigned_32; 
  25.     MOUSE_FLAG_RIGHT_DOWN  : constant Unsigned_32; 
  26.     MOUSE_FLAG_RIGHT_UP    : constant Unsigned_32; 
  27.     MOUSE_FLAG_MIDDLE_DOWN : constant Unsigned_32; 
  28.     MOUSE_FLAG_MIDDLE_UP   : constant Unsigned_32; 
  29.     MOUSE_FLAG_MOVE_Z      : constant Unsigned_32; 
  30.  
  31.     -- For use with Mouse_B 
  32.     MOUSE_BUTTON_LEFT      : constant Unsigned_32; 
  33.     MOUSE_BUTTON_RIGHT     : constant Unsigned_32; 
  34.     MOUSE_BUTTON_MIDDLE    : constant Unsigned_32; 
  35.  
  36.     ---------------------------------------------------------------------------- 
  37.  
  38.     procedure Disable_Hardware_Cursor; 
  39.  
  40.     procedure Enable_Hardware_Cursor; 
  41.  
  42.     procedure Get_Mouse_Mickeys( mickeyx, mickeyy : A_Integer ); 
  43.  
  44.     function Get_Mouse_Sprite return A_Bitmap; 
  45.  
  46.     function Install_Mouse return Integer; 
  47.  
  48.     function Mouse_X_Focus return Integer; 
  49.  
  50.     function Mouse_Y_Focus return Integer; 
  51.  
  52.     function Mouse_X return Integer; 
  53.  
  54.     function Mouse_Y return Integer; 
  55.  
  56.     function Mouse_Z return Integer; 
  57.  
  58.     function Mouse_B return Integer; 
  59.  
  60.     function Mouse_Pos return Integer; 
  61.  
  62.     function Mouse_Freeze_Flag return Integer; 
  63.  
  64.     function Mouse_On_Screen return Integer; 
  65.  
  66.     function Mouse_Needs_Poll return Integer; 
  67.  
  68.     function Poll_Mouse return Integer; 
  69.  
  70.     procedure Position_Mouse( x, y : Integer ); 
  71.  
  72.     procedure Position_Mouse_Z( z : Integer ); 
  73.  
  74.     procedure Remove_Mouse; 
  75.  
  76.     procedure Scare_Mouse; 
  77.  
  78.     procedure Scare_Mouse_Area( x, y, w, h : Integer ); 
  79.  
  80.     procedure Select_Mouse_Cursor( cursor : Cursor_Type ); 
  81.  
  82.     procedure Set_Mouse_Callback( cb : A_Mouse_Callback ); 
  83.  
  84.     procedure Set_Mouse_Cursor_Bitmap( cursor : Cursor_Type; bmp : A_Bitmap ); 
  85.  
  86.     procedure Set_Mouse_Range( x1, y1, x2, y2 : Integer ); 
  87.  
  88.     procedure Set_Mouse_Speed( xspeed, yspeed : Integer ); 
  89.  
  90.     procedure Set_Mouse_Sprite( sprite : A_Bitmap ); 
  91.  
  92.     procedure Set_Mouse_Sprite_Focus( x, y : Integer ); 
  93.  
  94.     procedure Show_Mouse( bmp : A_Bitmap ); 
  95.  
  96.     function Show_OS_Cursor( cursor : Cursor_Type ) return Integer; 
  97.  
  98.     procedure Unscare_Mouse; 
  99.  
  100. private 
  101.  
  102.     type Cursor_Type is new Integer; 
  103.  
  104.     ---------------------------------------------------------------------------- 
  105.  
  106.     MOUSE_CURSOR_NONE      : constant Cursor_Type := 0; 
  107.     MOUSE_CURSOR_ALLEGRO   : constant Cursor_Type := 1; 
  108.     MOUSE_CURSOR_ARROW     : constant Cursor_Type := 2; 
  109.     MOUSE_CURSOR_BUSY      : constant Cursor_Type := 3; 
  110.     MOUSE_CURSOR_QUESTION  : constant Cursor_Type := 4; 
  111.     MOUSE_CURSOR_EDIT      : constant Cursor_Type := 5; 
  112.  
  113.     MOUSE_FLAG_MOVE        : constant Unsigned_32 :=   1; 
  114.     MOUSE_FLAG_LEFT_DOWN   : constant Unsigned_32 :=   2; 
  115.     MOUSE_FLAG_LEFT_UP     : constant Unsigned_32 :=   4; 
  116.     MOUSE_FLAG_RIGHT_DOWN  : constant Unsigned_32 :=   8; 
  117.     MOUSE_FLAG_RIGHT_UP    : constant Unsigned_32 :=  16; 
  118.     MOUSE_FLAG_MIDDLE_DOWN : constant Unsigned_32 :=  32; 
  119.     MOUSE_FLAG_MIDDLE_UP   : constant Unsigned_32 :=  64; 
  120.     MOUSE_FLAG_MOVE_Z      : constant Unsigned_32 := 128; 
  121.  
  122.     MOUSE_BUTTON_LEFT      : constant Unsigned_32 := 1; 
  123.     MOUSE_BUTTON_RIGHT     : constant Unsigned_32 := 2; 
  124.     MOUSE_BUTTON_MIDDLE    : constant Unsigned_32 := 4; 
  125.  
  126.     ---------------------------------------------------------------------------- 
  127.  
  128.     pragma Convention( C, A_Mouse_Callback ); 
  129.  
  130.     pragma Import( C, Disable_Hardware_Cursor, "disable_hardware_cursor" ); 
  131.     pragma Import( C, Enable_Hardware_Cursor, "enable_hardware_cursor" ); 
  132.     pragma Import( C, Get_Mouse_Mickeys, "get_mouse_mickeys" ); 
  133.     pragma Import( C, Get_Mouse_Sprite, "get_mouse_sprite" ); 
  134.     pragma Import( C, Install_Mouse, "install_mouse" ); 
  135.     pragma Import( C, Mouse_Needs_Poll, "mouse_needs_poll" ); 
  136.     pragma Import( C, Mouse_On_Screen, "mouse_on_screen" ); 
  137.     pragma Import( C, Poll_Mouse, "poll_mouse" ); 
  138.     pragma Import( C, Position_Mouse, "position_mouse" ); 
  139.     pragma Import( C, Position_Mouse_Z, "position_mouse_z" ); 
  140.     pragma Import( C, Remove_Mouse, "remove_mouse" ); 
  141.     pragma Import( C, Scare_Mouse, "scare_mouse" ); 
  142.     pragma Import( C, Scare_Mouse_Area, "scare_mouse_area" ); 
  143.     pragma Import( C, Select_Mouse_Cursor, "select_mouse_cursor" ); 
  144.     pragma Import( C, Set_Mouse_Callback, "set_mouse_callback" ); 
  145.     pragma Import( C, Set_Mouse_Cursor_Bitmap, "set_mouse_cursor_bitmap" ); 
  146.     pragma Import( C, Set_Mouse_Range, "set_mouse_range" ); 
  147.     pragma Import( C, Set_Mouse_Speed, "set_mouse_speed" ); 
  148.     pragma Import( C, Set_Mouse_Sprite, "set_mouse_sprite" ); 
  149.     pragma Import( C, Set_Mouse_Sprite_Focus, "set_mouse_sprite_focus" ); 
  150.     pragma Import( C, Show_Mouse, "show_mouse" ); 
  151.     pragma Import( C, Show_OS_Cursor, "show_os_cursor" ); 
  152.     pragma Import( C, Unscare_Mouse, "unscare_mouse" ); 
  153.  
  154. end Allegro.Mouse;