/*
 *  call-seq:
 *     set_alpha(alpha, flags=Rubygame::SRC_ALPHA)
 *
 *  Set the per-surface alpha (opacity; non-transparency) of the surface.
 *
 *  This function takes these arguments:
 *  alpha:: requested opacity of the surface. Alpha must be from 0 
 *          (fully transparent) to 255 (fully opaque).
 *  flags:: 0 or Rubygame::SRC_ALPHA (default). Most people will want the
 *          default, in which case this argument can be omitted. For advanced
 *          users: this flag affects the surface as described in the docs for
 *          the SDL C function, SDL_SetAlpha.
 */
VALUE rbgm_surface_set_alpha(int argc, VALUE *argv, VALUE self)
{
        SDL_Surface *surf;
        Uint8 alpha;
        Uint32 flags = SDL_SRCALPHA;
        VALUE valpha, vflags;

        rb_scan_args(argc, argv, "11", &valpha, &vflags);

        if( !NIL_P(vflags) )
        {
                flags = NUM2UINT(vflags);
        }

        alpha = NUM2UINT(valpha);

        Data_Get_Struct(self, SDL_Surface, surf);
        if( SDL_SetAlpha(surf,flags,alpha) != 0 )
                rb_raise(eSDLError, "%s", SDL_GetError());
        return self;
}