Mercurial > sdl-ios-xcode
annotate docs/html/sdlsetcolorkey.html @ 876:9e84d106ec19
(Said Max Horn on the SDL mailing list...)
Hi folks,
based on Eric Wing's patch, I created the attached patch which fixes
the OpenGL coordinate inversion bug in SDL. It works fine over here on
10.3 with Ryan's test program (which I also attached).
There is another change in it: I removed the "- 1" in the two lines
using CGDisplayPixelsHigh()... while I understand from a logical point
of view why they *should* be correct, I checked the actual values
computed that way, and they were off-by-one. After removing the " - 1",
the returned mouse coordinates are correct. I checked this by moving
the mouse to the screen top/bottom in fullscreen mode, BTW. With the
change, the proper values 0 and 479 are returned (in 640x480 mode).
Sam, you may still want to test on 10.1, it's very simple using Ryan's
minimal test code :-)
Cheers,
Max
(Here is the reproduction case for revision history's sake...)
/*
* To compile:
* gcc -o test test.c `sdl-config --cflags` `sdl-config --libs` -framework OpenGL
*
* --ryan.
*/
#include <stdio.h>
#include "SDL.h"
#include "SDL_opengl.h"
int main(int argc, char **argv)
{
Uint32 flags = SDL_OPENGL /* | SDL_FULLSCREEN */;
SDL_Surface *screen;
SDL_Event event;
int done = 0;
GLfloat ratio;
SDL_Init(SDL_INIT_VIDEO);
SDL_ShowCursor(0);
if ((argv[1]) && (strcmp(argv[1], "--grab") == 0))
SDL_WM_GrabInput(SDL_GRAB_ON);
screen = SDL_SetVideoMode(640, 480, 0, flags);
if (!screen)
return(42);
ratio = ((GLfloat) screen->w) / ((GLfloat) screen->h);
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glClearDepth( 1.0f );
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LEQUAL );
glViewport( 0, 0, screen->w, screen->h);
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 45.0f, ratio, 0.1f, 100.0f );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
SDL_GL_SwapBuffers();
// eh, close enough.
#define MAX_X 6.12
#define MAX_Y 4.50
while (!done)
{
int x, y;
GLfloat glx, gly;
if (!SDL_WaitEvent(&event))
break;
switch (event.type)
{
case SDL_KEYUP:
if (event.key.keysym.sym == SDLK_ESCAPE)
done = 1;
break;
}
SDL_GetMouseState(&x, &y);
glx = ((((GLfloat) x) / ((GLfloat) screen->w)) - 0.5f) * MAX_X;
gly = ((((GLfloat) y) / ((GLfloat) screen->h)) - 0.5f) * MAX_Y;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(glx,-gly,-6.0f);
glBegin(GL_TRIANGLES);
glColor3f(1,0,0); glVertex3f( 0.00f, 0.25f, 0.00f);
glColor3f(0,1,0); glVertex3f(-0.25f, -0.25f, 0.00f);
glColor3f(0,0,1); glVertex3f( 0.25f, -0.25f, 0.00f);
glEnd();
SDL_GL_SwapBuffers();
}
SDL_Quit();
return(0);
}
/* end of test.c ... */
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Mon, 22 Mar 2004 09:38:20 +0000 |
parents | 355632dca928 |
children |
rev | line source |
---|---|
0 | 1 <HTML |
2 ><HEAD | |
3 ><TITLE | |
4 >SDL_SetColorKey</TITLE | |
5 ><META | |
6 NAME="GENERATOR" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
0 | 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_SaveBMP" | |
17 HREF="sdlsavebmp.html"><LINK | |
18 REL="NEXT" | |
19 TITLE="SDL_SetAlpha" | |
20 HREF="sdlsetalpha.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 | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
31 SUMMARY="Header navigation table" |
0 | 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="sdlsavebmp.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
49 ACCESSKEY="P" |
0 | 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="sdlsetalpha.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
63 ACCESSKEY="N" |
0 | 64 >Next</A |
65 ></TD | |
66 ></TR | |
67 ></TABLE | |
68 ><HR | |
69 ALIGN="LEFT" | |
70 WIDTH="100%"></DIV | |
71 ><H1 | |
72 ><A | |
73 NAME="SDLSETCOLORKEY" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
74 ></A |
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
75 >SDL_SetColorKey</H1 |
0 | 76 ><DIV |
77 CLASS="REFNAMEDIV" | |
78 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
79 NAME="AEN2045" |
0 | 80 ></A |
81 ><H2 | |
82 >Name</H2 | |
83 >SDL_SetColorKey -- Sets the color key (transparent pixel) in a blittable surface and | |
84 RLE acceleration.</DIV | |
85 ><DIV | |
86 CLASS="REFSYNOPSISDIV" | |
87 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
88 NAME="AEN2048" |
0 | 89 ></A |
90 ><H2 | |
91 >Synopsis</H2 | |
92 ><DIV | |
93 CLASS="FUNCSYNOPSIS" | |
94 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
95 NAME="AEN2049" |
0 | 96 ></A |
97 ><P | |
98 ></P | |
99 ><PRE | |
100 CLASS="FUNCSYNOPSISINFO" | |
101 >#include "SDL.h"</PRE | |
102 ><P | |
103 ><CODE | |
104 ><CODE | |
105 CLASS="FUNCDEF" | |
106 >int <B | |
107 CLASS="FSFUNC" | |
108 >SDL_SetColorKey</B | |
109 ></CODE | |
110 >(SDL_Surface *surface, Uint32 flag, Uint32 key);</CODE | |
111 ></P | |
112 ><P | |
113 ></P | |
114 ></DIV | |
115 ></DIV | |
116 ><DIV | |
117 CLASS="REFSECT1" | |
118 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
119 NAME="AEN2055" |
0 | 120 ></A |
121 ><H2 | |
122 >Description</H2 | |
123 ><P | |
124 > Sets the color key (transparent pixel) in a blittable surface and enables or | |
125 disables RLE blit acceleration.</P | |
126 ><P | |
127 >RLE acceleration can substantially speed up blitting of images with large | |
128 horizontal runs of transparent pixels (i.e., pixels that match the | |
129 <TT | |
130 CLASS="PARAMETER" | |
131 ><I | |
132 >key</I | |
133 ></TT | |
134 > value). The <TT | |
135 CLASS="PARAMETER" | |
136 ><I | |
137 >key</I | |
138 ></TT | |
139 > must be of the same pixel format as the <TT | |
140 CLASS="PARAMETER" | |
141 ><I | |
142 >surface</I | |
143 ></TT | |
144 >, <A | |
145 HREF="sdlmaprgb.html" | |
146 ><TT | |
147 CLASS="FUNCTION" | |
148 >SDL_MapRGB</TT | |
149 ></A | |
150 > is often useful for obtaining an acceptable value.</P | |
151 ><P | |
152 >If <TT | |
153 CLASS="PARAMETER" | |
154 ><I | |
155 >flag</I | |
156 ></TT | |
157 > is <TT | |
158 CLASS="LITERAL" | |
159 >SDL_SRCCOLORKEY</TT | |
160 > then | |
161 <TT | |
162 CLASS="PARAMETER" | |
163 ><I | |
164 >key</I | |
165 ></TT | |
166 > is the transparent pixel value in the source image of a | |
167 blit.</P | |
168 ><P | |
169 >If <TT | |
170 CLASS="PARAMETER" | |
171 ><I | |
172 >flag</I | |
173 ></TT | |
174 > is OR'd with | |
175 <TT | |
176 CLASS="LITERAL" | |
177 >SDL_RLEACCEL</TT | |
178 > then the surface will be draw using RLE | |
179 acceleration when drawn with | |
180 <A | |
181 HREF="sdlblitsurface.html" | |
182 >SDL_BlitSurface</A | |
183 >. The surface will | |
184 actually be encoded for RLE acceleration the first time | |
185 <A | |
186 HREF="sdlblitsurface.html" | |
187 >SDL_BlitSurface</A | |
188 > or | |
189 <A | |
190 HREF="sdldisplayformat.html" | |
191 >SDL_DisplayFormat</A | |
192 > is called on the | |
193 surface.</P | |
194 ><P | |
195 >If <TT | |
196 CLASS="PARAMETER" | |
197 ><I | |
198 >flag</I | |
199 ></TT | |
200 > is 0, this function clears | |
201 any current color key.</P | |
202 ></DIV | |
203 ><DIV | |
204 CLASS="REFSECT1" | |
205 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
206 NAME="AEN2076" |
0 | 207 ></A |
208 ><H2 | |
209 >Return Value</H2 | |
210 ><P | |
211 >This function returns <SPAN | |
212 CLASS="RETURNVALUE" | |
213 >0</SPAN | |
214 >, or | |
215 <SPAN | |
216 CLASS="RETURNVALUE" | |
217 >-1</SPAN | |
218 > if there was an error.</P | |
219 ></DIV | |
220 ><DIV | |
221 CLASS="REFSECT1" | |
222 ><A | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
223 NAME="AEN2081" |
0 | 224 ></A |
225 ><H2 | |
226 >See Also</H2 | |
227 ><P | |
228 ><A | |
229 HREF="sdlblitsurface.html" | |
230 ><TT | |
231 CLASS="FUNCTION" | |
232 >SDL_BlitSurface</TT | |
233 ></A | |
234 >, | |
235 <A | |
236 HREF="sdldisplayformat.html" | |
237 ><TT | |
238 CLASS="FUNCTION" | |
239 >SDL_DisplayFormat</TT | |
240 ></A | |
241 >, | |
242 <A | |
243 HREF="sdlmaprgb.html" | |
244 ><TT | |
245 CLASS="FUNCTION" | |
246 >SDL_MapRGB</TT | |
247 ></A | |
248 >, | |
249 <A | |
250 HREF="sdlsetalpha.html" | |
251 ><TT | |
252 CLASS="FUNCTION" | |
253 >SDL_SetAlpha</TT | |
254 ></A | |
255 ></P | |
256 ></DIV | |
257 ><DIV | |
258 CLASS="NAVFOOTER" | |
259 ><HR | |
260 ALIGN="LEFT" | |
261 WIDTH="100%"><TABLE | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
262 SUMMARY="Footer navigation table" |
0 | 263 WIDTH="100%" |
264 BORDER="0" | |
265 CELLPADDING="0" | |
266 CELLSPACING="0" | |
267 ><TR | |
268 ><TD | |
269 WIDTH="33%" | |
270 ALIGN="left" | |
271 VALIGN="top" | |
272 ><A | |
273 HREF="sdlsavebmp.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
274 ACCESSKEY="P" |
0 | 275 >Prev</A |
276 ></TD | |
277 ><TD | |
278 WIDTH="34%" | |
279 ALIGN="center" | |
280 VALIGN="top" | |
281 ><A | |
282 HREF="index.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
283 ACCESSKEY="H" |
0 | 284 >Home</A |
285 ></TD | |
286 ><TD | |
287 WIDTH="33%" | |
288 ALIGN="right" | |
289 VALIGN="top" | |
290 ><A | |
291 HREF="sdlsetalpha.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
292 ACCESSKEY="N" |
0 | 293 >Next</A |
294 ></TD | |
295 ></TR | |
296 ><TR | |
297 ><TD | |
298 WIDTH="33%" | |
299 ALIGN="left" | |
300 VALIGN="top" | |
301 >SDL_SaveBMP</TD | |
302 ><TD | |
303 WIDTH="34%" | |
304 ALIGN="center" | |
305 VALIGN="top" | |
306 ><A | |
307 HREF="video.html" | |
803
355632dca928
Updated SDL HTML documentation
Sam Lantinga <slouken@libsdl.org>
parents:
181
diff
changeset
|
308 ACCESSKEY="U" |
0 | 309 >Up</A |
310 ></TD | |
311 ><TD | |
312 WIDTH="33%" | |
313 ALIGN="right" | |
314 VALIGN="top" | |
315 >SDL_SetAlpha</TD | |
316 ></TR | |
317 ></TABLE | |
318 ></DIV | |
319 ></BODY | |
320 ></HTML | |
321 > |