2001-04-26 16:45:43 +00:00
< HTML
>< HEAD
>< TITLE
>SDL_BlitSurface< /TITLE
>< META
NAME="GENERATOR"
2004-02-10 15:15:40 +00:00
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
2001-04-26 16:45:43 +00:00
">< LINK
REL="HOME"
TITLE="SDL Library Documentation"
HREF="index.html">< LINK
REL="UP"
TITLE="Video"
HREF="video.html">< LINK
REL="PREVIOUS"
TITLE="SDL_ConvertSurface"
HREF="sdlconvertsurface.html">< LINK
REL="NEXT"
TITLE="SDL_FillRect"
HREF="sdlfillrect.html">< /HEAD
>< BODY
CLASS="REFENTRY"
BGCOLOR="#FFF8DC"
TEXT="#000000"
LINK="#0000ee"
VLINK="#551a8b"
ALINK="#ff0000"
>< DIV
CLASS="NAVHEADER"
>< TABLE
2004-02-10 15:15:40 +00:00
SUMMARY="Header navigation table"
2001-04-26 16:45:43 +00:00
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
>< TR
>< TH
COLSPAN="3"
ALIGN="center"
>SDL Library Documentation< /TH
>< /TR
>< TR
>< TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
>< A
HREF="sdlconvertsurface.html"
2004-02-10 15:15:40 +00:00
ACCESSKEY="P"
2001-04-26 16:45:43 +00:00
>Prev< /A
>< /TD
>< TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>< /TD
>< TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
>< A
HREF="sdlfillrect.html"
2004-02-10 15:15:40 +00:00
ACCESSKEY="N"
2001-04-26 16:45:43 +00:00
>Next< /A
>< /TD
>< /TR
>< /TABLE
>< HR
ALIGN="LEFT"
WIDTH="100%">< /DIV
>< H1
>< A
NAME="SDLBLITSURFACE"
2004-02-10 15:15:40 +00:00
>< /A
>SDL_BlitSurface< /H1
2001-04-26 16:45:43 +00:00
>< DIV
CLASS="REFNAMEDIV"
>< A
2004-02-10 15:15:40 +00:00
NAME="AEN2299"
2001-04-26 16:45:43 +00:00
>< /A
>< H2
>Name< /H2
>SDL_BlitSurface -- This performs a fast blit from the source surface to the destination surface.< /DIV
>< DIV
CLASS="REFSYNOPSISDIV"
>< A
2004-02-10 15:15:40 +00:00
NAME="AEN2302"
2001-04-26 16:45:43 +00:00
>< /A
>< H2
>Synopsis< /H2
>< DIV
CLASS="FUNCSYNOPSIS"
>< A
2004-02-10 15:15:40 +00:00
NAME="AEN2303"
2001-04-26 16:45:43 +00:00
>< /A
>< P
>< /P
>< PRE
CLASS="FUNCSYNOPSISINFO"
>#include "SDL.h"< /PRE
>< P
>< CODE
>< CODE
CLASS="FUNCDEF"
>int < B
CLASS="FSFUNC"
>SDL_BlitSurface< /B
>< /CODE
>(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);< /CODE
>< /P
>< P
>< /P
>< /DIV
>< /DIV
>< DIV
CLASS="REFSECT1"
>< A
2004-02-10 15:15:40 +00:00
NAME="AEN2309"
2001-04-26 16:45:43 +00:00
>< /A
>< H2
>Description< /H2
>< P
>This performs a fast blit from the source surface to the destination surface.< /P
>< P
2004-02-10 15:15:40 +00:00
>The width and height in < TT
2001-04-26 16:45:43 +00:00
CLASS="PARAMETER"
>< I
>srcrect< /I
>< /TT
2004-02-10 15:15:40 +00:00
> determine the
size of the copied rectangle. Only the position is used in the
2001-04-26 16:45:43 +00:00
< TT
CLASS="PARAMETER"
>< I
>dstrect< /I
>< /TT
2004-02-10 15:15:40 +00:00
> (the width and height are ignored).< /P
>< P
>If < TT
2001-04-26 16:45:43 +00:00
CLASS="PARAMETER"
>< I
2004-02-10 15:15:40 +00:00
>srcrect< /I
2001-04-26 16:45:43 +00:00
>< /TT
2004-02-10 15:15:40 +00:00
> is < TT
CLASS="LITERAL"
>NULL< /TT
>, the
entire surface is copied. If < TT
2001-04-26 16:45:43 +00:00
CLASS="PARAMETER"
>< I
2004-02-10 15:15:40 +00:00
>dstrect< /I
2001-04-26 16:45:43 +00:00
>< /TT
2004-02-10 15:15:40 +00:00
> is
< TT
CLASS="LITERAL"
>NULL< /TT
>, then the destination position (upper left
corner) is (0, 0).< /P
2001-04-26 16:45:43 +00:00
>< P
>The final blit rectangle is saved in
< TT
CLASS="PARAMETER"
>< I
>dstrect< /I
>< /TT
> after all clipping is performed
(< TT
CLASS="PARAMETER"
>< I
>srcrect< /I
>< /TT
> is not modified).< /P
>< P
>The blit function should not be called on a locked surface.< /P
>< P
>The results of blitting operations vary greatly depending on whether < TT
CLASS="LITERAL"
>SDL_SRCAPLHA< /TT
> is set or not. See < A
HREF="sdlsetalpha.html"
>SDL_SetAlpha< /A
2001-06-10 19:31:57 +00:00
> 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.
< PRE
CLASS="PROGRAMLISTING"
>if (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
}< /PRE
>< /P
2001-04-26 16:45:43 +00:00
>< /DIV
>< DIV
CLASS="REFSECT1"
>< A
2004-02-10 15:15:40 +00:00
NAME="AEN2328"
2001-04-26 16:45:43 +00:00
>< /A
>< H2
>Return Value< /H2
>< P
>If the blit is successful, it returns < SPAN
CLASS="RETURNVALUE"
>0< /SPAN
>,
otherwise it returns < SPAN
CLASS="RETURNVALUE"
>-1< /SPAN
>.< /P
>< P
>If either of the surfaces were in video memory, and the blit returns
< SPAN
CLASS="RETURNVALUE"
>-2< /SPAN
>, the video memory was lost, so it should be
reloaded with artwork and re-blitted:
< PRE
CLASS="PROGRAMLISTING"
> while ( SDL_BlitSurface(image, imgrect, screen, dstrect) == -2 ) {
while ( SDL_LockSurface(image)) < 0 )
2004-02-10 15:15:40 +00:00
SDL_Delay(10);
2001-04-26 16:45:43 +00:00
-- Write image pixels to image-> pixels --
SDL_UnlockSurface(image);
}< /PRE
>
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.< /P
>< /DIV
>< DIV
CLASS="REFSECT1"
>< A
2004-02-10 15:15:40 +00:00
NAME="AEN2336"
2001-04-26 16:45:43 +00:00
>< /A
>< H2
>See Also< /H2
>< P
>< A
HREF="sdllocksurface.html"
>< TT
CLASS="FUNCTION"
>SDL_LockSurface< /TT
>< /A
>,
< A
HREF="sdlfillrect.html"
>< TT
CLASS="FUNCTION"
>SDL_FillRect< /TT
>< /A
>,
< A
HREF="sdlsurface.html"
>< SPAN
CLASS="STRUCTNAME"
>SDL_Surface< /SPAN
>< /A
>,
< A
HREF="sdlrect.html"
>< SPAN
CLASS="STRUCTNAME"
>SDL_Rect< /SPAN
>< /A
>< /P
>< /DIV
>< DIV
CLASS="NAVFOOTER"
>< HR
ALIGN="LEFT"
WIDTH="100%">< TABLE
2004-02-10 15:15:40 +00:00
SUMMARY="Footer navigation table"
2001-04-26 16:45:43 +00:00
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
>< TR
>< TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>< A
HREF="sdlconvertsurface.html"
2004-02-10 15:15:40 +00:00
ACCESSKEY="P"
2001-04-26 16:45:43 +00:00
>Prev< /A
>< /TD
>< TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>< A
HREF="index.html"
2004-02-10 15:15:40 +00:00
ACCESSKEY="H"
2001-04-26 16:45:43 +00:00
>Home< /A
>< /TD
>< TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>< A
HREF="sdlfillrect.html"
2004-02-10 15:15:40 +00:00
ACCESSKEY="N"
2001-04-26 16:45:43 +00:00
>Next< /A
>< /TD
>< /TR
>< TR
>< TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>SDL_ConvertSurface< /TD
>< TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>< A
HREF="video.html"
2004-02-10 15:15:40 +00:00
ACCESSKEY="U"
2001-04-26 16:45:43 +00:00
>Up< /A
>< /TD
>< TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>SDL_FillRect< /TD
>< /TR
>< /TABLE
>< /DIV
>< /BODY
>< /HTML
>