1. -- 
  2. -- Copyright (c) 2013 Kevin Wellwood 
  3. -- All rights reserved. 
  4. -- 
  5. -- This source code is distributed under the Modified BSD License. For terms and 
  6. -- conditions, see license.txt. 
  7. -- 
  8.  
  9. -- Allegro 5.0.9 - Transformation routines 
  10. package Allegro.Transformations is 
  11.  
  12.     type Float_Matrix_2D is array (Integer range <>, Integer range <>) of Float; 
  13.  
  14.     type Allegro_Transform is 
  15.         record 
  16.             m : Float_Matrix_2D(0..3, 0..3); 
  17.         end record; 
  18.     pragma Convention( C, Allegro_Transform ); 
  19.  
  20.     -- Transformations 
  21.  
  22.     procedure Al_Use_Transform( trans : Allegro_Transform ); 
  23.     pragma Import( C, Al_Use_Transform, "al_use_transform" ); 
  24.  
  25.     procedure Al_Copy_Transform( dest : in out Allegro_Transform; src : Allegro_Transform ); 
  26.     pragma Import( C, Al_Copy_Transform, "al_copy_transform" ); 
  27.  
  28.     procedure Al_Identity_Transform( trans : in out Allegro_Transform ); 
  29.     pragma Import( C, Al_Identity_Transform, "al_identity_transform" ); 
  30.  
  31.     procedure Al_Build_Transform( trans  : in out Allegro_Transform; 
  32.                                   x, y   : Float; 
  33.                                   sx, sy : Float; 
  34.                                   theta  : Float ); 
  35.     pragma Import( C, Al_Build_Transform, "al_build_transform" ); 
  36.  
  37.     procedure Al_Translate_Transform( trans : in out Allegro_Transform; x, y : Float ); 
  38.     pragma Import( C, Al_Translate_Transform, "al_translate_transform" ); 
  39.  
  40.     procedure Al_Rotate_Transform( trans : in out Allegro_Transform; theta : Float ); 
  41.     pragma Import( C, Al_Rotate_Transform, "al_rotate_transform" ); 
  42.  
  43.     procedure Al_Scale_Transform( trans : in out Allegro_Transform; sx, sy : Float ); 
  44.     pragma Import( C, Al_Scale_Transform, "al_scale_transform" ); 
  45.  
  46.     procedure Al_Transform_Coordinates( trans : Allegro_Transform; x, y : out Float ); 
  47.     pragma Import( C, Al_Transform_Coordinates, "al_transform_coordinates" ); 
  48.  
  49.     procedure Al_Compose_Transform( trans : in out Allegro_Transform; 
  50.                                     other : Allegro_Transform ); 
  51.     pragma Import( C, Al_Compose_Transform, "al_compose_transform" ); 
  52.  
  53.     -- returns access to the current transform; don't delete it 
  54.     function Al_Get_Current_Transform return access Allegro_Transform; 
  55.     pragma Import( C, Al_Get_Current_Transform, "al_get_current_transform" ); 
  56.  
  57.     procedure Al_Invert_Transform( trans : in out Allegro_Transform ); 
  58.     pragma Import( C, Al_Invert_Transform, "al_invert_transform" ); 
  59.  
  60.     function Al_Check_Inverse( trans : Allegro_Transform; tol : Float ) return Integer; 
  61.     pragma Import( C, Al_Check_Inverse, "al_check_inverse" ); 
  62.  
  63. end Allegro.Transformations;