SDL_image.h

Función IMG_LoadTyped_RW

Sintaxis

SDL_Surface * IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, const char *type);

Descripción

Carga una imagen de una fuente de datos SDL en una superficie de software.

Parámetros

src
Un SDL_RWops del que se leerán los datos.
freesrc
Distinto de cero para cerrar/liberar el SDL_RWops antes de volver, cero para dejarlo abierto.
type
Una extensión de nombre de archivo que represente estos datos ("BMP", "GIF", "PNG", etc).

Valor de retorno

Devuelve una nueva superficie SDL, o NULL en caso de error.

Observaciones

Una SDL_Surface es un buffer de píxeles en memoria accesible por la CPU. Utilizarlo si se planea pasar los datos a otra cosa o manipularlos posteriormente en código.

No hay garantías sobre qué formato tendrán los nuevos datos de SDL_Surface; en muchos casos, SDL_image intentará proporcionar una superficie que coincida exactamente con la imagen proporcionada, pero en otros puede que tenga que convertirla (ya sea porque la imagen está en un formato que SDL no soporta directamente o porque son datos comprimidos que podrían descomprimirse razonablemente a varios formatos y SDL_image tuvo que elegir uno). Puede inspeccionar una SDL_Surface para conocer sus características específicas y utilizar SDL_ConvertSurface para migrarla a cualquier formato compatible.

Si el formato de imagen soporta un píxel transparente, SDL establecerá la clave de color para la superficie. Después puede activar la aceleración RLE en la superficie llamando a: SDL_SetColorKey(image, SDL_RLEACCEL, image->format->colorkey);

Si freesrc es distinto de cero, el RWops se cerrará antes de volver, tanto si esta función tiene éxito como si no. SDL_image lee todo lo que necesita del RWops durante esta llamada en cualquier caso.

Aunque esta función acepte un tipo de archivo, SDL_image puede probar otros decodificadores que sean capaces de detectar el tipo de archivo a partir del contenido de los datos de la imagen, pero puede confiar en la cadena de tipo proporcionada por el llamante para formatos que no pueda detectar automáticamente. Si type es NULL, SDL_image se basará únicamente en su capacidad para adivinar el formato.

Hay una función separada para leer archivos del disco sin tener que lidiar con SDL_RWops: IMG_Load("nombrearchivo.jpg") llamará a esta función y gestionará esos detalles, determinando el tipo de archivo a partir de la extensión del nombre del archivo.

También existe IMG_Load_RW(), que es equivalente a esta función excepto que se basará en SDL_image para determinar qué tipo de datos está cargando, de forma similar a pasar un NULL para el tipo.

Si se está utilizando la API de renderizado 2D de SDL, existe una llamada equivalente para cargar imágenes directamente en una SDL_Texture para su uso por la GPU sin utilizar una superficie de software: llamar a IMG_LoadTextureTyped_RW() en su lugar.

Cuando se termine de utilizar la superficie devuelta, la aplicación debe deshacerse de ella con una llamada a SDL_FreeSurface().