mirror of
				https://github.com/Ryujinx/SDL.git
				synced 2025-11-04 15:14:56 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			469 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			469 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
  Simple DirectMedia Layer
 | 
						|
  Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
 | 
						|
 | 
						|
  This software is provided 'as-is', without any express or implied
 | 
						|
  warranty.  In no event will the authors be held liable for any damages
 | 
						|
  arising from the use of this software.
 | 
						|
 | 
						|
  Permission is granted to anyone to use this software for any purpose,
 | 
						|
  including commercial applications, and to alter it and redistribute it
 | 
						|
  freely, subject to the following restrictions:
 | 
						|
 | 
						|
  1. The origin of this software must not be misrepresented; you must not
 | 
						|
     claim that you wrote the original software. If you use this software
 | 
						|
     in a product, an acknowledgment in the product documentation would be
 | 
						|
     appreciated but is not required.
 | 
						|
  2. Altered source versions must be plainly marked as such, and must not be
 | 
						|
     misrepresented as being the original software.
 | 
						|
  3. This notice may not be removed or altered from any source distribution.
 | 
						|
*/
 | 
						|
 | 
						|
/**
 | 
						|
 *  \file SDL_pixels.h
 | 
						|
 *
 | 
						|
 *  Header for the enumerated pixel format definitions.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef SDL_pixels_h_
 | 
						|
#define SDL_pixels_h_
 | 
						|
 | 
						|
#include "SDL_stdinc.h"
 | 
						|
#include "SDL_endian.h"
 | 
						|
 | 
						|
#include "begin_code.h"
 | 
						|
/* Set up for C function definitions, even when using C++ */
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/**
 | 
						|
 *  \name Transparency definitions
 | 
						|
 *
 | 
						|
 *  These define alpha as the opacity of a surface.
 | 
						|
 */
 | 
						|
/* @{ */
 | 
						|
#define SDL_ALPHA_OPAQUE 255
 | 
						|
#define SDL_ALPHA_TRANSPARENT 0
 | 
						|
/* @} */
 | 
						|
 | 
						|
/** Pixel type. */
 | 
						|
enum
 | 
						|
{
 | 
						|
    SDL_PIXELTYPE_UNKNOWN,
 | 
						|
    SDL_PIXELTYPE_INDEX1,
 | 
						|
    SDL_PIXELTYPE_INDEX4,
 | 
						|
    SDL_PIXELTYPE_INDEX8,
 | 
						|
    SDL_PIXELTYPE_PACKED8,
 | 
						|
    SDL_PIXELTYPE_PACKED16,
 | 
						|
    SDL_PIXELTYPE_PACKED32,
 | 
						|
    SDL_PIXELTYPE_ARRAYU8,
 | 
						|
    SDL_PIXELTYPE_ARRAYU16,
 | 
						|
    SDL_PIXELTYPE_ARRAYU32,
 | 
						|
    SDL_PIXELTYPE_ARRAYF16,
 | 
						|
    SDL_PIXELTYPE_ARRAYF32
 | 
						|
};
 | 
						|
 | 
						|
/** Bitmap pixel order, high bit -> low bit. */
 | 
						|
enum
 | 
						|
{
 | 
						|
    SDL_BITMAPORDER_NONE,
 | 
						|
    SDL_BITMAPORDER_4321,
 | 
						|
    SDL_BITMAPORDER_1234
 | 
						|
};
 | 
						|
 | 
						|
/** Packed component order, high bit -> low bit. */
 | 
						|
enum
 | 
						|
{
 | 
						|
    SDL_PACKEDORDER_NONE,
 | 
						|
    SDL_PACKEDORDER_XRGB,
 | 
						|
    SDL_PACKEDORDER_RGBX,
 | 
						|
    SDL_PACKEDORDER_ARGB,
 | 
						|
    SDL_PACKEDORDER_RGBA,
 | 
						|
    SDL_PACKEDORDER_XBGR,
 | 
						|
    SDL_PACKEDORDER_BGRX,
 | 
						|
    SDL_PACKEDORDER_ABGR,
 | 
						|
    SDL_PACKEDORDER_BGRA
 | 
						|
};
 | 
						|
 | 
						|
/** Array component order, low byte -> high byte. */
 | 
						|
/* !!! FIXME: in 2.1, make these not overlap differently with
 | 
						|
   !!! FIXME:  SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */
 | 
						|
enum
 | 
						|
{
 | 
						|
    SDL_ARRAYORDER_NONE,
 | 
						|
    SDL_ARRAYORDER_RGB,
 | 
						|
    SDL_ARRAYORDER_RGBA,
 | 
						|
    SDL_ARRAYORDER_ARGB,
 | 
						|
    SDL_ARRAYORDER_BGR,
 | 
						|
    SDL_ARRAYORDER_BGRA,
 | 
						|
    SDL_ARRAYORDER_ABGR
 | 
						|
};
 | 
						|
 | 
						|
/** Packed component layout. */
 | 
						|
enum
 | 
						|
{
 | 
						|
    SDL_PACKEDLAYOUT_NONE,
 | 
						|
    SDL_PACKEDLAYOUT_332,
 | 
						|
    SDL_PACKEDLAYOUT_4444,
 | 
						|
    SDL_PACKEDLAYOUT_1555,
 | 
						|
    SDL_PACKEDLAYOUT_5551,
 | 
						|
    SDL_PACKEDLAYOUT_565,
 | 
						|
    SDL_PACKEDLAYOUT_8888,
 | 
						|
    SDL_PACKEDLAYOUT_2101010,
 | 
						|
    SDL_PACKEDLAYOUT_1010102
 | 
						|
};
 | 
						|
 | 
						|
#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
 | 
						|
 | 
						|
#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
 | 
						|
    ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
 | 
						|
     ((bits) << 8) | ((bytes) << 0))
 | 
						|
 | 
						|
#define SDL_PIXELFLAG(X)    (((X) >> 28) & 0x0F)
 | 
						|
#define SDL_PIXELTYPE(X)    (((X) >> 24) & 0x0F)
 | 
						|
#define SDL_PIXELORDER(X)   (((X) >> 20) & 0x0F)
 | 
						|
#define SDL_PIXELLAYOUT(X)  (((X) >> 16) & 0x0F)
 | 
						|
#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
 | 
						|
#define SDL_BYTESPERPIXEL(X) \
 | 
						|
    (SDL_ISPIXELFORMAT_FOURCC(X) ? \
 | 
						|
        ((((X) == SDL_PIXELFORMAT_YUY2) || \
 | 
						|
          ((X) == SDL_PIXELFORMAT_UYVY) || \
 | 
						|
          ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
 | 
						|
 | 
						|
#define SDL_ISPIXELFORMAT_INDEXED(format)   \
 | 
						|
    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
 | 
						|
     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
 | 
						|
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
 | 
						|
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
 | 
						|
 | 
						|
#define SDL_ISPIXELFORMAT_PACKED(format) \
 | 
						|
    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
 | 
						|
     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \
 | 
						|
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \
 | 
						|
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32)))
 | 
						|
 | 
						|
#define SDL_ISPIXELFORMAT_ARRAY(format) \
 | 
						|
    (!SDL_ISPIXELFORMAT_FOURCC(format) && \
 | 
						|
     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \
 | 
						|
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \
 | 
						|
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \
 | 
						|
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \
 | 
						|
      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32)))
 | 
						|
 | 
						|
#define SDL_ISPIXELFORMAT_ALPHA(format)   \
 | 
						|
    ((SDL_ISPIXELFORMAT_PACKED(format) && \
 | 
						|
     ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
 | 
						|
      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
 | 
						|
      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
 | 
						|
      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \
 | 
						|
    (SDL_ISPIXELFORMAT_ARRAY(format) && \
 | 
						|
     ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \
 | 
						|
      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \
 | 
						|
      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \
 | 
						|
      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA))))
 | 
						|
 | 
						|
/* The flag is set to 1 because 0x1? is not in the printable ASCII range */
 | 
						|
#define SDL_ISPIXELFORMAT_FOURCC(format)    \
 | 
						|
    ((format) && (SDL_PIXELFLAG(format) != 1))
 | 
						|
 | 
						|
/* Note: If you modify this list, update SDL_GetPixelFormatName() */
 | 
						|
enum
 | 
						|
{
 | 
						|
    SDL_PIXELFORMAT_UNKNOWN,
 | 
						|
    SDL_PIXELFORMAT_INDEX1LSB =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
 | 
						|
                               1, 0),
 | 
						|
    SDL_PIXELFORMAT_INDEX1MSB =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
 | 
						|
                               1, 0),
 | 
						|
    SDL_PIXELFORMAT_INDEX4LSB =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
 | 
						|
                               4, 0),
 | 
						|
    SDL_PIXELFORMAT_INDEX4MSB =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
 | 
						|
                               4, 0),
 | 
						|
    SDL_PIXELFORMAT_INDEX8 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
 | 
						|
    SDL_PIXELFORMAT_RGB332 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
 | 
						|
                               SDL_PACKEDLAYOUT_332, 8, 1),
 | 
						|
    SDL_PIXELFORMAT_RGB444 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
 | 
						|
                               SDL_PACKEDLAYOUT_4444, 12, 2),
 | 
						|
    SDL_PIXELFORMAT_RGB555 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
 | 
						|
                               SDL_PACKEDLAYOUT_1555, 15, 2),
 | 
						|
    SDL_PIXELFORMAT_BGR555 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
 | 
						|
                               SDL_PACKEDLAYOUT_1555, 15, 2),
 | 
						|
    SDL_PIXELFORMAT_ARGB4444 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
 | 
						|
                               SDL_PACKEDLAYOUT_4444, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_RGBA4444 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
 | 
						|
                               SDL_PACKEDLAYOUT_4444, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_ABGR4444 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
 | 
						|
                               SDL_PACKEDLAYOUT_4444, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_BGRA4444 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
 | 
						|
                               SDL_PACKEDLAYOUT_4444, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_ARGB1555 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
 | 
						|
                               SDL_PACKEDLAYOUT_1555, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_RGBA5551 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
 | 
						|
                               SDL_PACKEDLAYOUT_5551, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_ABGR1555 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
 | 
						|
                               SDL_PACKEDLAYOUT_1555, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_BGRA5551 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
 | 
						|
                               SDL_PACKEDLAYOUT_5551, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_RGB565 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
 | 
						|
                               SDL_PACKEDLAYOUT_565, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_BGR565 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
 | 
						|
                               SDL_PACKEDLAYOUT_565, 16, 2),
 | 
						|
    SDL_PIXELFORMAT_RGB24 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
 | 
						|
                               24, 3),
 | 
						|
    SDL_PIXELFORMAT_BGR24 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
 | 
						|
                               24, 3),
 | 
						|
    SDL_PIXELFORMAT_RGB888 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
 | 
						|
                               SDL_PACKEDLAYOUT_8888, 24, 4),
 | 
						|
    SDL_PIXELFORMAT_RGBX8888 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
 | 
						|
                               SDL_PACKEDLAYOUT_8888, 24, 4),
 | 
						|
    SDL_PIXELFORMAT_BGR888 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
 | 
						|
                               SDL_PACKEDLAYOUT_8888, 24, 4),
 | 
						|
    SDL_PIXELFORMAT_BGRX8888 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
 | 
						|
                               SDL_PACKEDLAYOUT_8888, 24, 4),
 | 
						|
    SDL_PIXELFORMAT_ARGB8888 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
 | 
						|
                               SDL_PACKEDLAYOUT_8888, 32, 4),
 | 
						|
    SDL_PIXELFORMAT_RGBA8888 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
 | 
						|
                               SDL_PACKEDLAYOUT_8888, 32, 4),
 | 
						|
    SDL_PIXELFORMAT_ABGR8888 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
 | 
						|
                               SDL_PACKEDLAYOUT_8888, 32, 4),
 | 
						|
    SDL_PIXELFORMAT_BGRA8888 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
 | 
						|
                               SDL_PACKEDLAYOUT_8888, 32, 4),
 | 
						|
    SDL_PIXELFORMAT_ARGB2101010 =
 | 
						|
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
 | 
						|
                               SDL_PACKEDLAYOUT_2101010, 32, 4),
 | 
						|
 | 
						|
    /* Aliases for RGBA byte arrays of color data, for the current platform */
 | 
						|
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
 | 
						|
    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888,
 | 
						|
    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888,
 | 
						|
    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888,
 | 
						|
    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888,
 | 
						|
#else
 | 
						|
    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,
 | 
						|
    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,
 | 
						|
    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,
 | 
						|
    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,
 | 
						|
#endif
 | 
						|
 | 
						|
    SDL_PIXELFORMAT_YV12 =      /**< Planar mode: Y + V + U  (3 planes) */
 | 
						|
        SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
 | 
						|
    SDL_PIXELFORMAT_IYUV =      /**< Planar mode: Y + U + V  (3 planes) */
 | 
						|
        SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
 | 
						|
    SDL_PIXELFORMAT_YUY2 =      /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */
 | 
						|
        SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
 | 
						|
    SDL_PIXELFORMAT_UYVY =      /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */
 | 
						|
        SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
 | 
						|
    SDL_PIXELFORMAT_YVYU =      /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */
 | 
						|
        SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'),
 | 
						|
    SDL_PIXELFORMAT_NV12 =      /**< Planar mode: Y + U/V interleaved  (2 planes) */
 | 
						|
        SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'),
 | 
						|
    SDL_PIXELFORMAT_NV21 =      /**< Planar mode: Y + V/U interleaved  (2 planes) */
 | 
						|
        SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1')
 | 
						|
};
 | 
						|
 | 
						|
typedef struct SDL_Color
 | 
						|
{
 | 
						|
    Uint8 r;
 | 
						|
    Uint8 g;
 | 
						|
    Uint8 b;
 | 
						|
    Uint8 a;
 | 
						|
} SDL_Color;
 | 
						|
#define SDL_Colour SDL_Color
 | 
						|
 | 
						|
typedef struct SDL_Palette
 | 
						|
{
 | 
						|
    int ncolors;
 | 
						|
    SDL_Color *colors;
 | 
						|
    Uint32 version;
 | 
						|
    int refcount;
 | 
						|
} SDL_Palette;
 | 
						|
 | 
						|
/**
 | 
						|
 *  \note Everything in the pixel format structure is read-only.
 | 
						|
 */
 | 
						|
typedef struct SDL_PixelFormat
 | 
						|
{
 | 
						|
    Uint32 format;
 | 
						|
    SDL_Palette *palette;
 | 
						|
    Uint8 BitsPerPixel;
 | 
						|
    Uint8 BytesPerPixel;
 | 
						|
    Uint8 padding[2];
 | 
						|
    Uint32 Rmask;
 | 
						|
    Uint32 Gmask;
 | 
						|
    Uint32 Bmask;
 | 
						|
    Uint32 Amask;
 | 
						|
    Uint8 Rloss;
 | 
						|
    Uint8 Gloss;
 | 
						|
    Uint8 Bloss;
 | 
						|
    Uint8 Aloss;
 | 
						|
    Uint8 Rshift;
 | 
						|
    Uint8 Gshift;
 | 
						|
    Uint8 Bshift;
 | 
						|
    Uint8 Ashift;
 | 
						|
    int refcount;
 | 
						|
    struct SDL_PixelFormat *next;
 | 
						|
} SDL_PixelFormat;
 | 
						|
 | 
						|
/**
 | 
						|
 * \brief Get the human readable name of a pixel format
 | 
						|
 */
 | 
						|
extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks.
 | 
						|
 *
 | 
						|
 *  \return SDL_TRUE, or SDL_FALSE if the conversion wasn't possible.
 | 
						|
 *
 | 
						|
 *  \sa SDL_MasksToPixelFormatEnum()
 | 
						|
 */
 | 
						|
extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format,
 | 
						|
                                                            int *bpp,
 | 
						|
                                                            Uint32 * Rmask,
 | 
						|
                                                            Uint32 * Gmask,
 | 
						|
                                                            Uint32 * Bmask,
 | 
						|
                                                            Uint32 * Amask);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Convert a bpp and RGBA masks to an enumerated pixel format.
 | 
						|
 *
 | 
						|
 *  \return The pixel format, or ::SDL_PIXELFORMAT_UNKNOWN if the conversion
 | 
						|
 *          wasn't possible.
 | 
						|
 *
 | 
						|
 *  \sa SDL_PixelFormatEnumToMasks()
 | 
						|
 */
 | 
						|
extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp,
 | 
						|
                                                          Uint32 Rmask,
 | 
						|
                                                          Uint32 Gmask,
 | 
						|
                                                          Uint32 Bmask,
 | 
						|
                                                          Uint32 Amask);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Create an SDL_PixelFormat structure from a pixel format enum.
 | 
						|
 */
 | 
						|
extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Free an SDL_PixelFormat structure.
 | 
						|
 */
 | 
						|
extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Create a palette structure with the specified number of color
 | 
						|
 *         entries.
 | 
						|
 *
 | 
						|
 *  \return A new palette, or NULL if there wasn't enough memory.
 | 
						|
 *
 | 
						|
 *  \note The palette entries are initialized to white.
 | 
						|
 *
 | 
						|
 *  \sa SDL_FreePalette()
 | 
						|
 */
 | 
						|
extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Set the palette for a pixel format structure.
 | 
						|
 */
 | 
						|
extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format,
 | 
						|
                                                      SDL_Palette *palette);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Set a range of colors in a palette.
 | 
						|
 *
 | 
						|
 *  \param palette    The palette to modify.
 | 
						|
 *  \param colors     An array of colors to copy into the palette.
 | 
						|
 *  \param firstcolor The index of the first palette entry to modify.
 | 
						|
 *  \param ncolors    The number of entries to modify.
 | 
						|
 *
 | 
						|
 *  \return 0 on success, or -1 if not all of the colors could be set.
 | 
						|
 */
 | 
						|
extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette,
 | 
						|
                                                 const SDL_Color * colors,
 | 
						|
                                                 int firstcolor, int ncolors);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Free a palette created with SDL_AllocPalette().
 | 
						|
 *
 | 
						|
 *  \sa SDL_AllocPalette()
 | 
						|
 */
 | 
						|
extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Maps an RGB triple to an opaque pixel value for a given pixel format.
 | 
						|
 *
 | 
						|
 *  \sa SDL_MapRGBA
 | 
						|
 */
 | 
						|
extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format,
 | 
						|
                                          Uint8 r, Uint8 g, Uint8 b);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Maps an RGBA quadruple to a pixel value for a given pixel format.
 | 
						|
 *
 | 
						|
 *  \sa SDL_MapRGB
 | 
						|
 */
 | 
						|
extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format,
 | 
						|
                                           Uint8 r, Uint8 g, Uint8 b,
 | 
						|
                                           Uint8 a);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Get the RGB components from a pixel of the specified format.
 | 
						|
 *
 | 
						|
 *  \sa SDL_GetRGBA
 | 
						|
 */
 | 
						|
extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel,
 | 
						|
                                        const SDL_PixelFormat * format,
 | 
						|
                                        Uint8 * r, Uint8 * g, Uint8 * b);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Get the RGBA components from a pixel of the specified format.
 | 
						|
 *
 | 
						|
 *  \sa SDL_GetRGB
 | 
						|
 */
 | 
						|
extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel,
 | 
						|
                                         const SDL_PixelFormat * format,
 | 
						|
                                         Uint8 * r, Uint8 * g, Uint8 * b,
 | 
						|
                                         Uint8 * a);
 | 
						|
 | 
						|
/**
 | 
						|
 *  \brief Calculate a 256 entry gamma ramp for a gamma value.
 | 
						|
 */
 | 
						|
extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp);
 | 
						|
 | 
						|
 | 
						|
/* Ends C function definitions when using C++ */
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
#include "close_code.h"
 | 
						|
 | 
						|
#endif /* SDL_pixels_h_ */
 | 
						|
 | 
						|
/* vi: set ts=4 sw=4 expandtab: */
 |