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