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