From: Holger Schemel Date: Wed, 29 Jun 2016 19:04:38 +0000 (+0200) Subject: cleanup of function for zooming bitmap (with masked and opaque surfaces) X-Git-Tag: 4.0.0.0~54 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=ba963074f1fde478b3c1abc91dc8c497774ed6c3;p=rocksndiamonds.git cleanup of function for zooming bitmap (with masked and opaque surfaces) --- diff --git a/src/libgame/sdl.c b/src/libgame/sdl.c index abb200fb..eaab2530 100644 --- a/src/libgame/sdl.c +++ b/src/libgame/sdl.c @@ -2202,7 +2202,8 @@ static SDL_Surface *SDLGetOpaqueSurface(SDL_Surface *surface) Bitmap *SDLZoomBitmap(Bitmap *src_bitmap, int dst_width, int dst_height) { Bitmap *dst_bitmap = CreateBitmapStruct(); - SDL_Surface **dst_surface = &dst_bitmap->surface_masked; + SDL_Surface *src_surface = src_bitmap->surface_masked; + SDL_Surface *dst_surface; dst_width = MAX(1, dst_width); /* prevent zero bitmap width */ dst_height = MAX(1, dst_height); /* prevent zero bitmap height */ @@ -2211,18 +2212,21 @@ Bitmap *SDLZoomBitmap(Bitmap *src_bitmap, int dst_width, int dst_height) dst_bitmap->height = dst_height; /* create zoomed temporary surface from source surface */ - *dst_surface = zoomSurface(src_bitmap->surface_masked, dst_width, dst_height); + dst_surface = zoomSurface(src_surface, dst_width, dst_height); /* create native format destination surface from zoomed temporary surface */ - SDLSetNativeSurface(dst_surface); + SDLSetNativeSurface(&dst_surface); /* set color key for zoomed surface from source surface, if defined */ - if (SDLHasColorKey(src_bitmap->surface_masked)) - SDL_SetColorKey(*dst_surface, SET_TRANSPARENT_PIXEL, - SDLGetColorKey(src_bitmap->surface_masked)); + if (SDLHasColorKey(src_surface)) + SDL_SetColorKey(dst_surface, SET_TRANSPARENT_PIXEL, + SDLGetColorKey(src_surface)); /* create native non-transparent surface for opaque blitting */ - dst_bitmap->surface = SDLGetOpaqueSurface(dst_bitmap->surface_masked); + dst_bitmap->surface = SDLGetOpaqueSurface(dst_surface); + + /* set native transparent surface for masked blitting */ + dst_bitmap->surface_masked = dst_surface; return dst_bitmap; }