SDL_surface.h
Estructura SDL_Surface
Una estructura que contiene una colección de pixels usados en el software de mezcla.
typedef struct SDL_Surface
{
Uint32 flags; /**< Read-only */
SDL_PixelFormat *format; /**< Read-only */
int w, h; /**< Read-only */
int pitch; /**< Read-only */
void *pixels; /**< Read-write */
/** Application data associated with the surface */
void *userdata; /**< Read-write */
/** information needed for surfaces requiring locks */
int locked; /**< Read-only */
/** list of BlitMap that hold a reference to this surface */
void *list_blitmap; /**< Private */
/** clipping information */
SDL_Rect clip_rect; /**< Read-only */
/** info for fast blit mapping to other surfaces */
SDL_BlitMap *map; /**< Private */
/** Reference count -- used when freeing surface */
int refcount; /**< Read-mostly */
} SDL_Surface;
Miembros
- flags
- (Para uso interno).
- format
- El formato de los pixels almacenados en la superfice; ver SDL_PixelFormat para más detalles. (Solo lectura).
- w, h
- La anchura y altura en pixels. (Solo lectura).
- pitch
- La longitud de una fila de pixels en bytes. (Solo lectura).
- pixels
- Un puntero a los datos de los pixels. Ver las observaciones para más detalles. (Lectura/escritura).
- userdata
- Un puntero arbitrario que se puede asignar. (Lectura/escritura).
- locked
- Usado por superficies que requieran bloqueo (uso interno).
- lock_data
- Usado por superficies que requieran bloqueo (uso interno).
- clip_rect
- Una estructura SDL_Rect utilizada para recortar blits a la superficie que puede ser establecida por SDL_SetClipRect() (solo lectura)
- map
- Información para el mapeo rápido a otras superficies (Para uso interno)
- refcount
- Recuento de referencias que puede ser incrementado por la aplicación.
Observaciones
Con la mayoría de las superficies se puede acceder a los píxeles directamente. Las superficies que han sido optimizadas con SDL_SetSurfaceRLE() deben ser bloqueadas con SDL_LockSurface() antes de acceder a los píxeles. Cuando se haya terminado se debe llamar a SDL_UnlockSurface() antes de hacer blitting.
Ejemplo
/* This is meant to show how to edit a surface's pixels on the CPU, but
normally you should use SDL_FillRect() to wipe a surface's contents. */
void WipeSurface(SDL_Surface *surface)
{
/* This is fast for surfaces that don't require locking. */
/* Once locked, surface->pixels is safe to access. */
SDL_LockSurface(surface);
/* This assumes that color value zero is black. Use
SDL_MapRGBA() for more robust surface color mapping! */
/* height times pitch is the size of the surface's whole buffer. */
SDL_memset(surface->pixels, 0, surface->h * surface->pitch);
SDL_UnlockSurface(surface);
}