local @IconHandle
{
   Handle xorMask;
   Handle andMask;
}

object Prima::Icon( Prima::Image)
{
   unsigned char*    mask;
   int               maskType;
   int               maskLine;
   int               maskSize;
   Color             maskColor;
   int               maskIndex;
   int               autoMasking;
   property SV *     mask;
   property int      maskType;
   property Color    maskColor;
   property int      maskIndex;
   property int      autoMasking;
   method Handle     bitmap();
   method void       init( HV * profile);
   method Handle     extract( int x, int y, int width, int height);
   method Handle     dup();
   method void       set( HV * profile);
   method IconHandle split();
   method void       combine( Handle xorMask, Handle andMask);
   method void       premultiply_alpha(SV * alpha = nilSV);
   method Bool       alpha(int alpha, int x1=-1, int y1=-1, int x2=-1, int y2=-1);
   c_only void       create_empty( int width, int height, int type);
   c_only void       create_empty_icon( int width, int height, int type, int maskType);
   c_only void       update_change();
   c_only void       stretch( int width, int height);
   c_only Byte*      convert_mask( int type );
} 
