SDL_pixels.h

Enumerado SDL_PixelFormatEnum

Un enumerado de los formatos de pixel.

typedef 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_XRGB4444 =
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
                               SDL_PACKEDLAYOUT_4444, 12, 2),
    SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444,
    SDL_PIXELFORMAT_XBGR4444 =
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
                               SDL_PACKEDLAYOUT_4444, 12, 2),
    SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444,
    SDL_PIXELFORMAT_XRGB1555 =
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
                               SDL_PACKEDLAYOUT_1555, 15, 2),
    SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555,
    SDL_PIXELFORMAT_XBGR1555 =
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
                               SDL_PACKEDLAYOUT_1555, 15, 2),
    SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555,
    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_XRGB8888 =
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
                               SDL_PACKEDLAYOUT_8888, 24, 4),
    SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888,
    SDL_PIXELFORMAT_RGBX8888 =
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
                               SDL_PACKEDLAYOUT_8888, 24, 4),
    SDL_PIXELFORMAT_XBGR8888 =
        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
                               SDL_PACKEDLAYOUT_8888, 24, 4),
    SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888,
    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'),
    SDL_PIXELFORMAT_EXTERNAL_OES =      /**< Android video texture format */
        SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')
} SDL_PixelFormatEnum;

Macros

SDL_PIXELTYPE(format)
El tipo de formato de píxel; ver observaciones para más detalles.
SDL_PIXELORDER(format)
El orden de los canales o bits en el formato de píxel; ver observaciones para más detalles.
SDL_PIXELLAYOUT(format)
El patrón de bits de canal del formato de píxel; consultar observaciones para obtener más detalles.
SDL_BITSPERPIXEL(format)
El número de bits de información de color en el formato de píxel.
SDL_BYTESPERPIXEL(format)
El número de bytes utilizados para representar un píxel.
SDL_ISPIXELFORMAT_INDEXED(format)
Verdadero para formatos de pixel que tienen una paleta.
SDL_ISPIXELFORMAT_ALPHA(format)
Verdadero para formatos de pixel que tienen un canal alfa.
SDL_ISPIXELFORMAT_FOURCC(format)
Verdadero para formatos de píxel que representan formatos únicos, por ejemplo formatos YUV.

Valores de formato de pixel

SDL_PIXELFORMAT_UNKNOWN
SDL_PIXELFORMAT_INDEX1LSB
SDL_PIXELFORMAT_INDEX1MSB
SDL_PIXELFORMAT_INDEX4LSB
SDL_PIXELFORMAT_INDEX4MSB
SDL_PIXELFORMAT_INDEX8
SDL_PIXELFORMAT_RGB332
SDL_PIXELFORMAT_RGB444
SDL_PIXELFORMAT_RGB555
SDL_PIXELFORMAT_BGR555
SDL_PIXELFORMAT_ARGB4444
SDL_PIXELFORMAT_RGBA4444
SDL_PIXELFORMAT_ABGR4444
SDL_PIXELFORMAT_BGRA4444
SDL_PIXELFORMAT_ARGB1555
SDL_PIXELFORMAT_RGBA5551
SDL_PIXELFORMAT_ABGR1555
SDL_PIXELFORMAT_BGRA5551
SDL_PIXELFORMAT_RGB565
SDL_PIXELFORMAT_BGR565
SDL_PIXELFORMAT_RGB24
SDL_PIXELFORMAT_BGR24
SDL_PIXELFORMAT_RGB888
SDL_PIXELFORMAT_RGBX8888
SDL_PIXELFORMAT_BGR888
SDL_PIXELFORMAT_BGRX8888
SDL_PIXELFORMAT_ARGB8888
SDL_PIXELFORMAT_RGBA8888
SDL_PIXELFORMAT_ABGR8888
SDL_PIXELFORMAT_BGRA8888
SDL_PIXELFORMAT_ARGB2101010
SDL_PIXELFORMAT_RGBA32
Alias para la matriz de bytes RGBA de datos de color, para la plataforma actual (>= SDL 2.0.5).
SDL_PIXELFORMAT_ARGB32
Alias para la matriz de bytes ARGB de datos de color, para la plataforma actual (>= SDL 2.0.5).
SDL_PIXELFORMAT_BGRA32
Alias para la matriz de bytes BGRA de datos de color, para la plataforma actual (>= SDL 2.0.5).
SDL_PIXELFORMAT_ABGR32
Alias para la matriz de bytes ABGR de datos de color, para la plataforma actual (>= SDL 2.0.5).
SDL_PIXELFORMAT_YV12
Modo plano: Y + V + U (3 planos).
SDL_PIXELFORMAT_IYUV
Modo plano: Y + U + V (3 planos).
SDL_PIXELFORMAT_YUY2
Modo empaquetado: Y0+U0+Y1+V0 (1 plano).
SDL_PIXELFORMAT_UYVY
Modo empaquetado: U0+Y0+V0+Y1 (1 plano).
SDL_PIXELFORMAT_YVYU
Modo empaquetado: Y0+V0+Y1+U0 (1 plano).
SDL_PIXELFORMAT_NV12
Modo planar: Y + U/V intercalados (2 planos) (>= SDL 2.0.4).
SDL_PIXELFORMAT_NV21
Modo planar: Y + V/U intercalados (2 planos) (>= SDL 2.0.4).

Observaciones

El tipo de píxel es uno de los siguientes valores:

  • 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

Dependiendo del tipo de píxel hay tres tipos diferentes de ordenación: mapa de bits, empaquetado o matriz.

Orden de los píxeles del mapa de bits (bit alto -> bit bajo):

  • SDL_BITMAPORDER_NONE
  • SDL_BITMAPORDER_4321
  • SDL_BITMAPORDER_1234

Orden de los componentes empaquetados (bit alto -> bit bajo):

  • 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

Orden de los componentes de la matriz (byte bajo -> byte alto).

  • SDL_ARRAYORDER_NONE
  • SDL_ARRAYORDER_RGB
  • SDL_ARRAYORDER_RGBA
  • SDL_ARRAYORDER_ARGB
  • SDL_ARRAYORDER_BGR
  • SDL_ARRAYORDER_BGRA
  • SDL_ARRAYORDER_ABGR

Los formatos de píxeles empaquetados tienen una de las siguientes distribuciones de canales:

  • 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

Alias de SDL_PIXELFORMAT_*32

SDL_PIXELFORMAT_RGBA32 es un alias para SDL_PIXELFORMAT_RGBA8888 en máquinas big endian y para SDL_PIXELFORMAT_ABGR8888 en máquinas little endian, así que se puede usar para especificar que los píxeles están representados como matrices de bytes RGBA, como SDL_PIXELFORMAT_RGB24 lo está para matrices de bytes RGB.

Sin embargo, al ser sólo un alias, tiene exactamente el mismo valor del tipo alias, por lo que SDL_GetPixelFormatName(SDL_PIXELFORMAT_RGBA32) devolverá el nombre del tipo alias (por ejemplo, "SDL_PIXELFORMAT_ABGR8888"), dependiendo de su plataforma.

Lo mismo se aplica a SDL_PIXELFORMAT_ARGB32, SDL_PIXELFORMAT_BGRA32 y SDL_PIXELFORMAT_ABGR32 (con la única diferencia de que son alias de otros formatos de píxel, por supuesto). Los alias SDL_PIXELFORMAT_*32 están disponibles desde SDL 2.0.5.