SDL Library Documentation
Prev |  | Next

# SDL_Surface

## Name

SDL_Surface -- Graphical Surface Structure

## Structure Definition

    typedef struct SDL_Surface {
            Uint32 flags;                           /* Read-only */
            SDL_PixelFormat *format;                /* Read-only */
            int w, h;                               /* Read-only */
            Uint16 pitch;                           /* Read-only */
            void *pixels;                           /* Read-write */
            int offset;                             /* Private */

            /* Hardware-specific surface info */
            struct private_hwdata *hwdata;

            /* clipping information */
            SDL_Rect clip_rect;                     /* Read-only */
            Uint32 unused1;                         /* for binary compatibility */
            Uint32 unused2;                         /* for binary compatibility */

            /* info for fast blit mapping to other surfaces */
            struct SDL_BlitMap *map;                /* Private */

            /* format version, bumped at every change to invalidate blit maps */
            unsigned int format_version;            /* Private */

            /* Reference count -- used when freeing surface */
            int refcount;                           /* Read-mostly */
    } SDL_Surface;

## Structure Data

`flags` | Surface flags
`format` | Pixel format
`w, h` | Width and height of the surface
`pitch` | Length of a surface scanline in bytes
`pixels` | Pointer to the actual pixel data
`clip_minx, clip_maxx` | X clip coords
`clip_rect` | surface clip rectangle

## Description

SDL_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_SRCOLORKEY` | 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

## See Also

SDL_PixelFormat

Prev | Home | Next
SDL_PixelFormat | Up | SDL_VideoInfo