Author: cazfi Date: Tue Nov 3 20:50:40 2015 New Revision: 30391 URL: http://svn.gna.org/viewcvs/freeciv?rev=30391&view=rev Log: Added paletted pngs support to sdl2-client.
See bug #24014 Modified: trunk/client/gui-sdl2/graphics.c trunk/client/gui-sdl2/graphics.h trunk/client/gui-sdl2/sprite.c Modified: trunk/client/gui-sdl2/graphics.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl2/graphics.c?rev=30391&r1=30390&r2=30391&view=diff ============================================================================== --- trunk/client/gui-sdl2/graphics.c (original) +++ trunk/client/gui-sdl2/graphics.c Tue Nov 3 20:50:40 2015 @@ -244,22 +244,11 @@ { SDL_Surface *pDest = NULL; int row, col; - // bool free_pMask = FALSE; Uint32 *pSrc_Pixel = NULL; Uint32 *pDest_Pixel = NULL; Uint32 *pMask_Pixel = NULL; unsigned char src_alpha, mask_alpha; -#if 0 - if (!pMask->format->Amask) { - pMask = SDL_DisplayFormatAlpha(pMask); - free_pMask = TRUE; - } - - pSrc = SDL_DisplayFormatAlpha(pSrc); - pDest = SDL_DisplayFormatAlpha(pSrc); -#endif /* 0 */ - pDest = copy_surface(pSrc); lock_surf(pSrc); @@ -288,14 +277,6 @@ unlock_surf(pDest); unlock_surf(pMask); unlock_surf(pSrc); - -#if 0 - if (free_pMask) { - FREESURFACE(pMask); - } - - FREESURFACE(pSrc); /* result of SDL_DisplayFormatAlpha() */ -#endif /* 0 */ return pDest; } @@ -396,6 +377,14 @@ SDL_Surface *create_surf(int width, int height, Uint32 flags) { return create_surf_with_format(main_surface->format, width, height, flags); +} + +/************************************************************************** + Convert surface to the main window format. +**************************************************************************/ +SDL_Surface *convert_surf(SDL_Surface *surf_in) +{ + return SDL_ConvertSurface(surf_in, main_surface->format, 0); } /************************************************************************** Modified: trunk/client/gui-sdl2/graphics.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl2/graphics.h?rev=30391&r1=30390&r2=30391&view=diff ============================================================================== --- trunk/client/gui-sdl2/graphics.h (original) +++ trunk/client/gui-sdl2/graphics.h Tue Nov 3 20:50:40 2015 @@ -232,6 +232,7 @@ SDL_Surface *create_surf_with_format(SDL_PixelFormat *pf, int width, int height, Uint32 flags); SDL_Surface *create_surf(int width, int height, Uint32 flags); +SDL_Surface *convert_surf(SDL_Surface *surf_in); SDL_Surface *create_filled_surface(Uint16 w, Uint16 h, Uint32 iFlags, SDL_Color *pColor); Modified: trunk/client/gui-sdl2/sprite.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl2/sprite.c?rev=30391&r1=30390&r2=30391&view=diff ============================================================================== --- trunk/client/gui-sdl2/sprite.c (original) +++ trunk/client/gui-sdl2/sprite.c Tue Nov 3 20:50:40 2015 @@ -55,27 +55,21 @@ ****************************************************************************/ struct sprite *load_gfxfile(const char *filename) { - SDL_Surface *pNew = NULL; - SDL_Surface *pBuf = NULL; + SDL_Surface *pbuf = NULL; - if ((pBuf = IMG_Load(filename)) == NULL) { + if ((pbuf = IMG_Load(filename)) == NULL) { log_error(_("load_gfxfile: Unable to load graphic file %s!"), filename); return NULL; /* Should I use abort() ? */ } -#if 0 - if (pBuf->flags & SDL_SRCCOLORKEY) { - /* convert colorkey to alpha */ - SDL_SetColorKey(pBuf, SDL_SRCCOLORKEY, pBuf->format->colorkey); - pNew = SDL_DisplayFormatAlpha(pBuf); - FREESURFACE(pBuf); - pBuf = pNew; + if (pbuf->format->palette != NULL) { + SDL_Surface *pnew = convert_surf(pbuf); + + FREESURFACE(pbuf); + pbuf = pnew; } -#endif /* 0 */ - pNew = pBuf; - - return ctor_sprite(pNew); + return ctor_sprite(pbuf); } /**************************************************************************** _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits