# HG changeset patch # User Matti Hamalainen # Date 1425525799 -7200 # Node ID 494fa5998b651d3a0ac049ff1166ac53c81449bf # Parent 782516a8e3dd6cd1fa98215350af4145dbe3be7b Move RGBA mask definitions to static global variables that are chosen at compile time based on endianess. diff -r 782516a8e3dd -r 494fa5998b65 src/dmimage.c --- a/src/dmimage.c Thu Mar 05 05:21:42 2015 +0200 +++ b/src/dmimage.c Thu Mar 05 05:23:19 2015 +0200 @@ -29,31 +29,35 @@ #include "stb_image.c" -SDL_Surface *dmCreateRGBSurfaceFrom(void *data, const int width, const int height, const int depth, const int pitch, const int rmask, const int gmask, const int bmask, const int amask) +static Uint32 +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + dmXrmask = 0xff000000, + dmXgmask = 0x00ff0000, + dmXbmask = 0x0000ff00, + dmXamask = 0x000000ff; +#else + dmXrmask = 0x000000ff, + dmXgmask = 0x0000ff00, + dmXbmask = 0x00ff0000, + dmXamask = 0xff000000; +#endif + + +SDL_Surface *dmCreateRGBSurfaceFrom(void *data, + const int width, const int height, + const int depth, const int pitch, + const int rmask, const int gmask, const int bmask, const int amask) { // Create source surface from given data SDL_Surface *tmp = SDL_CreateRGBSurfaceFrom(data, width, height, depth, pitch, bmask, gmask, rmask, amask); - // Result surface component orders as masks -#if SDL_BYTEORDER == SDL_BIG_ENDIAN - Uint32 - Xrmask = 0xff000000, - Xgmask = 0x00ff0000, - Xbmask = 0x0000ff00, - Xamask = 0x000000ff; -#else - Uint32 - Xrmask = 0x000000ff, - Xgmask = 0x0000ff00, - Xbmask = 0x00ff0000, - Xamask = 0xff000000; -#endif - // Create result conversion surface SDL_Surface *result = NULL, *pixtmp = SDL_CreateRGBSurface( - SDL_SWSURFACE | SDL_SRCALPHA, 16, 16, 32, Xrmask, Xgmask, Xbmask, Xamask); + SDL_SWSURFACE | SDL_SRCALPHA, + 16, 16, 32, + dmXrmask, dmXgmask, dmXbmask, dmXamask); if (tmp != NULL && pixtmp != NULL) { @@ -139,19 +143,8 @@ switch (comp) { case 4: -#if SDL_BYTEORDER == SDL_BIG_ENDIAN - rmask = 0xff000000; - gmask = 0x00ff0000; - bmask = 0x0000ff00; - amask = 0x000000ff; -#else - rmask = 0x000000ff; - gmask = 0x0000ff00; - bmask = 0x00ff0000; - amask = 0xff000000; -#endif result = dmCreateRGBSurfaceFrom(data, width, height, comp * 8, - width * comp, rmask, gmask, bmask, amask); + width * comp, dmXrmask, dmXgmask, dmXbmask, dmXamask); break; case 3: