1. with Allegro.Bitmaps;                   use Allegro.Bitmaps; 
  2. with Allegro_Ids; 
  3. pragma Warnings( Off, Allegro_Ids ); 
  4.  
  5. pragma Elaborate_All( Allegro_Ids ); 
  6.  
  7. package Allegro.Graphics is 
  8.  
  9.     -- Allegro 4.4.1 - Graphics modes 
  10.     -- This package is complete 
  11.  
  12.     type Gfx_Mode is private; 
  13.     type A_Gfx_Mode is access all Gfx_Mode; 
  14.  
  15.     type Gfx_Mode_List is private; 
  16.     type A_Gfx_Mode_List is access all Gfx_Mode_List; 
  17.  
  18.     type Gfx_Detect_Type is private; 
  19.  
  20.     subtype Gfx_Capability is Unsigned_32; 
  21.  
  22.     type Switch_Mode is private; 
  23.     type Switch_Dir is private; 
  24.  
  25.     type A_Switch_Callback is 
  26.         access procedure; 
  27.  
  28.     ---------------------------------------------------------------------------- 
  29.  
  30.     GFX_AUTODETECT            : constant Gfx_Detect_Type; 
  31.     GFX_AUTODETECT_FULLSCREEN : constant Gfx_Detect_Type; 
  32.     GFX_AUTODETECT_WINDOWED   : constant Gfx_Detect_Type; 
  33.     GFX_TEXT                  : constant Gfx_Detect_Type; 
  34.     GFX_SAFE                  : constant Gfx_Detect_Type; 
  35.     GFX_NONE                  : constant Gfx_Detect_Type; 
  36.  
  37.     GFX_CAN_SCROLL             : constant Gfx_Capability; 
  38.     GFX_CAN_TRIPLE_BUFFER      : constant Gfx_Capability; 
  39.     GFX_HW_CURSOR              : constant Gfx_Capability; 
  40.     GFX_HW_HLINE               : constant Gfx_Capability; 
  41.     GFX_HW_HLINE_XOR           : constant Gfx_Capability; 
  42.     GFX_HW_HLINE_SOLID_PATTERN : constant Gfx_Capability; 
  43.     GFX_HW_HLINE_COPY_PATTERN  : constant Gfx_Capability; 
  44.     GFX_HW_FILL                : constant Gfx_Capability; 
  45.     GFX_HW_FILL_XOR            : constant Gfx_Capability; 
  46.     GFX_HW_FILL_SOLID_PATTERN  : constant Gfx_Capability; 
  47.     GFX_HW_FILL_COPY_PATTERN   : constant Gfx_Capability; 
  48.     GFX_HW_LINE                : constant Gfx_Capability; 
  49.     GFX_HW_LINE_XOR            : constant Gfx_Capability; 
  50.     GFX_HW_TRIANGLE            : constant Gfx_Capability; 
  51.     GFX_HW_TRIANGLE_XOR        : constant Gfx_Capability; 
  52.     GFX_HW_TEXTOUT_FIXED       : constant Gfx_Capability; 
  53.     GFX_HW_VRAM_BLIT           : constant Gfx_Capability; 
  54.     GFX_HW_VRAM_BLIT_MASKED    : constant Gfx_Capability; 
  55.     GFX_HW_MEM_BLIT            : constant Gfx_Capability; 
  56.     GFX_HW_MEM_BLIT_MASKED     : constant Gfx_Capability; 
  57.  
  58.     SWITCH_NONE        : constant Switch_Mode; 
  59.     SWITCH_PAUSE       : constant Switch_Mode; 
  60.     SWITCH_AMNESIA     : constant Switch_Mode; 
  61.     SWITCH_BACKGROUND  : constant Switch_Mode; 
  62.     SWITCH_BACKAMNESIA : constant Switch_Mode; 
  63.  
  64.     SWITCH_IN  : constant Switch_Dir; 
  65.     SWITCH_OUT : constant Switch_Dir; 
  66.  
  67.     ---------------------------------------------------------------------------- 
  68.  
  69.     procedure Destroy_Gfx_Mode_List( mode_list : in out A_Gfx_Mode_List ); 
  70.  
  71.     function Enable_Triple_Buffer return Integer; 
  72.  
  73.     function Get_Color_Depth return Natural; 
  74.  
  75.     function Get_Display_Switch_Mode return Switch_Mode; 
  76.  
  77.     function Get_Gfx_Mode return Gfx_Detect_Type; 
  78.  
  79.     function Get_Gfx_Mode_List( card : Integer ) return A_Gfx_Mode_List; 
  80.  
  81.     function Get_Refresh_Rate return Natural; 
  82.  
  83.     function Gfx_Capabilities return Unsigned_32; 
  84.  
  85.     function Is_Windowed_Mode return Boolean; 
  86.  
  87.     function Poll_Scroll return Integer; 
  88.  
  89.     procedure Remove_Display_Switch_Callback( cb : not null A_Switch_Callback ); 
  90.  
  91.     procedure Request_Refresh_Rate( rate : Natural ); 
  92.  
  93.     function Request_Scroll( x, y : Integer ) return Integer; 
  94.  
  95.     function Request_Video_Bitmap( bmp : not null A_Bitmap ) return Integer; 
  96.  
  97.     function Scroll_Screen( x, y : Integer ) return Integer; 
  98.  
  99.     procedure Set_Color_Depth( depth : Natural ); 
  100.  
  101.     function Set_Display_Switch_Callback( dir : Switch_Dir; 
  102.                                           cb  : A_Switch_Callback 
  103.                                         ) return Integer; 
  104.  
  105.     function Set_Display_Switch_Mode( mode : Switch_Mode ) return Integer; 
  106.  
  107.     function Set_Gfx_Mode( card     : Gfx_Detect_Type; 
  108.                            w, h, 
  109.                            v_w, v_h : Natural ) return Integer; 
  110.  
  111.     function Show_Video_Bitmap( bmp : not null A_Bitmap ) return Integer; 
  112.  
  113.     procedure Vsync; 
  114.  
  115. private 
  116.  
  117.     type Gfx_Mode is 
  118.         record 
  119.             width  : Integer; 
  120.             height : Integer; 
  121.             bpp    : Integer; 
  122.         end record; 
  123.     pragma Convention( C, Gfx_Mode ); 
  124.  
  125.     type Gfx_Mode_List is 
  126.         record 
  127.             num_modes : Integer; 
  128.             mode      : A_Gfx_Mode; 
  129.         end record; 
  130.     pragma Convention( C, Gfx_Mode_List ); 
  131.  
  132.     type Gfx_Detect_Type is new AL_ID; 
  133.  
  134.     type Switch_Mode is new Integer; 
  135.     type Switch_Dir is new Integer; 
  136.  
  137.     ---------------------------------------------------------------------------- 
  138.  
  139.     GFX_AUTODETECT            : constant Gfx_Detect_Type := To_AL_ID(0); 
  140.     GFX_AUTODETECT_FULLSCREEN : constant Gfx_Detect_Type := To_AL_ID(1); 
  141.     GFX_AUTODETECT_WINDOWED   : constant Gfx_Detect_Type := To_AL_ID(2); 
  142.     GFX_TEXT                  : constant Gfx_Detect_Type := To_AL_ID(-1); 
  143.     GFX_SAFE                  : constant Gfx_Detect_Type := To_AL_ID('S','A','F','E'); 
  144.     GFX_NONE                  : constant Gfx_Detect_Type := To_AL_ID('N','O','N','E'); 
  145.  
  146.     GFX_CAN_SCROLL             : constant Gfx_Capability := 16#00000001#; 
  147.     GFX_CAN_TRIPLE_BUFFER      : constant Gfx_Capability := 16#00000002#; 
  148.     GFX_HW_CURSOR              : constant Gfx_Capability := 16#00000004#; 
  149.     GFX_HW_HLINE               : constant Gfx_Capability := 16#00000008#; 
  150.     GFX_HW_HLINE_XOR           : constant Gfx_Capability := 16#00000010#; 
  151.     GFX_HW_HLINE_SOLID_PATTERN : constant Gfx_Capability := 16#00000020#; 
  152.     GFX_HW_HLINE_COPY_PATTERN  : constant Gfx_Capability := 16#00000040#; 
  153.     GFX_HW_FILL                : constant Gfx_Capability := 16#00000080#; 
  154.     GFX_HW_FILL_XOR            : constant Gfx_Capability := 16#00000100#; 
  155.     GFX_HW_FILL_SOLID_PATTERN  : constant Gfx_Capability := 16#00000200#; 
  156.     GFX_HW_FILL_COPY_PATTERN   : constant Gfx_Capability := 16#00000400#; 
  157.     GFX_HW_LINE                : constant Gfx_Capability := 16#00000800#; 
  158.     GFX_HW_LINE_XOR            : constant Gfx_Capability := 16#00001000#; 
  159.     GFX_HW_TRIANGLE            : constant Gfx_Capability := 16#00002000#; 
  160.     GFX_HW_TRIANGLE_XOR        : constant Gfx_Capability := 16#00004000#; 
  161.     GFX_HW_TEXTOUT_FIXED       : constant Gfx_Capability := 16#00008000#; 
  162.     GFX_HW_VRAM_BLIT           : constant Gfx_Capability := 16#00010000#; 
  163.     GFX_HW_VRAM_BLIT_MASKED    : constant Gfx_Capability := 16#00020000#; 
  164.     GFX_HW_MEM_BLIT            : constant Gfx_Capability := 16#00040000#; 
  165.     GFX_HW_MEM_BLIT_MASKED     : constant Gfx_Capability := 16#00080000#; 
  166.  
  167.     SWITCH_NONE        : constant Switch_Mode := 0; 
  168.     SWITCH_PAUSE       : constant Switch_Mode := 1; 
  169.     SWITCH_AMNESIA     : constant Switch_Mode := 2; 
  170.     SWITCH_BACKGROUND  : constant Switch_Mode := 3; 
  171.     SWITCH_BACKAMNESIA : constant Switch_Mode := 4; 
  172.  
  173.     SWITCH_IN  : constant Switch_Dir := 0; 
  174.     SWITCH_OUT : constant Switch_Dir := 1; 
  175.  
  176.     ---------------------------------------------------------------------------- 
  177.  
  178.     pragma Convention( C, A_Switch_Callback ); 
  179.  
  180.     pragma Import( C, Enable_Triple_Buffer, "enable_triple_buffer" ); 
  181.     pragma Import( C, Get_Color_Depth, "get_color_depth" ); 
  182.     pragma Import( C, Get_Display_Switch_Mode, "get_display_switch_mode" ); 
  183.     pragma Import( C, Get_Gfx_Mode, "get_gfx_mode" ); 
  184.     pragma Import( C, Get_Gfx_Mode_List, "get_gfx_mode_list" ); 
  185.     pragma Import( C, Get_Refresh_Rate, "get_refresh_rate" ); 
  186.     pragma Import( C, Gfx_Capabilities, "get_gfx_capabilities" ); 
  187.     pragma Import( C, Poll_Scroll, "poll_scroll" ); 
  188.     pragma Import( C, Remove_Display_Switch_Callback, "remove_display_switch_callback" ); 
  189.     pragma Import( C, Request_Refresh_Rate, "request_refresh_rate" ); 
  190.     pragma Import( C, Request_Scroll, "request_scroll" ); 
  191.     pragma Import( C, Request_Video_Bitmap, "request_video_bitmap" ); 
  192.     pragma Import( C, Scroll_Screen, "scroll_screen" ); 
  193.     pragma Import( C, Set_Color_Depth, "set_color_depth" ); 
  194.     pragma Import( C, Set_Display_Switch_Callback, "set_display_switch_callback" ); 
  195.     pragma Import( C, Set_Display_Switch_Mode, "set_display_switch_mode" ); 
  196.     pragma Import( C, Set_Gfx_Mode, "set_gfx_mode" ); 
  197.     pragma Import( C, Show_Video_Bitmap, "show_video_bitmap" ); 
  198.     pragma Import( C, Vsync, "vsync" ); 
  199.  
  200. end Allegro.Graphics;