view docs/man3/SDL_BlitSurface.3 @ 911:04a403e4ccf5

Date: Mon, 3 May 2004 03:15:01 +0100 From: David Symmonds Subject: SDL Typedef Structs Hi, Thanks for the SDL libraries, I have been using them for about a year now and they are really brilliant. One thing that I have just found whilst using them through C++ (and needing forward declarations) is that when you typedef structs you sometimes use typedef struct Name { ... }Name; e.g. SDL_Surface and other times use typedef struct { ... }Name; e.g. SDL_Rect The first type works fine, when I define a header file I can just put 'struct Name;' at the top and use the Name throughout. However, the second type is harder to use in a header, and I haven't found a way yet, other than to include 'SDL.h' in the header file (undesirable). Would there be any harm in changing the definition of SDL_Rect and such like to the second form?
author Sam Lantinga <slouken@libsdl.org>
date Sun, 18 Jul 2004 22:57:40 +0000
parents e5bc29de3f0a
children 546f7c1eb755
line wrap: on
line source

.TH "SDL_BlitSurface" "3" "Tue 11 Sep 2001, 23:01" "SDL" "SDL API Reference" 
.SH "NAME"
SDL_BlitSurface\- This performs a fast blit from the source surface to the destination surface\&.
.SH "SYNOPSIS"
.PP
\fB#include "SDL\&.h"
.sp
\fBint \fBSDL_BlitSurface\fP\fR(\fBSDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect\fR);
.SH "DESCRIPTION"
.PP
This performs a fast blit from the source surface to the destination surface\&.
.PP
Only the position is used in the \fBdstrect\fR (the width and height are ignored)\&.
.PP
If either \fBsrcrect\fR or \fBdstrect\fR are \fBNULL\fP, the entire surface (\fBsrc\fR or \fBdst\fR) is copied\&.
.PP
The final blit rectangle is saved in \fBdstrect\fR after all clipping is performed (\fBsrcrect\fR is not modified)\&.
.PP
The blit function should not be called on a locked surface\&.
.PP
The results of blitting operations vary greatly depending on whether \fBSDL_SRCAPLHA\fP is set or not\&. See \fISDL_SetAlpha\fR for an explaination of how this affects your results\&. Colorkeying and alpha attributes also interact with surface blitting, as the following pseudo-code should hopefully explain\&. 
.PP
.nf
\f(CWif (source surface has SDL_SRCALPHA set) {
    if (source surface has alpha channel (that is, format->Amask != 0))
        blit using per-pixel alpha, ignoring any colour key
    else {
        if (source surface has SDL_SRCCOLORKEY set)
            blit using the colour key AND the per-surface alpha value
        else
            blit using the per-surface alpha value
    }
} else {
    if (source surface has SDL_SRCCOLORKEY set)
        blit using the colour key
    else
        ordinary opaque rectangular blit
}\fR
.fi
.PP
.SH "RETURN VALUE"
.PP
If the blit is successful, it returns \fB0\fR, otherwise it returns \fB-1\fR\&.
.PP
If either of the surfaces were in video memory, and the blit returns \fB-2\fR, the video memory was lost, so it should be reloaded with artwork and re-blitted: 
.PP
.nf
\f(CW        while ( SDL_BlitSurface(image, imgrect, screen, dstrect) == -2 ) {
                while ( SDL_LockSurface(image)) < 0 )
                        Sleep(10);
                -- Write image pixels to image->pixels --
                SDL_UnlockSurface(image);
        }\fR
.fi
.PP
 This happens under DirectX 5\&.0 when the system switches away from your fullscreen application\&. Locking the surface will also fail until you have access to the video memory again\&.
.SH "SEE ALSO"
.PP
\fI\fBSDL_LockSurface\fP\fR, \fI\fBSDL_FillRect\fP\fR, \fI\fBSDL_Surface\fR\fR, \fI\fBSDL_Rect\fR\fR
...\" created by instant / docbook-to-man, Tue 11 Sep 2001, 23:01