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);
}