|
1 <HTML |
|
2 ><HEAD |
|
3 ><TITLE |
|
4 >SDL_BlitSurface</TITLE |
|
5 ><META |
|
6 NAME="GENERATOR" |
|
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
|
8 "><LINK |
|
9 REL="HOME" |
|
10 TITLE="SDL Library Documentation" |
|
11 HREF="index.html"><LINK |
|
12 REL="UP" |
|
13 TITLE="Video" |
|
14 HREF="video.html"><LINK |
|
15 REL="PREVIOUS" |
|
16 TITLE="SDL_ConvertSurface" |
|
17 HREF="sdlconvertsurface.html"><LINK |
|
18 REL="NEXT" |
|
19 TITLE="SDL_FillRect" |
|
20 HREF="sdlfillrect.html"></HEAD |
|
21 ><BODY |
|
22 CLASS="REFENTRY" |
|
23 BGCOLOR="#FFF8DC" |
|
24 TEXT="#000000" |
|
25 LINK="#0000ee" |
|
26 VLINK="#551a8b" |
|
27 ALINK="#ff0000" |
|
28 ><DIV |
|
29 CLASS="NAVHEADER" |
|
30 ><TABLE |
|
31 SUMMARY="Header navigation table" |
|
32 WIDTH="100%" |
|
33 BORDER="0" |
|
34 CELLPADDING="0" |
|
35 CELLSPACING="0" |
|
36 ><TR |
|
37 ><TH |
|
38 COLSPAN="3" |
|
39 ALIGN="center" |
|
40 >SDL Library Documentation</TH |
|
41 ></TR |
|
42 ><TR |
|
43 ><TD |
|
44 WIDTH="10%" |
|
45 ALIGN="left" |
|
46 VALIGN="bottom" |
|
47 ><A |
|
48 HREF="sdlconvertsurface.html" |
|
49 ACCESSKEY="P" |
|
50 >Prev</A |
|
51 ></TD |
|
52 ><TD |
|
53 WIDTH="80%" |
|
54 ALIGN="center" |
|
55 VALIGN="bottom" |
|
56 ></TD |
|
57 ><TD |
|
58 WIDTH="10%" |
|
59 ALIGN="right" |
|
60 VALIGN="bottom" |
|
61 ><A |
|
62 HREF="sdlfillrect.html" |
|
63 ACCESSKEY="N" |
|
64 >Next</A |
|
65 ></TD |
|
66 ></TR |
|
67 ></TABLE |
|
68 ><HR |
|
69 ALIGN="LEFT" |
|
70 WIDTH="100%"></DIV |
|
71 ><H1 |
|
72 ><A |
|
73 NAME="SDLBLITSURFACE" |
|
74 ></A |
|
75 >SDL_BlitSurface</H1 |
|
76 ><DIV |
|
77 CLASS="REFNAMEDIV" |
|
78 ><A |
|
79 NAME="AEN2299" |
|
80 ></A |
|
81 ><H2 |
|
82 >Name</H2 |
|
83 >SDL_BlitSurface -- This performs a fast blit from the source surface to the destination surface.</DIV |
|
84 ><DIV |
|
85 CLASS="REFSYNOPSISDIV" |
|
86 ><A |
|
87 NAME="AEN2302" |
|
88 ></A |
|
89 ><H2 |
|
90 >Synopsis</H2 |
|
91 ><DIV |
|
92 CLASS="FUNCSYNOPSIS" |
|
93 ><A |
|
94 NAME="AEN2303" |
|
95 ></A |
|
96 ><P |
|
97 ></P |
|
98 ><PRE |
|
99 CLASS="FUNCSYNOPSISINFO" |
|
100 >#include "SDL.h"</PRE |
|
101 ><P |
|
102 ><CODE |
|
103 ><CODE |
|
104 CLASS="FUNCDEF" |
|
105 >int <B |
|
106 CLASS="FSFUNC" |
|
107 >SDL_BlitSurface</B |
|
108 ></CODE |
|
109 >(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);</CODE |
|
110 ></P |
|
111 ><P |
|
112 ></P |
|
113 ></DIV |
|
114 ></DIV |
|
115 ><DIV |
|
116 CLASS="REFSECT1" |
|
117 ><A |
|
118 NAME="AEN2309" |
|
119 ></A |
|
120 ><H2 |
|
121 >Description</H2 |
|
122 ><P |
|
123 >This performs a fast blit from the source surface to the destination surface.</P |
|
124 ><P |
|
125 >The width and height in <TT |
|
126 CLASS="PARAMETER" |
|
127 ><I |
|
128 >srcrect</I |
|
129 ></TT |
|
130 > determine the |
|
131 size of the copied rectangle. Only the position is used in the |
|
132 <TT |
|
133 CLASS="PARAMETER" |
|
134 ><I |
|
135 >dstrect</I |
|
136 ></TT |
|
137 > (the width and height are ignored).</P |
|
138 ><P |
|
139 >If <TT |
|
140 CLASS="PARAMETER" |
|
141 ><I |
|
142 >srcrect</I |
|
143 ></TT |
|
144 > is <TT |
|
145 CLASS="LITERAL" |
|
146 >NULL</TT |
|
147 >, the |
|
148 entire surface is copied. If <TT |
|
149 CLASS="PARAMETER" |
|
150 ><I |
|
151 >dstrect</I |
|
152 ></TT |
|
153 > is |
|
154 <TT |
|
155 CLASS="LITERAL" |
|
156 >NULL</TT |
|
157 >, then the destination position (upper left |
|
158 corner) is (0, 0).</P |
|
159 ><P |
|
160 >The final blit rectangle is saved in |
|
161 <TT |
|
162 CLASS="PARAMETER" |
|
163 ><I |
|
164 >dstrect</I |
|
165 ></TT |
|
166 > after all clipping is performed |
|
167 (<TT |
|
168 CLASS="PARAMETER" |
|
169 ><I |
|
170 >srcrect</I |
|
171 ></TT |
|
172 > is not modified).</P |
|
173 ><P |
|
174 >The blit function should not be called on a locked surface.</P |
|
175 ><P |
|
176 >The results of blitting operations vary greatly depending on whether <TT |
|
177 CLASS="LITERAL" |
|
178 >SDL_SRCAPLHA</TT |
|
179 > is set or not. See <A |
|
180 HREF="sdlsetalpha.html" |
|
181 >SDL_SetAlpha</A |
|
182 > 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. |
|
183 <PRE |
|
184 CLASS="PROGRAMLISTING" |
|
185 >if (source surface has SDL_SRCALPHA set) { |
|
186 if (source surface has alpha channel (that is, format->Amask != 0)) |
|
187 blit using per-pixel alpha, ignoring any colour key |
|
188 else { |
|
189 if (source surface has SDL_SRCCOLORKEY set) |
|
190 blit using the colour key AND the per-surface alpha value |
|
191 else |
|
192 blit using the per-surface alpha value |
|
193 } |
|
194 } else { |
|
195 if (source surface has SDL_SRCCOLORKEY set) |
|
196 blit using the colour key |
|
197 else |
|
198 ordinary opaque rectangular blit |
|
199 }</PRE |
|
200 ></P |
|
201 ></DIV |
|
202 ><DIV |
|
203 CLASS="REFSECT1" |
|
204 ><A |
|
205 NAME="AEN2328" |
|
206 ></A |
|
207 ><H2 |
|
208 >Return Value</H2 |
|
209 ><P |
|
210 >If the blit is successful, it returns <SPAN |
|
211 CLASS="RETURNVALUE" |
|
212 >0</SPAN |
|
213 >, |
|
214 otherwise it returns <SPAN |
|
215 CLASS="RETURNVALUE" |
|
216 >-1</SPAN |
|
217 >.</P |
|
218 ><P |
|
219 >If either of the surfaces were in video memory, and the blit returns |
|
220 <SPAN |
|
221 CLASS="RETURNVALUE" |
|
222 >-2</SPAN |
|
223 >, the video memory was lost, so it should be |
|
224 reloaded with artwork and re-blitted: |
|
225 <PRE |
|
226 CLASS="PROGRAMLISTING" |
|
227 > while ( SDL_BlitSurface(image, imgrect, screen, dstrect) == -2 ) { |
|
228 while ( SDL_LockSurface(image)) < 0 ) |
|
229 SDL_Delay(10); |
|
230 -- Write image pixels to image->pixels -- |
|
231 SDL_UnlockSurface(image); |
|
232 }</PRE |
|
233 > |
|
234 This happens under DirectX 5.0 when the system switches away from your |
|
235 fullscreen application. Locking the surface will also fail until you |
|
236 have access to the video memory again.</P |
|
237 ></DIV |
|
238 ><DIV |
|
239 CLASS="REFSECT1" |
|
240 ><A |
|
241 NAME="AEN2336" |
|
242 ></A |
|
243 ><H2 |
|
244 >See Also</H2 |
|
245 ><P |
|
246 ><A |
|
247 HREF="sdllocksurface.html" |
|
248 ><TT |
|
249 CLASS="FUNCTION" |
|
250 >SDL_LockSurface</TT |
|
251 ></A |
|
252 >, |
|
253 <A |
|
254 HREF="sdlfillrect.html" |
|
255 ><TT |
|
256 CLASS="FUNCTION" |
|
257 >SDL_FillRect</TT |
|
258 ></A |
|
259 >, |
|
260 <A |
|
261 HREF="sdlsurface.html" |
|
262 ><SPAN |
|
263 CLASS="STRUCTNAME" |
|
264 >SDL_Surface</SPAN |
|
265 ></A |
|
266 >, |
|
267 <A |
|
268 HREF="sdlrect.html" |
|
269 ><SPAN |
|
270 CLASS="STRUCTNAME" |
|
271 >SDL_Rect</SPAN |
|
272 ></A |
|
273 ></P |
|
274 ></DIV |
|
275 ><DIV |
|
276 CLASS="NAVFOOTER" |
|
277 ><HR |
|
278 ALIGN="LEFT" |
|
279 WIDTH="100%"><TABLE |
|
280 SUMMARY="Footer navigation table" |
|
281 WIDTH="100%" |
|
282 BORDER="0" |
|
283 CELLPADDING="0" |
|
284 CELLSPACING="0" |
|
285 ><TR |
|
286 ><TD |
|
287 WIDTH="33%" |
|
288 ALIGN="left" |
|
289 VALIGN="top" |
|
290 ><A |
|
291 HREF="sdlconvertsurface.html" |
|
292 ACCESSKEY="P" |
|
293 >Prev</A |
|
294 ></TD |
|
295 ><TD |
|
296 WIDTH="34%" |
|
297 ALIGN="center" |
|
298 VALIGN="top" |
|
299 ><A |
|
300 HREF="index.html" |
|
301 ACCESSKEY="H" |
|
302 >Home</A |
|
303 ></TD |
|
304 ><TD |
|
305 WIDTH="33%" |
|
306 ALIGN="right" |
|
307 VALIGN="top" |
|
308 ><A |
|
309 HREF="sdlfillrect.html" |
|
310 ACCESSKEY="N" |
|
311 >Next</A |
|
312 ></TD |
|
313 ></TR |
|
314 ><TR |
|
315 ><TD |
|
316 WIDTH="33%" |
|
317 ALIGN="left" |
|
318 VALIGN="top" |
|
319 >SDL_ConvertSurface</TD |
|
320 ><TD |
|
321 WIDTH="34%" |
|
322 ALIGN="center" |
|
323 VALIGN="top" |
|
324 ><A |
|
325 HREF="video.html" |
|
326 ACCESSKEY="U" |
|
327 >Up</A |
|
328 ></TD |
|
329 ><TD |
|
330 WIDTH="33%" |
|
331 ALIGN="right" |
|
332 VALIGN="top" |
|
333 >SDL_FillRect</TD |
|
334 ></TR |
|
335 ></TABLE |
|
336 ></DIV |
|
337 ></BODY |
|
338 ></HTML |
|
339 > |