TSDL_Surface = record
flags: uint32; // Read-only
format: PSDL_PixelFormat; // Read-only
w, h: Integer; // Read-only
pitch: Uint16; // Read-only
pixels: Pointer; // Read-write
offset: Integer; // Private
hwdata: Pointer; //TPrivate_hwdata; Hardware-specific surface info
// clipping information:
clip_rect: TSDL_Rect; // Read-only
unused1: Uint32; // for binary compatibility
// Allow recursive locks
locked: Uint32; // Private
// info for fast blit mapping to other surfaces
Blitmap: Pointer; // PSDL_BlitMap; // Private
// format version, bumped at every change to invalidate blit maps
format_version: Cardinal; // Private
refcount: Integer;
end;
TSDL_Surface's represent areas of "graphical" memory, memory that can be drawn to. The video framebuffer is returned as a SDL_Surface by SDL_SetVideoMode and SDL_GetVideoSurface. Most of the fields should be pretty obvious. w and h are the width and height of the surface in pixels. pixels is a pointer to the actual pixel data, the surface should be locked before accessing this field. The clip_rect field is the clipping rectangle as set by SDL_SetClipRect .
The following are supported in the flags field.
SDL_SWSURFACE | Surface is stored in system memory |
SDL_HWSURFACE | Surface is stored in video memory |
SDL_ASYNCBLIT | Surface uses asynchronous blits if possible |
SDL_ANYFORMAT | Allows any pixel-format (Display surface) |
SDL_HWPALETTE | Surface has exclusive palette |
SDL_DOUBLEBUF | Surface is double buffered (Display surface) |
SDL_FULLSCREEN | Surface is full screen (Display Surface) |
SDL_OPENGL | Surface has an OpenGL context (Display Surface) |
SDL_OPENGLBLIT | Surface supports OpenGL blitting (Display Surface) |
SDL_RESIZABLE | Surface is resizable (Display Surface) |
SDL_HWACCEL | Surface blit uses hardware acceleration |
SDL_SRCCOLORKEY | Surface use colorkey blitting |
SDL_RLEACCEL | Colorkey blitting is accelerated with RLE |
SDL_SRCALPHA | Surface blit uses alpha blending |
SDL_PREALLOC | Surface uses preallocated memory |