/* 
 *  call-seq: 
 *    to_display_alpha()  ->  Surface
 *
 *  Like #to_display except the Surface has an extra channel for alpha (i.e.
 *  opacity). May raise SDLError if a problem occurs.
 *
 *  This function can be used to convert a colorkey to an alpha channel, if the
 *  SRCCOLORKEY flag is set on the surface. The generated surface will then be
 *  transparent (alpha=0) where the pixels match the colorkey, and opaque
 *  (alpha=255) elsewhere. 
 */
VALUE rbgm_surface_dispformalpha(VALUE self)
{
        SDL_Surface *surf, *newsurf;
        Data_Get_Struct(self, SDL_Surface, surf);

  newsurf = SDL_DisplayFormatAlpha( surf );

  if( newsurf == NULL )
  {
    rb_raise(eSDLError,\
             "Could not convert the Surface to display format with alpha channel: %s",\
             SDL_GetError());
  }

  return Data_Wrap_Struct( cSurface,0,SDL_FreeSurface,newsurf );  
}