###### (This is the legacy documentation for SDL2, the previous stable version; [SDL3](https://wiki.libsdl.org/SDL3/) is the current stable version.)
# SDL_PixelFormat

A structure that contains pixel format information.

## Header File

Defined in [SDL_pixels.h](https://github.com/libsdl-org/SDL/blob/SDL2/include/SDL_pixels.h)

## Syntax

```c
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;
```

## Remarks

Everything in the pixel format structure is read-only.

A pixel format has either a palette or masks. If a palette is used `Rmask`,
`Gmask`, `Bmask`, and `Amask` will be 0.

An [SDL_PixelFormat](SDL_PixelFormat) describes the format of the pixel
data stored at the `pixels` field of an [SDL_Surface](SDL_Surface). Every
surface stores an [SDL_PixelFormat](SDL_PixelFormat) in the `format` field.

If you wish to do pixel level modifications on a surface, then
understanding how SDL stores its color information is essential.

For information on modern pixel color spaces, see the following Wikipedia
article: http://en.wikipedia.org/wiki/RGBA_color_space

## See Also

- [SDL_ConvertSurface](SDL_ConvertSurface)
- [SDL_GetRGB](SDL_GetRGB)
- [SDL_GetRGBA](SDL_GetRGBA)
- [SDL_MapRGB](SDL_MapRGB)
- [SDL_MapRGBA](SDL_MapRGBA)
- [SDL_AllocFormat](SDL_AllocFormat)
- [SDL_FreeFormat](SDL_FreeFormat)

----
[CategoryAPI](CategoryAPI), [CategoryAPIStruct](CategoryAPIStruct), [CategoryPixels](CategoryPixels)