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. with Interfaces;                        use Interfaces; 
  10.  
  11. -- Allegro 5.0.9 - Color routines 
  12. package Allegro.Color is 
  13.  
  14.     type Allegro_Color is private; 
  15.  
  16.     -- Pixel mapping 
  17.  
  18.     function Al_Map_RGB( r, g, b : Unsigned_8 ) return Allegro_Color; 
  19.     pragma Import( C, Al_Map_RGB, "al_map_rgb" ); 
  20.  
  21.     function Al_Map_RGB_f( r, g, b : Float ) return Allegro_Color; 
  22.     pragma Import( C, Al_Map_RGB_f, "al_map_rgb_f" ); 
  23.  
  24.     function Al_Map_RGBA( r, g, b, a : Unsigned_8 ) return Allegro_Color; 
  25.     pragma Import( C, Al_Map_RGBA, "al_map_rgba" ); 
  26.  
  27.     function Al_Map_RGBA_f( r, g, b, a : Float ) return Allegro_Color; 
  28.     pragma Import( C, Al_Map_RGBA_f, "al_map_rgba_f" ); 
  29.  
  30.     -- Pixel unmapping 
  31.  
  32.     procedure Al_Unmap_RGB( color : Allegro_Color; r, g, b : out Unsigned_8 ); 
  33.     pragma Import( C, Al_Unmap_RGB, "al_unmap_rgb" ); 
  34.  
  35.     procedure Al_Unmap_RGB_f( color : Allegro_Color; r, g, b : out Float ); 
  36.     pragma Import( C, Al_Unmap_RGB_f, "al_unmap_rgb_f" ); 
  37.  
  38.     procedure Al_Unmap_RGBA( color : Allegro_Color; r, g, b, a : out Unsigned_8 ); 
  39.     pragma Import( C, Al_Unmap_RGBA, "al_unmap_rgba" ); 
  40.  
  41.     procedure Al_Unmap_RGBA_f( color : Allegro_Color; r, g, b, a : out Float ); 
  42.     pragma Import( C, Al_Unmap_RGBA_f, "al_unmap_rgba_f" ); 
  43.  
  44.     -- Pixel formats 
  45.  
  46.     type Allegro_Pixel_Format is private; 
  47.     ALLEGRO_PIXEL_FORMAT_ANY               : constant Allegro_Pixel_Format; 
  48.     ALLEGRO_PIXEL_FORMAT_ANY_NO_ALPHA      : constant Allegro_Pixel_Format; 
  49.     ALLEGRO_PIXEL_FORMAT_ANY_WITH_ALPHA    : constant Allegro_Pixel_Format; 
  50.     ALLEGRO_PIXEL_FORMAT_ANY_15_NO_ALPHA   : constant Allegro_Pixel_Format; 
  51.     ALLEGRO_PIXEL_FORMAT_ANY_16_NO_ALPHA   : constant Allegro_Pixel_Format; 
  52.     ALLEGRO_PIXEL_FORMAT_ANY_16_WITH_ALPHA : constant Allegro_Pixel_Format; 
  53.     ALLEGRO_PIXEL_FORMAT_ANY_24_NO_ALPHA   : constant Allegro_Pixel_Format; 
  54.     ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA   : constant Allegro_Pixel_Format; 
  55.     ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA : constant Allegro_Pixel_Format; 
  56.     ALLEGRO_PIXEL_FORMAT_ARGB_8888         : constant Allegro_Pixel_Format; 
  57.     ALLEGRO_PIXEL_FORMAT_RGBA_8888         : constant Allegro_Pixel_Format; 
  58.     ALLEGRO_PIXEL_FORMAT_ARGB_4444         : constant Allegro_Pixel_Format; 
  59.     ALLEGRO_PIXEL_FORMAT_RGB_888           : constant Allegro_Pixel_Format; 
  60.     ALLEGRO_PIXEL_FORMAT_RGB_565           : constant Allegro_Pixel_Format; 
  61.     ALLEGRO_PIXEL_FORMAT_RGB_555           : constant Allegro_Pixel_Format; 
  62.     ALLEGRO_PIXEL_FORMAT_RGBA_5551         : constant Allegro_Pixel_Format; 
  63.     ALLEGRO_PIXEL_FORMAT_ARGB_1555         : constant Allegro_Pixel_Format; 
  64.     ALLEGRO_PIXEL_FORMAT_ABGR_8888         : constant Allegro_Pixel_Format; 
  65.     ALLEGRO_PIXEL_FORMAT_XBGR_8888         : constant Allegro_Pixel_Format; 
  66.     ALLEGRO_PIXEL_FORMAT_BGR_888           : constant Allegro_Pixel_Format; 
  67.     ALLEGRO_PIXEL_FORMAT_BGR_565           : constant Allegro_Pixel_Format; 
  68.     ALLEGRO_PIXEL_FORMAT_BGR_555           : constant Allegro_Pixel_Format; 
  69.     ALLEGRO_PIXEL_FORMAT_RGBX_8888         : constant Allegro_Pixel_Format; 
  70.     ALLEGRO_PIXEL_FORMAT_XRGB_8888         : constant Allegro_Pixel_Format; 
  71.     ALLEGRO_PIXEL_FORMAT_ABGR_F32          : constant Allegro_Pixel_Format; 
  72.     ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE      : constant Allegro_Pixel_Format; 
  73.     ALLEGRO_PIXEL_FORMAT_RGBA_4444         : constant Allegro_Pixel_Format; 
  74.  
  75.     function Image( apf : Allegro_Pixel_Format ) return String; 
  76.  
  77.     function Al_Get_Pixel_Size( format : Allegro_Pixel_Format ) return Integer; 
  78.     pragma Import( C, Al_Get_Pixel_Size, "al_get_pixel_size" ); 
  79.  
  80.     function Al_Get_Pixel_Format_Bits( format : Allegro_Pixel_Format ) return Integer; 
  81.     pragma Import( C, Al_Get_Pixel_Format_Bits, "al_get_pixel_format_bits" ); 
  82.  
  83. private 
  84.  
  85.     type Allegro_Color is 
  86.         record 
  87.             r, g, b, a : Float := 0.0; 
  88.         end record; 
  89.     pragma Convention( C_Pass_By_Copy, Allegro_Color ); 
  90.  
  91.     type Allegro_Pixel_Format is new Integer; 
  92.     ALLEGRO_PIXEL_FORMAT_ANY               : constant Allegro_Pixel_Format := 0; 
  93.     ALLEGRO_PIXEL_FORMAT_ANY_NO_ALPHA      : constant Allegro_Pixel_Format := 1; 
  94.     ALLEGRO_PIXEL_FORMAT_ANY_WITH_ALPHA    : constant Allegro_Pixel_Format := 2; 
  95.     ALLEGRO_PIXEL_FORMAT_ANY_15_NO_ALPHA   : constant Allegro_Pixel_Format := 3; 
  96.     ALLEGRO_PIXEL_FORMAT_ANY_16_NO_ALPHA   : constant Allegro_Pixel_Format := 4; 
  97.     ALLEGRO_PIXEL_FORMAT_ANY_16_WITH_ALPHA : constant Allegro_Pixel_Format := 5; 
  98.     ALLEGRO_PIXEL_FORMAT_ANY_24_NO_ALPHA   : constant Allegro_Pixel_Format := 6; 
  99.     ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA   : constant Allegro_Pixel_Format := 7; 
  100.     ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA : constant Allegro_Pixel_Format := 8; 
  101.     ALLEGRO_PIXEL_FORMAT_ARGB_8888         : constant Allegro_Pixel_Format := 9; 
  102.     ALLEGRO_PIXEL_FORMAT_RGBA_8888         : constant Allegro_Pixel_Format := 10; 
  103.     ALLEGRO_PIXEL_FORMAT_ARGB_4444         : constant Allegro_Pixel_Format := 11; 
  104.     ALLEGRO_PIXEL_FORMAT_RGB_888           : constant Allegro_Pixel_Format := 12; 
  105.     ALLEGRO_PIXEL_FORMAT_RGB_565           : constant Allegro_Pixel_Format := 13; 
  106.     ALLEGRO_PIXEL_FORMAT_RGB_555           : constant Allegro_Pixel_Format := 14; 
  107.     ALLEGRO_PIXEL_FORMAT_RGBA_5551         : constant Allegro_Pixel_Format := 15; 
  108.     ALLEGRO_PIXEL_FORMAT_ARGB_1555         : constant Allegro_Pixel_Format := 16; 
  109.     ALLEGRO_PIXEL_FORMAT_ABGR_8888         : constant Allegro_Pixel_Format := 17; 
  110.     ALLEGRO_PIXEL_FORMAT_XBGR_8888         : constant Allegro_Pixel_Format := 18; 
  111.     ALLEGRO_PIXEL_FORMAT_BGR_888           : constant Allegro_Pixel_Format := 19; 
  112.     ALLEGRO_PIXEL_FORMAT_BGR_565           : constant Allegro_Pixel_Format := 20; 
  113.     ALLEGRO_PIXEL_FORMAT_BGR_555           : constant Allegro_Pixel_Format := 21; 
  114.     ALLEGRO_PIXEL_FORMAT_RGBX_8888         : constant Allegro_Pixel_Format := 22; 
  115.     ALLEGRO_PIXEL_FORMAT_XRGB_8888         : constant Allegro_Pixel_Format := 23; 
  116.     ALLEGRO_PIXEL_FORMAT_ABGR_F32          : constant Allegro_Pixel_Format := 24; 
  117.     ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE      : constant Allegro_Pixel_Format := 25; 
  118.     ALLEGRO_PIXEL_FORMAT_RGBA_4444         : constant Allegro_Pixel_Format := 26; 
  119.  
  120. end Allegro.Color;