package Allegro.Palettes is
PAL_SIZE : constant Integer := 256;
type RGB is private;
type A_RGB is access all RGB;
type Fade_Speed is range 1..64;
for Fade_Speed'Size use Integer'Size;
type Interpolate_Type is range 0..64;
for Interpolate_Type'Size use Integer'Size;
type Palette_Index is range 0..PAL_SIZE-1;
for Palette_Index'Size use Integer'Size;
type Palette is array (Palette_Index) of RGB;
procedure Fade_From( source, dest : Palette; speed : Fade_Speed );
procedure Fade_From_Range( source,
dest : Palette;
speed : Fade_Speed;
from,
to : Palette_Index );
procedure Fade_In( p : Palette; speed : Fade_Speed );
procedure Fade_In_Range( p : Palette; speed : Fade_Speed; from, to : Palette_Index );
procedure Fade_Interpolate( source,
dest : Palette;
output : in out Palette;
pos : Interpolate_Type;
from,
to : Palette_Index );
procedure Fade_Out( speed : Fade_Speed );
procedure Fade_Out_Range( speed : Fade_Speed; from, to : Palette_Index );
procedure Generate_332_Palette( pal : in out Palette );
procedure Get_Color( index : Palette_Index; p : A_RGB );
procedure Get_Palette( p : in out Palette );
procedure Get_Palette_Range( p : in out Palette; from, to : Palette_Index );
procedure Select_Palette( p : Palette );
procedure Set_Color( index : Palette_Index; p : A_RGB );
procedure Set_Palette( p : Palette );
procedure Set_Palette_Range( p : Palette; from, to : Palette_Index; vsync : Boolean );
procedure Unselect_Palette;
private
type RGB is
record
r, g, b : Unsigned_8;
filler : Unsigned_8;
end record;
for RGB'Size use 32;
pragma Convention( C, Palette );
pragma Convention( C, RGB );
pragma Import( C, Fade_From, "fade_from" );
pragma Import( C, Fade_From_Range, "fade_from_range" );
pragma Import( C, Fade_In, "fade_in" );
pragma Import( C, Fade_In_Range, "fade_in_range" );
pragma Import( C, Fade_Interpolate, "fade_interpolate" );
pragma Import( C, Fade_Out, "fade_out" );
pragma Import( C, Fade_Out_Range, "fade_out_range" );
pragma Import( C, Generate_332_Palette, "generate_332_palette" );
pragma Import( C, Get_Color, "get_color" );
pragma Import( C, Get_Palette, "get_palette" );
pragma Import( C, Get_Palette_Range, "get_palette_range" );
pragma Import( C, Select_Palette, "select_palette" );
pragma Import( C, Set_Color, "set_color" );
pragma Import( C, Set_Palette, "set_palette" );
pragma Import( C, Unselect_Palette, "unselect_palette" );
end Allegro.Palettes;