SDL draw() now supports alpha blitting.
authorRicardo Cruz <rick2@aeiou.pt>
Sun, 9 May 2004 01:13:20 +0000 (01:13 +0000)
committerRicardo Cruz <rick2@aeiou.pt>
Sun, 9 May 2004 01:13:20 +0000 (01:13 +0000)
SVN-Revision: 1049

src/texture.cpp

index df33c74..9428815 100644 (file)
@@ -652,16 +652,38 @@ SurfaceSDL::draw(float x, float y, Uint8 alpha, bool update)
   if(alpha != 255)
   {
     /* Copy the SDL surface, then make it using alpha and use it to blit into the screen */
+/*
     SDL_Surface* sdl_surface_copy = SDL_CreateRGBSurface (sdl_surface->flags,
                                     sdl_surface->w, sdl_surface->h, sdl_surface->format->BitsPerPixel,
-                                    sdl_surface->format->Rmask, sdl_surface->format->Gmask, sdl_surface->format->Bmask,
+                                    sdl_surface->format->Rmask, sdl_surface->format->Gmask,
+                                    sdl_surface->format->Bmask,
                                     sdl_surface->format->Amask);
 
     SDL_BlitSurface(sdl_surface, NULL, sdl_surface_copy, NULL);
 
     SDL_SetAlpha(sdl_surface_copy ,SDL_SRCALPHA,alpha);
 
-    int ret = SDL_BlitSurface(sdl_surface_copy, NULL, screen, &dest);
+    int ret = SDL_BlitSurface(sdl_surface_copy, NULL, screen, &dest); */
+
+/* *TEST* Create a Surface, make it using colorkey, blit surface into temp, apply alpha
+to temp sur, blit the temp into the screen */
+
+    SDL_Surface* sdl_surface_copy = SDL_CreateRGBSurface (sdl_surface->flags,
+                                    sdl_surface->w, sdl_surface->h, sdl_surface->format->BitsPerPixel,
+                                    sdl_surface->format->Rmask, sdl_surface->format->Gmask,
+                                    sdl_surface->format->Bmask,
+                                    0);
+int colorkey = SDL_MapRGB(sdl_surface_copy->format, 255, 0, 255);
+SDL_FillRect(sdl_surface_copy, NULL, colorkey);
+SDL_SetColorKey(sdl_surface_copy, SDL_SRCCOLORKEY, colorkey);
+
+
+SDL_BlitSurface(sdl_surface, NULL, sdl_surface_copy, NULL);
+SDL_SetAlpha(sdl_surface_copy ,SDL_SRCALPHA,alpha);
+
+int ret = SDL_BlitSurface(sdl_surface_copy, NULL, screen, &dest);
+
+
 
     if (update == UPDATE)
       SDL_UpdateRect(screen, dest.x, dest.y, dest.w, dest.h);