src/video/SDL_pixels.c
author Sam Lantinga <slouken@libsdl.org>
Mon, 07 Mar 2011 00:30:05 -0800
changeset 5438 b705640cb34a
parent 5437 ce10653e370c
child 5439 3a778c6c0269
permissions -rw-r--r--
Fixed bitmap order interpretation; SDL defaults to MSB ordering so a bitstream corresponds to a pixel stream. The bitmap ordering is defined such that the numbering refers to the pixel index from left to right, and the number position refers to the bit position in the byte. SDL_BITMAPORDER_4321 is the fourth pixel at the high bit and the first pixel at the low bit (LSBFirst) SDL_BITMAPORDER_1234 is the first pixel at the high bit and the fourth pixel at the low bit (MSBFirst)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     1
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     2
    SDL - Simple DirectMedia Layer
5262
b530ef003506 Happy 2011! :)
Sam Lantinga <slouken@libsdl.org>
parents: 5243
diff changeset
     3
    Copyright (C) 1997-2011 Sam Lantinga
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     4
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     5
    This library is free software; you can redistribute it and/or
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1057
diff changeset
     6
    modify it under the terms of the GNU Lesser General Public
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     7
    License as published by the Free Software Foundation; either
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1057
diff changeset
     8
    version 2.1 of the License, or (at your option) any later version.
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
     9
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    10
    This library is distributed in the hope that it will be useful,
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1057
diff changeset
    13
    Lesser General Public License for more details.
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    14
1312
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1057
diff changeset
    15
    You should have received a copy of the GNU Lesser General Public
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1057
diff changeset
    16
    License along with this library; if not, write to the Free Software
c9b51268668f Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents: 1057
diff changeset
    17
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    18
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    19
    Sam Lantinga
252
e8157fcb3114 Updated the source with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents: 50
diff changeset
    20
    slouken@libsdl.org
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    21
*/
1402
d910939febfa Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents: 1358
diff changeset
    22
#include "SDL_config.h"
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    23
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    24
/* General (mostly internal) pixel/color manipulation routines for SDL */
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    25
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    26
#include "SDL_endian.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    27
#include "SDL_video.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    28
#include "SDL_sysvideo.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    29
#include "SDL_blit.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    30
#include "SDL_pixels_c.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    31
#include "SDL_RLEaccel_c.h"
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    32
3555
7549b986ccb1 The SDL_PaletteWatch structure is really internal-only.
Sam Lantinga <slouken@libsdl.org>
parents: 3484
diff changeset
    33
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
    34
/* Helper functions */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    35
4982
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    36
const char*
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    37
SDL_GetPixelFormatName(Uint32 format)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    38
{
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    39
    switch (format) {
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    40
#define CASE(X) case X: return #X;
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    41
    CASE(SDL_PIXELFORMAT_INDEX1LSB)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    42
    CASE(SDL_PIXELFORMAT_INDEX1MSB)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    43
    CASE(SDL_PIXELFORMAT_INDEX4LSB)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    44
    CASE(SDL_PIXELFORMAT_INDEX4MSB)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    45
    CASE(SDL_PIXELFORMAT_INDEX8)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    46
    CASE(SDL_PIXELFORMAT_RGB332)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    47
    CASE(SDL_PIXELFORMAT_RGB444)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    48
    CASE(SDL_PIXELFORMAT_RGB555)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    49
    CASE(SDL_PIXELFORMAT_BGR555)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    50
    CASE(SDL_PIXELFORMAT_ARGB4444)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    51
    CASE(SDL_PIXELFORMAT_RGBA4444)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    52
    CASE(SDL_PIXELFORMAT_ABGR4444)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    53
    CASE(SDL_PIXELFORMAT_BGRA4444)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    54
    CASE(SDL_PIXELFORMAT_ARGB1555)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    55
    CASE(SDL_PIXELFORMAT_RGBA5551)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    56
    CASE(SDL_PIXELFORMAT_ABGR1555)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    57
    CASE(SDL_PIXELFORMAT_BGRA5551)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    58
    CASE(SDL_PIXELFORMAT_RGB565)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    59
    CASE(SDL_PIXELFORMAT_BGR565)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    60
    CASE(SDL_PIXELFORMAT_RGB24)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    61
    CASE(SDL_PIXELFORMAT_BGR24)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    62
    CASE(SDL_PIXELFORMAT_RGB888)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    63
    CASE(SDL_PIXELFORMAT_BGR888)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    64
    CASE(SDL_PIXELFORMAT_ARGB8888)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    65
    CASE(SDL_PIXELFORMAT_RGBA8888)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    66
    CASE(SDL_PIXELFORMAT_ABGR8888)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    67
    CASE(SDL_PIXELFORMAT_BGRA8888)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    68
    CASE(SDL_PIXELFORMAT_ARGB2101010)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    69
    CASE(SDL_PIXELFORMAT_YV12)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    70
    CASE(SDL_PIXELFORMAT_IYUV)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    71
    CASE(SDL_PIXELFORMAT_YUY2)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    72
    CASE(SDL_PIXELFORMAT_UYVY)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    73
    CASE(SDL_PIXELFORMAT_YVYU)
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    74
#undef CASE
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    75
    default:
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    76
        return "SDL_PIXELFORMAT_UNKNOWN";
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    77
    }
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    78
}
660d3a432102 Added some missing pixel formats and SDL_GetPixelFormatName()
Sam Lantinga <slouken@libsdl.org>
parents: 3697
diff changeset
    79
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    80
SDL_bool
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    81
SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    82
                           Uint32 * Gmask, Uint32 * Bmask, Uint32 * Amask)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    83
{
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    84
    Uint32 masks[4];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    85
5432
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
    86
    /* This function doesn't work with FourCC pixel formats */
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
    87
    if (SDL_ISPIXELFORMAT_FOURCC(format)) {
5433
1b6eee840e26 Better error reporting in allocating a pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5432
diff changeset
    88
        SDL_SetError("FOURCC pixel formats are not supported");
5432
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
    89
        return SDL_FALSE;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
    90
    }
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
    91
 
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    92
    /* Initialize the values here */
3284
2b95b2c0b6d4 Fixed compatibility with SDL 1.2 pixel format (24 bits per pixel of color data with 4 bytes per pixel == 32 bpp)
Sam Lantinga <slouken@libsdl.org>
parents: 3182
diff changeset
    93
    if (SDL_BYTESPERPIXEL(format) <= 2) {
2b95b2c0b6d4 Fixed compatibility with SDL 1.2 pixel format (24 bits per pixel of color data with 4 bytes per pixel == 32 bpp)
Sam Lantinga <slouken@libsdl.org>
parents: 3182
diff changeset
    94
        *bpp = SDL_BITSPERPIXEL(format);
2b95b2c0b6d4 Fixed compatibility with SDL 1.2 pixel format (24 bits per pixel of color data with 4 bytes per pixel == 32 bpp)
Sam Lantinga <slouken@libsdl.org>
parents: 3182
diff changeset
    95
    } else {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    96
        *bpp = SDL_BYTESPERPIXEL(format) * 8;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    97
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    98
    *Rmask = *Gmask = *Bmask = *Amask = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
    99
3557
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   100
    if (format == SDL_PIXELFORMAT_RGB24) {
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   101
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   102
        *Rmask = 0x00FF0000;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   103
        *Gmask = 0x0000FF00;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   104
        *Bmask = 0x000000FF;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   105
#else
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   106
        *Rmask = 0x000000FF;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   107
        *Gmask = 0x0000FF00;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   108
        *Bmask = 0x00FF0000;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   109
#endif
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   110
        return SDL_TRUE;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   111
    }
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   112
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   113
    if (format == SDL_PIXELFORMAT_BGR24) {
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   114
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   115
        *Rmask = 0x000000FF;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   116
        *Gmask = 0x0000FF00;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   117
        *Bmask = 0x00FF0000;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   118
#else
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   119
        *Rmask = 0x00FF0000;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   120
        *Gmask = 0x0000FF00;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   121
        *Bmask = 0x000000FF;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   122
#endif
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   123
        return SDL_TRUE;
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   124
    }
7184580ab756 Added support for SDL_PIXELFORMAT_RGB24 and SDL_PIXELFORMAT_BGR24 to SDL_PixelFormatEnumToMasks()
Sam Lantinga <slouken@libsdl.org>
parents: 3555
diff changeset
   125
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   126
    if (SDL_PIXELTYPE(format) != SDL_PIXELTYPE_PACKED8 &&
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   127
        SDL_PIXELTYPE(format) != SDL_PIXELTYPE_PACKED16 &&
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   128
        SDL_PIXELTYPE(format) != SDL_PIXELTYPE_PACKED32) {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   129
        /* Not a format that uses masks */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   130
        return SDL_TRUE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   131
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   132
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   133
    switch (SDL_PIXELLAYOUT(format)) {
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   134
    case SDL_PACKEDLAYOUT_332:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   135
        masks[0] = 0x00000000;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   136
        masks[1] = 0x000000E0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   137
        masks[2] = 0x0000001C;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   138
        masks[3] = 0x00000003;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   139
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   140
    case SDL_PACKEDLAYOUT_4444:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   141
        masks[0] = 0x0000F000;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   142
        masks[1] = 0x00000F00;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   143
        masks[2] = 0x000000F0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   144
        masks[3] = 0x0000000F;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   145
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   146
    case SDL_PACKEDLAYOUT_1555:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   147
        masks[0] = 0x00008000;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   148
        masks[1] = 0x00007C00;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   149
        masks[2] = 0x000003E0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   150
        masks[3] = 0x0000001F;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   151
        break;
3163
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   152
    case SDL_PACKEDLAYOUT_5551:
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   153
        masks[0] = 0x0000F800;
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   154
        masks[1] = 0x000007C0;
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   155
        masks[2] = 0x0000003E;
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   156
        masks[3] = 0x00000001;
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   157
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   158
    case SDL_PACKEDLAYOUT_565:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   159
        masks[0] = 0x00000000;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   160
        masks[1] = 0x0000F800;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   161
        masks[2] = 0x000007E0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   162
        masks[3] = 0x0000001F;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   163
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   164
    case SDL_PACKEDLAYOUT_8888:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   165
        masks[0] = 0xFF000000;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   166
        masks[1] = 0x00FF0000;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   167
        masks[2] = 0x0000FF00;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   168
        masks[3] = 0x000000FF;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   169
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   170
    case SDL_PACKEDLAYOUT_2101010:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   171
        masks[0] = 0xC0000000;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   172
        masks[1] = 0x3FF00000;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   173
        masks[2] = 0x000FFC00;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   174
        masks[3] = 0x000003FF;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   175
        break;
3163
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   176
    case SDL_PACKEDLAYOUT_1010102:
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   177
        masks[0] = 0xFFC00000;
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   178
        masks[1] = 0x003FF000;
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   179
        masks[2] = 0x00000FFC;
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   180
        masks[3] = 0x00000003;
a252014ce27d Support for BGR565 pixel format has been added, mainly for OpenGL ES renderer. OpenGL ES renderer now have new texture formats.
Mike Gorchak <lestat@i.com.ua>
parents: 2990
diff changeset
   181
        break;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   182
    default:
3484
fed6d4c6c693 Set the error so someone can get more information
Sam Lantinga <slouken@libsdl.org>
parents: 3284
diff changeset
   183
        SDL_SetError("Unknown pixel format");
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   184
        return SDL_FALSE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   185
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   186
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   187
    switch (SDL_PIXELORDER(format)) {
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   188
    case SDL_PACKEDORDER_XRGB:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   189
        *Rmask = masks[1];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   190
        *Gmask = masks[2];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   191
        *Bmask = masks[3];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   192
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   193
    case SDL_PACKEDORDER_RGBX:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   194
        *Rmask = masks[0];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   195
        *Gmask = masks[1];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   196
        *Bmask = masks[2];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   197
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   198
    case SDL_PACKEDORDER_ARGB:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   199
        *Amask = masks[0];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   200
        *Rmask = masks[1];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   201
        *Gmask = masks[2];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   202
        *Bmask = masks[3];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   203
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   204
    case SDL_PACKEDORDER_RGBA:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   205
        *Rmask = masks[0];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   206
        *Gmask = masks[1];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   207
        *Bmask = masks[2];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   208
        *Amask = masks[3];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   209
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   210
    case SDL_PACKEDORDER_XBGR:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   211
        *Bmask = masks[1];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   212
        *Gmask = masks[2];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   213
        *Rmask = masks[3];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   214
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   215
    case SDL_PACKEDORDER_BGRX:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   216
        *Bmask = masks[0];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   217
        *Gmask = masks[1];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   218
        *Rmask = masks[2];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   219
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   220
    case SDL_PACKEDORDER_BGRA:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   221
        *Bmask = masks[0];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   222
        *Gmask = masks[1];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   223
        *Rmask = masks[2];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   224
        *Amask = masks[3];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   225
        break;
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   226
    case SDL_PACKEDORDER_ABGR:
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   227
        *Amask = masks[0];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   228
        *Bmask = masks[1];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   229
        *Gmask = masks[2];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   230
        *Rmask = masks[3];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   231
        break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   232
    default:
3484
fed6d4c6c693 Set the error so someone can get more information
Sam Lantinga <slouken@libsdl.org>
parents: 3284
diff changeset
   233
        SDL_SetError("Unknown pixel format");
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   234
        return SDL_FALSE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   235
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   236
    return SDL_TRUE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   237
}
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   238
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   239
Uint32
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   240
SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   241
                           Uint32 Amask)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   242
{
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   243
    switch (bpp) {
5437
ce10653e370c We explicitly don't know how to handle 1 and 4 bpp pixel formats.
Sam Lantinga <slouken@libsdl.org>
parents: 5436
diff changeset
   244
    case 1:
5438
b705640cb34a Fixed bitmap order interpretation; SDL defaults to MSB ordering so a bitstream corresponds to a pixel stream.
Sam Lantinga <slouken@libsdl.org>
parents: 5437
diff changeset
   245
        /* SDL defaults to MSB ordering */
b705640cb34a Fixed bitmap order interpretation; SDL defaults to MSB ordering so a bitstream corresponds to a pixel stream.
Sam Lantinga <slouken@libsdl.org>
parents: 5437
diff changeset
   246
        return SDL_PIXELFORMAT_INDEX1MSB;
5437
ce10653e370c We explicitly don't know how to handle 1 and 4 bpp pixel formats.
Sam Lantinga <slouken@libsdl.org>
parents: 5436
diff changeset
   247
    case 4:
5438
b705640cb34a Fixed bitmap order interpretation; SDL defaults to MSB ordering so a bitstream corresponds to a pixel stream.
Sam Lantinga <slouken@libsdl.org>
parents: 5437
diff changeset
   248
        /* SDL defaults to MSB ordering */
b705640cb34a Fixed bitmap order interpretation; SDL defaults to MSB ordering so a bitstream corresponds to a pixel stream.
Sam Lantinga <slouken@libsdl.org>
parents: 5437
diff changeset
   249
        return SDL_PIXELFORMAT_INDEX4MSB;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   250
    case 8:
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   251
        if (Rmask == 0) {
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   252
            return SDL_PIXELFORMAT_INDEX8;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   253
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   254
        if (Rmask == 0xE0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   255
            Gmask == 0x1C &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   256
            Bmask == 0x03 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   257
            Amask == 0x00) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   258
            return SDL_PIXELFORMAT_RGB332;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   259
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   260
        break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   261
    case 12:
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   262
        if (Rmask == 0) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   263
            return SDL_PIXELFORMAT_RGB444;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   264
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   265
        if (Rmask == 0x0F00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   266
            Gmask == 0x00F0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   267
            Bmask == 0x000F &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   268
            Amask == 0x0000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   269
            return SDL_PIXELFORMAT_RGB444;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   270
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   271
        break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   272
    case 15:
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   273
        if (Rmask == 0) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   274
            return SDL_PIXELFORMAT_RGB555;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   275
        }
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   276
        /* Fall through to 16-bit checks */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   277
    case 16:
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   278
        if (Rmask == 0) {
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   279
            return SDL_PIXELFORMAT_RGB565;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   280
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   281
        if (Rmask == 0x7C00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   282
            Gmask == 0x03E0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   283
            Bmask == 0x001F &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   284
            Amask == 0x0000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   285
            return SDL_PIXELFORMAT_RGB555;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   286
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   287
        if (Rmask == 0x001F &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   288
            Gmask == 0x03E0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   289
            Bmask == 0x7C00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   290
            Amask == 0x0000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   291
            return SDL_PIXELFORMAT_BGR555;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   292
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   293
        if (Rmask == 0x0F00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   294
            Gmask == 0x00F0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   295
            Bmask == 0x000F &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   296
            Amask == 0xF000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   297
            return SDL_PIXELFORMAT_ARGB4444;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   298
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   299
        if (Rmask == 0xF000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   300
            Gmask == 0x0F00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   301
            Bmask == 0x00F0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   302
            Amask == 0x000F) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   303
            return SDL_PIXELFORMAT_RGBA4444;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   304
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   305
        if (Rmask == 0x000F &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   306
            Gmask == 0x00F0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   307
            Bmask == 0x0F00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   308
            Amask == 0xF000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   309
            return SDL_PIXELFORMAT_ABGR4444;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   310
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   311
        if (Rmask == 0x00F0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   312
            Gmask == 0x0F00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   313
            Bmask == 0xF000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   314
            Amask == 0x000F) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   315
            return SDL_PIXELFORMAT_BGRA4444;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   316
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   317
        if (Rmask == 0x7C00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   318
            Gmask == 0x03E0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   319
            Bmask == 0x001F &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   320
            Amask == 0x8000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   321
            return SDL_PIXELFORMAT_ARGB1555;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   322
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   323
        if (Rmask == 0xF800 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   324
            Gmask == 0x07C0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   325
            Bmask == 0x003E &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   326
            Amask == 0x0001) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   327
            return SDL_PIXELFORMAT_RGBA5551;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   328
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   329
        if (Rmask == 0x001F &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   330
            Gmask == 0x03E0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   331
            Bmask == 0x7C00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   332
            Amask == 0x8000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   333
            return SDL_PIXELFORMAT_ABGR1555;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   334
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   335
        if (Rmask == 0x003E &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   336
            Gmask == 0x07C0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   337
            Bmask == 0xF800 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   338
            Amask == 0x0001) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   339
            return SDL_PIXELFORMAT_BGRA5551;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   340
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   341
        if (Rmask == 0xF800 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   342
            Gmask == 0x07E0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   343
            Bmask == 0x001F &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   344
            Amask == 0x0000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   345
            return SDL_PIXELFORMAT_RGB565;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   346
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   347
        if (Rmask == 0x001F &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   348
            Gmask == 0x07E0 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   349
            Bmask == 0xF800 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   350
            Amask == 0x0000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   351
            return SDL_PIXELFORMAT_BGR565;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   352
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   353
        break;
3182
9f82979eaaf0 Support for 24 bpp pixel formats has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3163
diff changeset
   354
    case 24:
9f82979eaaf0 Support for 24 bpp pixel formats has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3163
diff changeset
   355
        switch (Rmask) {
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   356
        case 0:
3182
9f82979eaaf0 Support for 24 bpp pixel formats has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3163
diff changeset
   357
        case 0x00FF0000:
3597
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   358
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   359
            return SDL_PIXELFORMAT_RGB24;
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   360
#else
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   361
            return SDL_PIXELFORMAT_BGR24;
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   362
#endif
3182
9f82979eaaf0 Support for 24 bpp pixel formats has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3163
diff changeset
   363
        case 0x000000FF:
3597
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   364
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   365
            return SDL_PIXELFORMAT_BGR24;
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   366
#else
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   367
            return SDL_PIXELFORMAT_RGB24;
7dec3fe9b580 Fixed bug #912
Sam Lantinga <slouken@libsdl.org>
parents: 3557
diff changeset
   368
#endif
3182
9f82979eaaf0 Support for 24 bpp pixel formats has been added.
Mike Gorchak <lestat@i.com.ua>
parents: 3163
diff changeset
   369
        }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   370
    case 32:
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   371
        if (Rmask == 0) {
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   372
            return SDL_PIXELFORMAT_RGB888;
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   373
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   374
        if (Rmask == 0x00FF0000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   375
            Gmask == 0x0000FF00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   376
            Bmask == 0x000000FF &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   377
            Amask == 0x00000000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   378
            return SDL_PIXELFORMAT_RGB888;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   379
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   380
        if (Rmask == 0x000000FF &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   381
            Gmask == 0x0000FF00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   382
            Bmask == 0x00FF0000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   383
            Amask == 0x00000000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   384
            return SDL_PIXELFORMAT_BGR888;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   385
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   386
        if (Rmask == 0x00FF0000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   387
            Gmask == 0x0000FF00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   388
            Bmask == 0x000000FF &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   389
            Amask == 0xFF000000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   390
            return SDL_PIXELFORMAT_ARGB8888;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   391
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   392
        if (Rmask == 0xFF000000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   393
            Gmask == 0x00FF0000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   394
            Bmask == 0x0000FF00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   395
            Amask == 0x000000FF) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   396
            return SDL_PIXELFORMAT_RGBA8888;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   397
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   398
        if (Rmask == 0x000000FF &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   399
            Gmask == 0x0000FF00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   400
            Bmask == 0x00FF0000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   401
            Amask == 0xFF000000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   402
            return SDL_PIXELFORMAT_ABGR8888;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   403
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   404
        if (Rmask == 0x0000FF00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   405
            Gmask == 0x00FF0000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   406
            Bmask == 0xFF000000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   407
            Amask == 0x000000FF) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   408
            return SDL_PIXELFORMAT_BGRA8888;
5350
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   409
        }
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   410
        if (Rmask == 0x3FF00000 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   411
            Gmask == 0x000FFC00 &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   412
            Bmask == 0x000003FF &&
95712d32f0ed Autogenerated full mask checks for pixel format match
Sam Lantinga <slouken@libsdl.org>
parents: 5295
diff changeset
   413
            Amask == 0xC0000000) {
5352
e0da15452037 Yes, it compiles now.
Sam Lantinga <slouken@libsdl.org>
parents: 5350
diff changeset
   414
            return SDL_PIXELFORMAT_ARGB2101010;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   415
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   416
    }
1965
a788656ca29a SDL constants are all uppercase.
Sam Lantinga <slouken@libsdl.org>
parents: 1920
diff changeset
   417
    return SDL_PIXELFORMAT_UNKNOWN;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   418
}
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   419
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   420
static SDL_PixelFormat *formats;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   421
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   422
SDL_PixelFormat *
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   423
SDL_AllocFormat(Uint32 pixel_format)
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   424
{
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   425
    SDL_PixelFormat *format;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   426
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   427
    /* Look it up in our list of previously allocated formats */
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   428
    for (format = formats; format; format = format->next) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   429
        if (pixel_format == format->format) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   430
            ++format->refcount;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   431
            return format;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   432
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   433
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   434
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   435
    /* Allocate an empty pixel format structure, and initialize it */
2967
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   436
    format = SDL_malloc(sizeof(*format));
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   437
    if (format == NULL) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   438
        SDL_OutOfMemory();
5433
1b6eee840e26 Better error reporting in allocating a pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5432
diff changeset
   439
        return NULL;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   440
    }
5433
1b6eee840e26 Better error reporting in allocating a pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5432
diff changeset
   441
    if (SDL_InitFormat(format, pixel_format) < 0) {
1b6eee840e26 Better error reporting in allocating a pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5432
diff changeset
   442
        SDL_free(format);
1b6eee840e26 Better error reporting in allocating a pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5432
diff changeset
   443
        return NULL;
1b6eee840e26 Better error reporting in allocating a pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5432
diff changeset
   444
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   445
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   446
    if (!SDL_ISPIXELFORMAT_INDEXED(pixel_format)) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   447
        /* Cache the RGB formats */
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   448
        format->next = formats;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   449
        formats = format;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   450
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   451
    return format;
2967
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   452
}
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   453
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   454
int
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   455
SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
2967
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   456
{
5432
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   457
    int bpp;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   458
    Uint32 Rmask, Gmask, Bmask, Amask;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   459
    Uint32 mask;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   460
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   461
    if (!SDL_PixelFormatEnumToMasks(pixel_format, &bpp,
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   462
                                    &Rmask, &Gmask, &Bmask, &Amask)) {
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   463
        return -1;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   464
    }
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   465
2967
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   466
    /* Set up the format */
e4a469d6ddab Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   467
    SDL_zerop(format);
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   468
    format->format = pixel_format;
5432
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   469
    format->BitsPerPixel = bpp;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   470
    format->BytesPerPixel = (bpp + 7) / 8;
5431
5369d8f32f08 Fixed initializing pixel format for indexed formats
Sam Lantinga <slouken@libsdl.org>
parents: 5352
diff changeset
   471
5432
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   472
    format->Rmask = Rmask;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   473
    format->Rshift = 0;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   474
    format->Rloss = 8;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   475
    if (Rmask) {
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   476
        for (mask = Rmask; !(mask & 0x01); mask >>= 1)
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   477
            ++format->Rshift;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   478
        for (; (mask & 0x01); mask >>= 1)
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   479
            --format->Rloss;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   480
    }
5431
5369d8f32f08 Fixed initializing pixel format for indexed formats
Sam Lantinga <slouken@libsdl.org>
parents: 5352
diff changeset
   481
5432
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   482
    format->Gmask = Gmask;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   483
    format->Gshift = 0;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   484
    format->Gloss = 8;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   485
    if (Gmask) {
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   486
        for (mask = Gmask; !(mask & 0x01); mask >>= 1)
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   487
            ++format->Gshift;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   488
        for (; (mask & 0x01); mask >>= 1)
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   489
            --format->Gloss;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   490
    }
5432
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   491
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   492
    format->Bmask = Bmask;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   493
    format->Bshift = 0;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   494
    format->Bloss = 8;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   495
    if (Bmask) {
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   496
        for (mask = Bmask; !(mask & 0x01); mask >>= 1)
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   497
            ++format->Bshift;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   498
        for (; (mask & 0x01); mask >>= 1)
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   499
            --format->Bloss;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   500
    }
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   501
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   502
    format->Amask = Amask;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   503
    format->Ashift = 0;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   504
    format->Aloss = 8;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   505
    if (Amask) {
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   506
        for (mask = Amask; !(mask & 0x01); mask >>= 1)
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   507
            ++format->Ashift;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   508
        for (; (mask & 0x01); mask >>= 1)
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   509
            --format->Aloss;
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   510
    }
b3913347f1d7 Fixed garbage trying to create a FourCC pixel format.
Sam Lantinga <slouken@libsdl.org>
parents: 5431
diff changeset
   511
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   512
    format->palette = NULL;
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   513
    format->refcount = 1;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   514
    format->next = NULL;
1057
e9d23bb80140 Date: Mon, 02 May 2005 04:23:16 -0500
Sam Lantinga <slouken@libsdl.org>
parents: 1027
diff changeset
   515
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   516
    return 0;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   517
}
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   518
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   519
void
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   520
SDL_FreeFormat(SDL_PixelFormat *format)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   521
{
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   522
    SDL_PixelFormat *prev;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   523
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   524
    if (!format) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   525
        return;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   526
    }
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   527
    if (--format->refcount > 0) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   528
        return;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   529
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   530
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   531
    /* Remove this format from our list */
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   532
    if (format == formats) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   533
        formats = format->next;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   534
    } else if (formats) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   535
        for (prev = formats; prev->next; prev = prev->next) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   536
            if (prev->next == format) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   537
                prev->next = format->next;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   538
                break;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   539
            }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   540
        }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   541
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   542
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   543
    if (format->palette) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   544
        SDL_FreePalette(format->palette);
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   545
    }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   546
    SDL_free(format);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   547
}
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   548
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   549
SDL_Palette *
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   550
SDL_AllocPalette(int ncolors)
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   551
{
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   552
    SDL_Palette *palette;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   553
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   554
    palette = (SDL_Palette *) SDL_malloc(sizeof(*palette));
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   555
    if (!palette) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   556
        SDL_OutOfMemory();
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   557
        return NULL;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   558
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   559
    palette->colors =
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   560
        (SDL_Color *) SDL_malloc(ncolors * sizeof(*palette->colors));
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   561
    if (!palette->colors) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   562
        SDL_free(palette);
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   563
        return NULL;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   564
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   565
    palette->ncolors = ncolors;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   566
    palette->version = 1;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   567
    palette->refcount = 1;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   568
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   569
    SDL_memset(palette->colors, 0xFF, ncolors * sizeof(*palette->colors));
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   570
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   571
    return palette;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   572
}
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   573
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   574
int
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   575
SDL_SetPixelFormatPalette(SDL_PixelFormat * format, SDL_Palette *palette)
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   576
{
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   577
    if (!format) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   578
        SDL_SetError("SDL_SetPixelFormatPalette() passed NULL format");
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   579
        return -1;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   580
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   581
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   582
    if (palette && palette->ncolors != (1 << format->BitsPerPixel)) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   583
        SDL_SetError("SDL_SetPixelFormatPalette() passed a palette that doesn't match the format");
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   584
        return -1;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   585
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   586
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   587
    if (format->palette == palette) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   588
        return 0;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   589
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   590
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   591
    if (format->palette) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   592
        SDL_FreePalette(format->palette);
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   593
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   594
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   595
    format->palette = palette;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   596
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   597
    if (format->palette) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   598
        ++format->palette->refcount;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   599
    }
5295
b88d05603e4b Patch from Ken Rogoway:
Sam Lantinga <slouken@libsdl.org>
parents: 5288
diff changeset
   600
b88d05603e4b Patch from Ken Rogoway:
Sam Lantinga <slouken@libsdl.org>
parents: 5288
diff changeset
   601
    return 0;
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   602
}
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   603
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   604
int
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   605
SDL_SetPaletteColors(SDL_Palette * palette, const SDL_Color * colors,
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   606
                     int firstcolor, int ncolors)
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   607
{
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   608
    int status = 0;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   609
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   610
    /* Verify the parameters */
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   611
    if (!palette) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   612
        return -1;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   613
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   614
    if (ncolors > (palette->ncolors - firstcolor)) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   615
        ncolors = (palette->ncolors - firstcolor);
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   616
        status = -1;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   617
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   618
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   619
    if (colors != (palette->colors + firstcolor)) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   620
        SDL_memcpy(palette->colors + firstcolor, colors,
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   621
                   ncolors * sizeof(*colors));
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   622
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   623
    ++palette->version;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   624
    if (!palette->version) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   625
        palette->version = 1;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   626
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   627
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   628
    return status;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   629
}
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   630
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   631
void
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   632
SDL_FreePalette(SDL_Palette * palette)
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   633
{
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   634
    if (!palette) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   635
        return;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   636
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   637
    if (--palette->refcount > 0) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   638
        return;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   639
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   640
    if (palette->colors) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   641
        SDL_free(palette->colors);
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   642
    }
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   643
    SDL_free(palette);
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   644
}
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   645
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   646
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   647
 * Calculate an 8-bit (3 red, 3 green, 2 blue) dithered palette of colors
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   648
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   649
void
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   650
SDL_DitherColors(SDL_Color * colors, int bpp)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   651
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   652
    int i;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   653
    if (bpp != 8)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   654
        return;                 /* only 8bpp supported right now */
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   655
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   656
    for (i = 0; i < 256; i++) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   657
        int r, g, b;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   658
        /* map each bit field to the full [0, 255] interval,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   659
           so 0 is mapped to (0, 0, 0) and 255 to (255, 255, 255) */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   660
        r = i & 0xe0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   661
        r |= r >> 3 | r >> 6;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   662
        colors[i].r = r;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   663
        g = (i << 3) & 0xe0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   664
        g |= g >> 3 | g >> 6;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   665
        colors[i].g = g;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   666
        b = i & 0x3;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   667
        b |= b << 2;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   668
        b |= b << 4;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   669
        colors[i].b = b;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   670
        colors[i].unused = SDL_ALPHA_OPAQUE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   671
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   672
}
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   673
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   674
/* 
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   675
 * Calculate the pad-aligned scanline width of a surface
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   676
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   677
int
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   678
SDL_CalculatePitch(SDL_Surface * surface)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   679
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   680
    int pitch;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   681
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   682
    /* Surface should be 4-byte aligned for speed */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   683
    pitch = surface->w * surface->format->BytesPerPixel;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   684
    switch (surface->format->BitsPerPixel) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   685
    case 1:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   686
        pitch = (pitch + 7) / 8;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   687
        break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   688
    case 4:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   689
        pitch = (pitch + 1) / 2;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   690
        break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   691
    default:
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   692
        break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   693
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   694
    pitch = (pitch + 3) & ~3;   /* 4-byte aligning */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   695
    return (pitch);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   696
}
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   697
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   698
/*
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   699
 * Match an RGB value to a particular palette index
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   700
 */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   701
Uint8
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   702
SDL_FindColor(SDL_Palette * pal, Uint8 r, Uint8 g, Uint8 b)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   703
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   704
    /* Do colorspace distance matching */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   705
    unsigned int smallest;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   706
    unsigned int distance;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   707
    int rd, gd, bd;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   708
    int i;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   709
    Uint8 pixel = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   710
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   711
    smallest = ~0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   712
    for (i = 0; i < pal->ncolors; ++i) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   713
        rd = pal->colors[i].r - r;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   714
        gd = pal->colors[i].g - g;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   715
        bd = pal->colors[i].b - b;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   716
        distance = (rd * rd) + (gd * gd) + (bd * bd);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   717
        if (distance < smallest) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   718
            pixel = i;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   719
            if (distance == 0) {        /* Perfect match! */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   720
                break;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   721
            }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   722
            smallest = distance;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   723
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   724
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   725
    return (pixel);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   726
}
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   727
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   728
/* Find the opaque pixel value corresponding to an RGB triple */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   729
Uint32
2275
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   730
SDL_MapRGB(const SDL_PixelFormat * format, Uint8 r, Uint8 g, Uint8 b)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   731
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   732
    if (format->palette == NULL) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   733
        return (r >> format->Rloss) << format->Rshift
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   734
            | (g >> format->Gloss) << format->Gshift
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   735
            | (b >> format->Bloss) << format->Bshift | format->Amask;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   736
    } else {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   737
        return SDL_FindColor(format->palette, r, g, b);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   738
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   739
}
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   740
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   741
/* Find the pixel value corresponding to an RGBA quadruple */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   742
Uint32
2275
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   743
SDL_MapRGBA(const SDL_PixelFormat * format, Uint8 r, Uint8 g, Uint8 b,
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   744
            Uint8 a)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   745
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   746
    if (format->palette == NULL) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   747
        return (r >> format->Rloss) << format->Rshift
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   748
            | (g >> format->Gloss) << format->Gshift
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   749
            | (b >> format->Bloss) << format->Bshift
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   750
            | ((a >> format->Aloss) << format->Ashift & format->Amask);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   751
    } else {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   752
        return SDL_FindColor(format->palette, r, g, b);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   753
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   754
}
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   755
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   756
void
2275
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   757
SDL_GetRGB(Uint32 pixel, const SDL_PixelFormat * format, Uint8 * r, Uint8 * g,
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   758
           Uint8 * b)
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   759
{
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   760
    if (format->palette == NULL) {
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   761
        /*
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   762
         * This makes sure that the result is mapped to the
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   763
         * interval [0..255], and the maximum value for each
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   764
         * component is 255. This is important to make sure
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   765
         * that white is indeed reported as (255, 255, 255).
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   766
         * This only works for RGB bit fields at least 4 bit
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   767
         * wide, which is almost always the case.
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   768
         */
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   769
        unsigned v;
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   770
        v = (pixel & format->Rmask) >> format->Rshift;
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   771
        *r = (v << format->Rloss) + (v >> (8 - (format->Rloss << 1)));
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   772
        v = (pixel & format->Gmask) >> format->Gshift;
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   773
        *g = (v << format->Gloss) + (v >> (8 - (format->Gloss << 1)));
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   774
        v = (pixel & format->Bmask) >> format->Bshift;
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   775
        *b = (v << format->Bloss) + (v >> (8 - (format->Bloss << 1)));
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   776
    } else {
5436
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   777
        if (pixel < format->palette->ncolors) {
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   778
            *r = format->palette->colors[pixel].r;
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   779
            *g = format->palette->colors[pixel].g;
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   780
            *b = format->palette->colors[pixel].b;
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   781
        } else {
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   782
            *r = *g = *b = 0;
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   783
        }
2275
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   784
    }
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   785
}
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   786
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   787
void
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   788
SDL_GetRGBA(Uint32 pixel, const SDL_PixelFormat * format,
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   789
            Uint8 * r, Uint8 * g, Uint8 * b, Uint8 * a)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   790
{
2275
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   791
    if (format->palette == NULL) {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   792
        /*
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   793
         * This makes sure that the result is mapped to the
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   794
         * interval [0..255], and the maximum value for each
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   795
         * component is 255. This is important to make sure
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   796
         * that white is indeed reported as (255, 255, 255),
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   797
         * and that opaque alpha is 255.
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   798
         * This only works for RGB bit fields at least 4 bit
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   799
         * wide, which is almost always the case.
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   800
         */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   801
        unsigned v;
2275
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   802
        v = (pixel & format->Rmask) >> format->Rshift;
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   803
        *r = (v << format->Rloss) + (v >> (8 - (format->Rloss << 1)));
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   804
        v = (pixel & format->Gmask) >> format->Gshift;
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   805
        *g = (v << format->Gloss) + (v >> (8 - (format->Gloss << 1)));
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   806
        v = (pixel & format->Bmask) >> format->Bshift;
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   807
        *b = (v << format->Bloss) + (v >> (8 - (format->Bloss << 1)));
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   808
        if (format->Amask) {
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   809
            v = (pixel & format->Amask) >> format->Ashift;
12ea0fdc0df2 Split out the SDL_rect and SDL_surface functions into their own headers.
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
   810
            *a = (v << format->Aloss) + (v >> (8 - (format->Aloss << 1)));
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   811
        } else {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   812
            *a = SDL_ALPHA_OPAQUE;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   813
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   814
    } else {
5436
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   815
        if (pixel < format->palette->ncolors) {
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   816
            *r = format->palette->colors[pixel].r;
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   817
            *g = format->palette->colors[pixel].g;
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   818
            *b = format->palette->colors[pixel].b;
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   819
            *a = SDL_ALPHA_OPAQUE;
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   820
        } else {
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   821
            *r = *g = *b = *a = 0;
29977c050731 Fixed memory corruption with invalid pixel values.
Sam Lantinga <slouken@libsdl.org>
parents: 5433
diff changeset
   822
        }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   823
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   824
}
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   825
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   826
/* Map from Palette to Palette */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   827
static Uint8 *
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   828
Map1to1(SDL_Palette * src, SDL_Palette * dst, int *identical)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   829
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   830
    Uint8 *map;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   831
    int i;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   832
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   833
    if (identical) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   834
        if (src->ncolors <= dst->ncolors) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   835
            /* If an identical palette, no need to map */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   836
            if (src == dst
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   837
                ||
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   838
                (SDL_memcmp
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   839
                 (src->colors, dst->colors,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   840
                  src->ncolors * sizeof(SDL_Color)) == 0)) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   841
                *identical = 1;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   842
                return (NULL);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   843
            }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   844
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   845
        *identical = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   846
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   847
    map = (Uint8 *) SDL_malloc(src->ncolors);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   848
    if (map == NULL) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   849
        SDL_OutOfMemory();
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   850
        return (NULL);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   851
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   852
    for (i = 0; i < src->ncolors; ++i) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   853
        map[i] = SDL_FindColor(dst,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   854
                               src->colors[i].r, src->colors[i].g,
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   855
                               src->colors[i].b);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   856
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   857
    return (map);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   858
}
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   859
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   860
/* Map from Palette to BitField */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   861
static Uint8 *
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   862
Map1toN(SDL_PixelFormat * src, Uint8 Rmod, Uint8 Gmod, Uint8 Bmod, Uint8 Amod,
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   863
        SDL_PixelFormat * dst)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   864
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   865
    Uint8 *map;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   866
    int i;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   867
    int bpp;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   868
    SDL_Palette *pal = src->palette;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   869
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   870
    bpp = ((dst->BytesPerPixel == 3) ? 4 : dst->BytesPerPixel);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   871
    map = (Uint8 *) SDL_malloc(pal->ncolors * bpp);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   872
    if (map == NULL) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   873
        SDL_OutOfMemory();
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   874
        return (NULL);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   875
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   876
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   877
    /* We memory copy to the pixel map so the endianness is preserved */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   878
    for (i = 0; i < pal->ncolors; ++i) {
2257
340942cfda48 Moved the colorkey and per-surface alpha into the blit info,
Sam Lantinga <slouken@libsdl.org>
parents: 2120
diff changeset
   879
        Uint8 A = Amod;
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   880
        Uint8 R = (Uint8) ((pal->colors[i].r * Rmod) / 255);
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   881
        Uint8 G = (Uint8) ((pal->colors[i].g * Gmod) / 255);
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   882
        Uint8 B = (Uint8) ((pal->colors[i].b * Bmod) / 255);
2257
340942cfda48 Moved the colorkey and per-surface alpha into the blit info,
Sam Lantinga <slouken@libsdl.org>
parents: 2120
diff changeset
   883
        ASSEMBLE_RGBA(&map[i * bpp], dst->BytesPerPixel, dst, R, G, B, A);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   884
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   885
    return (map);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   886
}
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   887
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   888
/* Map from BitField to Dithered-Palette to Palette */
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   889
static Uint8 *
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   890
MapNto1(SDL_PixelFormat * src, SDL_PixelFormat * dst, int *identical)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   891
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   892
    /* Generate a 256 color dither palette */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   893
    SDL_Palette dithered;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   894
    SDL_Color colors[256];
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   895
    SDL_Palette *pal = dst->palette;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   896
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   897
    dithered.ncolors = 256;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   898
    SDL_DitherColors(colors, 8);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   899
    dithered.colors = colors;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   900
    return (Map1to1(&dithered, pal, identical));
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   901
}
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   902
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   903
SDL_BlitMap *
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   904
SDL_AllocBlitMap(void)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   905
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   906
    SDL_BlitMap *map;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   907
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   908
    /* Allocate the empty map */
1920
8a162bfdc838 Convert SDL_malloc to SDL_calloc if appropriate, slightly faster on operating systems which map the zero page for memory allocations.
Sam Lantinga <slouken@libsdl.org>
parents: 1895
diff changeset
   909
    map = (SDL_BlitMap *) SDL_calloc(1, sizeof(*map));
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   910
    if (map == NULL) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   911
        SDL_OutOfMemory();
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   912
        return (NULL);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   913
    }
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   914
    map->info.r = 0xFF;
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   915
    map->info.g = 0xFF;
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   916
    map->info.b = 0xFF;
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   917
    map->info.a = 0xFF;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   918
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   919
    /* It's ready to go */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   920
    return (map);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   921
}
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   922
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   923
void
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   924
SDL_InvalidateMap(SDL_BlitMap * map)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   925
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   926
    if (!map) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   927
        return;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   928
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   929
    map->dst = NULL;
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   930
    map->palette_version = 0;
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   931
    if (map->info.table) {
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   932
        SDL_free(map->info.table);
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   933
        map->info.table = NULL;
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   934
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   935
}
2735
204be4fc2726 Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents: 2275
diff changeset
   936
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   937
int
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   938
SDL_MapSurface(SDL_Surface * src, SDL_Surface * dst)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   939
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   940
    SDL_PixelFormat *srcfmt;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   941
    SDL_PixelFormat *dstfmt;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   942
    SDL_BlitMap *map;
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   943
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   944
    /* Clear out any previous mapping */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   945
    map = src->map;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   946
    if ((src->flags & SDL_RLEACCEL) == SDL_RLEACCEL) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   947
        SDL_UnRLESurface(src, 1);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   948
    }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   949
    SDL_InvalidateMap(map);
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   950
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   951
    /* Figure out what kind of mapping we're doing */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   952
    map->identity = 0;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   953
    srcfmt = src->format;
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   954
    dstfmt = dst->format;
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   955
    if (SDL_ISPIXELFORMAT_INDEXED(srcfmt->format)) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   956
        if (SDL_ISPIXELFORMAT_INDEXED(dstfmt->format)) {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   957
            /* Palette --> Palette */
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   958
            map->info.table =
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   959
                Map1to1(srcfmt->palette, dstfmt->palette, &map->identity);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   960
            if (!map->identity) {
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   961
                if (map->info.table == NULL) {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   962
                    return (-1);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   963
                }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   964
            }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   965
            if (srcfmt->BitsPerPixel != dstfmt->BitsPerPixel)
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   966
                map->identity = 0;
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   967
        } else {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   968
            /* Palette --> BitField */
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   969
            map->info.table =
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   970
                Map1toN(srcfmt, src->map->info.r, src->map->info.g,
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   971
                        src->map->info.b, src->map->info.a, dstfmt);
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   972
            if (map->info.table == NULL) {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   973
                return (-1);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   974
            }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   975
        }
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   976
    } else {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   977
        if (SDL_ISPIXELFORMAT_INDEXED(dstfmt->format)) {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   978
            /* BitField --> Palette */
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   979
            map->info.table = MapNto1(srcfmt, dstfmt, &map->identity);
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   980
            if (!map->identity) {
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2260
diff changeset
   981
                if (map->info.table == NULL) {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   982
                    return (-1);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   983
                }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   984
            }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   985
            map->identity = 0;  /* Don't optimize to copy */
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   986
        } else {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   987
            /* BitField --> BitField */
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   988
            if (srcfmt == dstfmt) {
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   989
                map->identity = 1;
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   990
            }
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   991
        }
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   992
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
   993
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
   994
    map->dst = dst;
5288
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   995
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   996
    if (dstfmt->palette) {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   997
        map->palette_version = dstfmt->palette->version;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   998
    } else {
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
   999
        map->palette_version = 0;
d4381f3b0d1e A few fixes:
Sam Lantinga <slouken@libsdl.org>
parents: 5262
diff changeset
  1000
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
  1001
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1002
    /* Choose your blitters wisely */
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1003
    return (SDL_CalculateBlit(src));
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
  1004
}
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1005
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1006
void
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1007
SDL_FreeBlitMap(SDL_BlitMap * map)
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
  1008
{
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1009
    if (map) {
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1010
        SDL_InvalidateMap(map);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1011
        SDL_free(map);
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1012
    }
0
74212992fb08 Initial revision
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
  1013
}
1895
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1014
c121d94672cb SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents: 1557
diff changeset
  1015
/* vi: set ts=4 sw=4 expandtab: */