1. -- 
  2. -- Copyright (c) 2012 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 4.4.2 - Palette routines 
  10. -- This package is missing: 
  11. -- _set_color, generate_optimized_palette, default_palette, black_palette, 
  12. -- desktop_palette 
  13. package Allegro.Palettes is 
  14.  
  15.     PAL_SIZE : constant Integer := 256; 
  16.  
  17.     type RGB is private; 
  18.     type A_RGB is access all RGB; 
  19.  
  20.     type Fade_Speed is range 1..64; 
  21.     for Fade_Speed'Size use Integer'Size; 
  22.  
  23.     type Interpolate_Type is range 0..64; 
  24.     for Interpolate_Type'Size use Integer'Size; 
  25.  
  26.     type Palette_Index is range 0..PAL_SIZE-1; 
  27.     for Palette_Index'Size use Integer'Size; 
  28.  
  29.     type Palette is array (Palette_Index) of RGB; 
  30.  
  31.     ---------------------------------------------------------------------------- 
  32.  
  33.     procedure Fade_From( source, dest : Palette; speed : Fade_Speed ); 
  34.  
  35.     procedure Fade_From_Range( source, 
  36.                                dest   : Palette; 
  37.                                speed  : Fade_Speed; 
  38.                                from, 
  39.                                to     : Palette_Index ); 
  40.  
  41.     procedure Fade_In( p : Palette; speed : Fade_Speed ); 
  42.  
  43.     procedure Fade_In_Range( p : Palette; speed : Fade_Speed; from, to : Palette_Index ); 
  44.  
  45.     procedure Fade_Interpolate( source, 
  46.                                 dest   : Palette; 
  47.                                 output : in out Palette; 
  48.                                 pos    : Interpolate_Type; 
  49.                                 from, 
  50.                                 to     : Palette_Index ); 
  51.  
  52.     procedure Fade_Out( speed : Fade_Speed ); 
  53.  
  54.     procedure Fade_Out_Range( speed : Fade_Speed; from, to : Palette_Index ); 
  55.  
  56.     procedure Generate_332_Palette( pal : in out Palette ); 
  57.  
  58.     procedure Get_Color( index : Palette_Index; p : A_RGB ); 
  59.  
  60.     procedure Get_Palette( p : in out Palette ); 
  61.  
  62.     procedure Get_Palette_Range( p : in out Palette; from, to : Palette_Index ); 
  63.  
  64.     procedure Select_Palette( p : Palette ); 
  65.  
  66.     procedure Set_Color( index : Palette_Index; p : A_RGB ); 
  67.  
  68.     procedure Set_Palette( p : Palette ); 
  69.  
  70.     procedure Set_Palette_Range( p : Palette; from, to : Palette_Index; vsync : Boolean ); 
  71.  
  72.     procedure Unselect_Palette; 
  73.  
  74. private 
  75.  
  76.     type RGB is 
  77.         record 
  78.             r, g, b : Unsigned_8; 
  79.             filler  : Unsigned_8; 
  80.         end record; 
  81.     for RGB'Size use 32; 
  82.  
  83.     ---------------------------------------------------------------------------- 
  84.  
  85.     pragma Convention( C, Palette ); 
  86.     pragma Convention( C, RGB ); 
  87.  
  88.     pragma Import( C, Fade_From, "fade_from" ); 
  89.     pragma Import( C, Fade_From_Range, "fade_from_range" ); 
  90.     pragma Import( C, Fade_In, "fade_in" ); 
  91.     pragma Import( C, Fade_In_Range, "fade_in_range" ); 
  92.     pragma Import( C, Fade_Interpolate, "fade_interpolate" ); 
  93.     pragma Import( C, Fade_Out, "fade_out" ); 
  94.     pragma Import( C, Fade_Out_Range, "fade_out_range" ); 
  95.     pragma Import( C, Generate_332_Palette, "generate_332_palette" ); 
  96.     pragma Import( C, Get_Color, "get_color" ); 
  97.     pragma Import( C, Get_Palette, "get_palette" ); 
  98.     pragma Import( C, Get_Palette_Range, "get_palette_range" ); 
  99.     pragma Import( C, Select_Palette, "select_palette" ); 
  100.     pragma Import( C, Set_Color, "set_color" ); 
  101.     pragma Import( C, Set_Palette, "set_palette" ); 
  102.     pragma Import( C, Unselect_Palette, "unselect_palette" ); 
  103.  
  104. end Allegro.Palettes;