1. with Allegro.Bitmaps;                   use Allegro.Bitmaps; 
  2. with Interfaces.C;                      use Interfaces.C; 
  3.  
  4. package Allegro.Transparency is 
  5.  
  6.     -- Allegro 4.2.2 - Transparency and patterned drawing 
  7.     -- This package is missing: 
  8.     -- color_map 
  9.     -- create_trans_table 
  10.     -- create_light_table 
  11.     -- create_color_table 
  12.     -- create_blender_table 
  13.  
  14.     type Drawing_Mode_Type is ( 
  15.         DRAW_MODE_SOLID, 
  16.         DRAW_MODE_XOR, 
  17.         DRAW_MODE_COPY_PATTERN, 
  18.         DRAW_MODE_SOLID_PATTERN, 
  19.         DRAW_MODE_MASKED_PATTERN, 
  20.         DRAW_MODE_TRANS 
  21.     ); 
  22.     for Drawing_Mode_Type use ( 
  23.         DRAW_MODE_SOLID          => 0, 
  24.         DRAW_MODE_XOR            => 1, 
  25.         DRAW_MODE_COPY_PATTERN   => 2, 
  26.         DRAW_MODE_SOLID_PATTERN  => 3, 
  27.         DRAW_MODE_MASKED_PATTERN => 4, 
  28.         DRAW_MODE_TRANS          => 5 
  29.     ); 
  30.     for Drawing_Mode_Type'Size use Integer'Size; 
  31.  
  32.     type Blender_Func is 
  33.         access function( x, y, n : C.unsigned_long ) return C.unsigned_long; 
  34.  
  35.     ---------------------------------------------------------------------------- 
  36.  
  37.     procedure Drawing_Mode( mode     : Drawing_Mode_Type; 
  38.                             pattern  : A_Bitmap := null; 
  39.                             x_anchor, 
  40.                             y_ancher : Integer := 0 ); 
  41.  
  42.     procedure Set_Add_Blender( r, g, b, a : Natural ); 
  43.  
  44.     procedure Set_Alpha_Blender; 
  45.  
  46.     procedure Set_Blender_Mode( b15, b16, b24 : Blender_Func; 
  47.                                 r, g, b, a    : Natural ); 
  48.  
  49.     procedure Set_Blender_Mode_Ex( b15,  b16,  b24, b32, 
  50.                                    b15x, b16x, b24x     : Blender_Func; 
  51.                                    r, g, b, a           : Natural ); 
  52.  
  53.     procedure Set_Burn_Blender( r, g, b, a : Natural ); 
  54.  
  55.     procedure Set_Color_Blender( r, g, b, a : Natural ); 
  56.  
  57.     procedure Set_Difference_Blender( r, g, b, a : Natural ); 
  58.  
  59.     procedure Set_Dissolve_Blender( r, g, b, a : Natural ); 
  60.  
  61.     procedure Set_Dodge_Blender( r, g, b, a : Natural ); 
  62.  
  63.     procedure Set_Hue_Blender( r, g, b, a : Natural ); 
  64.  
  65.     procedure Set_Invert_Blender( r, g, b, a : Natural ); 
  66.  
  67.     procedure Set_Luminance_Blender( r, g, b, a : Natural ); 
  68.  
  69.     procedure Set_Multiply_Blender( r, g, b, a : Natural ); 
  70.  
  71.     procedure Set_Saturation_Blender( r, g, b, a : Natural ); 
  72.  
  73.     procedure Set_Screen_Blender( r, g, b, a : Natural ); 
  74.  
  75.     procedure Set_Trans_Blender( r, g, b, a : Natural ); 
  76.  
  77.     procedure Set_Write_Alpha_Blender; 
  78.  
  79.     procedure Solid_Mode; 
  80.  
  81.     procedure XOR_Mode( on : Boolean ); 
  82.  
  83. private 
  84.  
  85.     pragma Convention( C, Blender_Func ); 
  86.  
  87.     pragma Import( C, Drawing_Mode, "drawing_mode" ); 
  88.     pragma Import( C, Set_Add_Blender, "set_add_blender" ); 
  89.     pragma Import( C, Set_Alpha_Blender, "set_alpha_blender" ); 
  90.     pragma Import( C, Set_Blender_Mode, "set_blender_mode" ); 
  91.     pragma Import( C, Set_Blender_Mode_Ex, "set_blender_mode_ex" ); 
  92.     pragma Import( C, Set_Burn_Blender, "set_burn_blender" ); 
  93.     pragma Import( C, Set_Color_Blender, "set_color_blender" ); 
  94.     pragma Import( C, Set_Difference_Blender, "set_difference_blender" ); 
  95.     pragma Import( C, Set_Dissolve_Blender, "set_dissolve_blender" ); 
  96.     pragma Import( C, Set_Dodge_Blender, "set_dodge_blender" ); 
  97.     pragma Import( C, Set_Hue_Blender, "set_hue_blender" ); 
  98.     pragma Import( C, Set_Invert_Blender, "set_invert_blender" ); 
  99.     pragma Import( C, Set_Luminance_Blender, "set_luminance_blender" ); 
  100.     pragma Import( C, Set_Multiply_Blender, "set_multiply_blender" ); 
  101.     pragma Import( C, Set_Saturation_Blender, "set_saturation_blender" ); 
  102.     pragma Import( C, Set_Screen_Blender, "set_screen_blender" ); 
  103.     pragma Import( C, Set_Trans_Blender, "set_trans_blender" ); 
  104.     pragma Import( C, Set_Write_Alpha_Blender, "set_write_alpha_blender" ); 
  105.     pragma Import( C, Solid_Mode, "solid_mode" ); 
  106.  
  107. end Allegro.Transparency;