Mercurial > sdl-ios-xcode
comparison test/testwm.c @ 826:3eddf51b649b
Showed how to toggle fullscreen mode if the API isn't supported
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 15 Feb 2004 20:31:27 +0000 |
parents | a30b17e09cc0 |
children | be9c9c8f6d53 |
comparison
equal
deleted
inserted
replaced
825:618fcc5861c8 | 826:3eddf51b649b |
---|---|
7 | 7 |
8 #include "SDL.h" | 8 #include "SDL.h" |
9 | 9 |
10 /* Is the cursor visible? */ | 10 /* Is the cursor visible? */ |
11 static int visible = 1; | 11 static int visible = 1; |
12 | |
13 static Uint8 video_bpp; | |
14 static Uint32 video_flags; | |
15 | |
16 int SetVideoMode(int w, int h) | |
17 { | |
18 SDL_Surface *screen; | |
19 int i; | |
20 Uint8 *buffer; | |
21 SDL_Color palette[256]; | |
22 | |
23 screen = SDL_SetVideoMode(w, h, video_bpp, video_flags); | |
24 if ( screen == NULL ) { | |
25 fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", | |
26 w, h, video_bpp, SDL_GetError()); | |
27 return(-1); | |
28 } | |
29 printf("Running in %s mode\n", screen->flags & SDL_FULLSCREEN ? | |
30 "fullscreen" : "windowed"); | |
31 | |
32 /* Set the surface pixels and refresh! */ | |
33 for ( i=0; i<256; ++i ) { | |
34 palette[i].r = 255-i; | |
35 palette[i].g = 255-i; | |
36 palette[i].b = 255-i; | |
37 } | |
38 SDL_SetColors(screen, palette, 0, 256); | |
39 if ( SDL_LockSurface(screen) < 0 ) { | |
40 fprintf(stderr, "Couldn't lock display surface: %s\n", | |
41 SDL_GetError()); | |
42 return(-1); | |
43 } | |
44 buffer = (Uint8 *)screen->pixels; | |
45 for ( i=0; i<screen->h; ++i ) { | |
46 memset(buffer,(i*255)/screen->h, | |
47 screen->w*screen->format->BytesPerPixel); | |
48 buffer += screen->pitch; | |
49 } | |
50 SDL_UnlockSurface(screen); | |
51 SDL_UpdateRect(screen, 0, 0, 0, 0); | |
52 | |
53 return(0); | |
54 } | |
12 | 55 |
13 SDL_Surface *LoadIconSurface(char *file, Uint8 **maskp) | 56 SDL_Surface *LoadIconSurface(char *file, Uint8 **maskp) |
14 { | 57 { |
15 SDL_Surface *icon; | 58 SDL_Surface *icon; |
16 Uint8 *pixels; | 59 Uint8 *pixels; |
77 if ( SDL_WM_ToggleFullScreen(screen) ) { | 120 if ( SDL_WM_ToggleFullScreen(screen) ) { |
78 printf("Toggled fullscreen mode - now %s\n", | 121 printf("Toggled fullscreen mode - now %s\n", |
79 (screen->flags&SDL_FULLSCREEN) ? "fullscreen" : "windowed"); | 122 (screen->flags&SDL_FULLSCREEN) ? "fullscreen" : "windowed"); |
80 } else { | 123 } else { |
81 printf("Unable to toggle fullscreen mode\n"); | 124 printf("Unable to toggle fullscreen mode\n"); |
125 video_flags ^= SDL_FULLSCREEN; | |
126 SetVideoMode(screen->w, screen->h); | |
82 } | 127 } |
83 } | 128 } |
84 | 129 |
85 void HotKey_ToggleGrab(void) | 130 void HotKey_ToggleGrab(void) |
86 { | 131 { |
203 | 248 |
204 /* Drop all other events */ | 249 /* Drop all other events */ |
205 default: | 250 default: |
206 return(0); | 251 return(0); |
207 } | 252 } |
208 } | |
209 | |
210 static Uint8 video_bpp; | |
211 static Uint32 video_flags; | |
212 | |
213 int SetVideoMode(int w, int h) | |
214 { | |
215 SDL_Surface *screen; | |
216 int i; | |
217 Uint8 *buffer; | |
218 SDL_Color palette[256]; | |
219 | |
220 screen = SDL_SetVideoMode(w, h, video_bpp, video_flags); | |
221 if ( screen == NULL ) { | |
222 fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", | |
223 w, h, video_bpp, SDL_GetError()); | |
224 return(-1); | |
225 } | |
226 printf("Running in %s mode\n", screen->flags & SDL_FULLSCREEN ? | |
227 "fullscreen" : "windowed"); | |
228 | |
229 /* Set the surface pixels and refresh! */ | |
230 for ( i=0; i<256; ++i ) { | |
231 palette[i].r = 255-i; | |
232 palette[i].g = 255-i; | |
233 palette[i].b = 255-i; | |
234 } | |
235 SDL_SetColors(screen, palette, 0, 256); | |
236 if ( SDL_LockSurface(screen) < 0 ) { | |
237 fprintf(stderr, "Couldn't lock display surface: %s\n", | |
238 SDL_GetError()); | |
239 return(-1); | |
240 } | |
241 buffer = (Uint8 *)screen->pixels; | |
242 for ( i=0; i<screen->h; ++i ) { | |
243 memset(buffer,(i*255)/screen->h, | |
244 screen->w*screen->format->BytesPerPixel); | |
245 buffer += screen->pitch; | |
246 } | |
247 SDL_UnlockSurface(screen); | |
248 SDL_UpdateRect(screen, 0, 0, 0, 0); | |
249 | |
250 return(0); | |
251 } | 253 } |
252 | 254 |
253 int main(int argc, char *argv[]) | 255 int main(int argc, char *argv[]) |
254 { | 256 { |
255 SDL_Event event; | 257 SDL_Event event; |