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