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