package Allegro.Transformations is
type Float_Matrix_2D is array (Integer range <>, Integer range <>) of Float;
type Allegro_Transform is
record
m : Float_Matrix_2D(0..3, 0..3);
end record;
pragma Convention( C, Allegro_Transform );
procedure Al_Use_Transform( trans : Allegro_Transform );
pragma Import( C, Al_Use_Transform, "al_use_transform" );
procedure Al_Copy_Transform( dest : in out Allegro_Transform; src : Allegro_Transform );
pragma Import( C, Al_Copy_Transform, "al_copy_transform" );
procedure Al_Identity_Transform( trans : in out Allegro_Transform );
pragma Import( C, Al_Identity_Transform, "al_identity_transform" );
procedure Al_Build_Transform( trans : in out Allegro_Transform;
x, y : Float;
sx, sy : Float;
theta : Float );
pragma Import( C, Al_Build_Transform, "al_build_transform" );
procedure Al_Translate_Transform( trans : in out Allegro_Transform; x, y : Float );
pragma Import( C, Al_Translate_Transform, "al_translate_transform" );
procedure Al_Rotate_Transform( trans : in out Allegro_Transform; theta : Float );
pragma Import( C, Al_Rotate_Transform, "al_rotate_transform" );
procedure Al_Scale_Transform( trans : in out Allegro_Transform; sx, sy : Float );
pragma Import( C, Al_Scale_Transform, "al_scale_transform" );
procedure Al_Transform_Coordinates( trans : Allegro_Transform; x, y : out Float );
pragma Import( C, Al_Transform_Coordinates, "al_transform_coordinates" );
procedure Al_Compose_Transform( trans : in out Allegro_Transform;
other : Allegro_Transform );
pragma Import( C, Al_Compose_Transform, "al_compose_transform" );
function Al_Get_Current_Transform return access Allegro_Transform;
pragma Import( C, Al_Get_Current_Transform, "al_get_current_transform" );
procedure Al_Invert_Transform( trans : in out Allegro_Transform );
pragma Import( C, Al_Invert_Transform, "al_invert_transform" );
function Al_Check_Inverse( trans : Allegro_Transform; tol : Float ) return Integer;
pragma Import( C, Al_Check_Inverse, "al_check_inverse" );
end Allegro.Transformations;