with Allegro.Bitmaps; use Allegro.Bitmaps;
with Allegro_Ids;
pragma Warnings( Off, Allegro_Ids );
pragma Elaborate_All( Allegro_Ids );
package Allegro.Graphics is
type Gfx_Mode is private;
type A_Gfx_Mode is access all Gfx_Mode;
type Gfx_Mode_List is private;
type A_Gfx_Mode_List is access all Gfx_Mode_List;
type Gfx_Detect_Type is private;
subtype Gfx_Capability is Unsigned_32;
type Switch_Mode is private;
type Switch_Dir is private;
type A_Switch_Callback is
access procedure;
GFX_AUTODETECT : constant Gfx_Detect_Type;
GFX_AUTODETECT_FULLSCREEN : constant Gfx_Detect_Type;
GFX_AUTODETECT_WINDOWED : constant Gfx_Detect_Type;
GFX_TEXT : constant Gfx_Detect_Type;
GFX_SAFE : constant Gfx_Detect_Type;
GFX_NONE : constant Gfx_Detect_Type;
GFX_CAN_SCROLL : constant Gfx_Capability;
GFX_CAN_TRIPLE_BUFFER : constant Gfx_Capability;
GFX_HW_CURSOR : constant Gfx_Capability;
GFX_HW_HLINE : constant Gfx_Capability;
GFX_HW_HLINE_XOR : constant Gfx_Capability;
GFX_HW_HLINE_SOLID_PATTERN : constant Gfx_Capability;
GFX_HW_HLINE_COPY_PATTERN : constant Gfx_Capability;
GFX_HW_FILL : constant Gfx_Capability;
GFX_HW_FILL_XOR : constant Gfx_Capability;
GFX_HW_FILL_SOLID_PATTERN : constant Gfx_Capability;
GFX_HW_FILL_COPY_PATTERN : constant Gfx_Capability;
GFX_HW_LINE : constant Gfx_Capability;
GFX_HW_LINE_XOR : constant Gfx_Capability;
GFX_HW_TRIANGLE : constant Gfx_Capability;
GFX_HW_TRIANGLE_XOR : constant Gfx_Capability;
GFX_HW_TEXTOUT_FIXED : constant Gfx_Capability;
GFX_HW_VRAM_BLIT : constant Gfx_Capability;
GFX_HW_VRAM_BLIT_MASKED : constant Gfx_Capability;
GFX_HW_MEM_BLIT : constant Gfx_Capability;
GFX_HW_MEM_BLIT_MASKED : constant Gfx_Capability;
SWITCH_NONE : constant Switch_Mode;
SWITCH_PAUSE : constant Switch_Mode;
SWITCH_AMNESIA : constant Switch_Mode;
SWITCH_BACKGROUND : constant Switch_Mode;
SWITCH_BACKAMNESIA : constant Switch_Mode;
SWITCH_IN : constant Switch_Dir;
SWITCH_OUT : constant Switch_Dir;
procedure Destroy_Gfx_Mode_List( mode_list : in out A_Gfx_Mode_List );
function Enable_Triple_Buffer return Integer;
function Get_Color_Depth return Natural;
function Get_Display_Switch_Mode return Switch_Mode;
function Get_Gfx_Mode return Gfx_Detect_Type;
function Get_Gfx_Mode_List( card : Integer ) return A_Gfx_Mode_List;
function Get_Refresh_Rate return Natural;
function Gfx_Capabilities return Unsigned_32;
function Is_Windowed_Mode return Boolean;
function Poll_Scroll return Integer;
procedure Remove_Display_Switch_Callback( cb : not null A_Switch_Callback );
procedure Request_Refresh_Rate( rate : Natural );
function Request_Scroll( x, y : Integer ) return Integer;
function Request_Video_Bitmap( bmp : not null A_Bitmap ) return Integer;
function Scroll_Screen( x, y : Integer ) return Integer;
procedure Set_Color_Depth( depth : Natural );
function Set_Display_Switch_Callback( dir : Switch_Dir;
cb : A_Switch_Callback
) return Integer;
function Set_Display_Switch_Mode( mode : Switch_Mode ) return Integer;
function Set_Gfx_Mode( card : Gfx_Detect_Type;
w, h,
v_w, v_h : Natural ) return Integer;
function Show_Video_Bitmap( bmp : not null A_Bitmap ) return Integer;
procedure Vsync;
private
type Gfx_Mode is
record
width : Integer;
height : Integer;
bpp : Integer;
end record;
pragma Convention( C, Gfx_Mode );
type Gfx_Mode_List is
record
num_modes : Integer;
mode : A_Gfx_Mode;
end record;
pragma Convention( C, Gfx_Mode_List );
type Gfx_Detect_Type is new AL_ID;
type Switch_Mode is new Integer;
type Switch_Dir is new Integer;
GFX_AUTODETECT : constant Gfx_Detect_Type := To_AL_ID(0);
GFX_AUTODETECT_FULLSCREEN : constant Gfx_Detect_Type := To_AL_ID(1);
GFX_AUTODETECT_WINDOWED : constant Gfx_Detect_Type := To_AL_ID(2);
GFX_TEXT : constant Gfx_Detect_Type := To_AL_ID(-1);
GFX_SAFE : constant Gfx_Detect_Type := To_AL_ID('S','A','F','E');
GFX_NONE : constant Gfx_Detect_Type := To_AL_ID('N','O','N','E');
GFX_CAN_SCROLL : constant Gfx_Capability := 16#00000001#;
GFX_CAN_TRIPLE_BUFFER : constant Gfx_Capability := 16#00000002#;
GFX_HW_CURSOR : constant Gfx_Capability := 16#00000004#;
GFX_HW_HLINE : constant Gfx_Capability := 16#00000008#;
GFX_HW_HLINE_XOR : constant Gfx_Capability := 16#00000010#;
GFX_HW_HLINE_SOLID_PATTERN : constant Gfx_Capability := 16#00000020#;
GFX_HW_HLINE_COPY_PATTERN : constant Gfx_Capability := 16#00000040#;
GFX_HW_FILL : constant Gfx_Capability := 16#00000080#;
GFX_HW_FILL_XOR : constant Gfx_Capability := 16#00000100#;
GFX_HW_FILL_SOLID_PATTERN : constant Gfx_Capability := 16#00000200#;
GFX_HW_FILL_COPY_PATTERN : constant Gfx_Capability := 16#00000400#;
GFX_HW_LINE : constant Gfx_Capability := 16#00000800#;
GFX_HW_LINE_XOR : constant Gfx_Capability := 16#00001000#;
GFX_HW_TRIANGLE : constant Gfx_Capability := 16#00002000#;
GFX_HW_TRIANGLE_XOR : constant Gfx_Capability := 16#00004000#;
GFX_HW_TEXTOUT_FIXED : constant Gfx_Capability := 16#00008000#;
GFX_HW_VRAM_BLIT : constant Gfx_Capability := 16#00010000#;
GFX_HW_VRAM_BLIT_MASKED : constant Gfx_Capability := 16#00020000#;
GFX_HW_MEM_BLIT : constant Gfx_Capability := 16#00040000#;
GFX_HW_MEM_BLIT_MASKED : constant Gfx_Capability := 16#00080000#;
SWITCH_NONE : constant Switch_Mode := 0;
SWITCH_PAUSE : constant Switch_Mode := 1;
SWITCH_AMNESIA : constant Switch_Mode := 2;
SWITCH_BACKGROUND : constant Switch_Mode := 3;
SWITCH_BACKAMNESIA : constant Switch_Mode := 4;
SWITCH_IN : constant Switch_Dir := 0;
SWITCH_OUT : constant Switch_Dir := 1;
pragma Convention( C, A_Switch_Callback );
pragma Import( C, Enable_Triple_Buffer, "enable_triple_buffer" );
pragma Import( C, Get_Color_Depth, "get_color_depth" );
pragma Import( C, Get_Display_Switch_Mode, "get_display_switch_mode" );
pragma Import( C, Get_Gfx_Mode, "get_gfx_mode" );
pragma Import( C, Get_Gfx_Mode_List, "get_gfx_mode_list" );
pragma Import( C, Get_Refresh_Rate, "get_refresh_rate" );
pragma Import( C, Gfx_Capabilities, "get_gfx_capabilities" );
pragma Import( C, Poll_Scroll, "poll_scroll" );
pragma Import( C, Remove_Display_Switch_Callback, "remove_display_switch_callback" );
pragma Import( C, Request_Refresh_Rate, "request_refresh_rate" );
pragma Import( C, Request_Scroll, "request_scroll" );
pragma Import( C, Request_Video_Bitmap, "request_video_bitmap" );
pragma Import( C, Scroll_Screen, "scroll_screen" );
pragma Import( C, Set_Color_Depth, "set_color_depth" );
pragma Import( C, Set_Display_Switch_Callback, "set_display_switch_callback" );
pragma Import( C, Set_Display_Switch_Mode, "set_display_switch_mode" );
pragma Import( C, Set_Gfx_Mode, "set_gfx_mode" );
pragma Import( C, Show_Video_Bitmap, "show_video_bitmap" );
pragma Import( C, Vsync, "vsync" );
end Allegro.Graphics;