Mercurial > sdl-ios-xcode
comparison test/testwm2.c @ 1933:7ee5297340f7
Implemented Cocoa window support
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 24 Jul 2006 05:03:02 +0000 |
parents | c121d94672cb |
children | 8055185ae4ed |
comparison
equal
deleted
inserted
replaced
1932:dc864bcabcc4 | 1933:7ee5297340f7 |
---|---|
1 /* Simple program: Move N sprites around on the screen as fast as possible */ | |
2 | 1 |
3 #include "SDL.h" | 2 #include <stdlib.h> |
3 #include <stdio.h> | |
4 | 4 |
5 #define NUM_WINDOWS 2 | 5 #include "common.h" |
6 #define WINDOW_W 640 | |
7 #define WINDOW_H 480 | |
8 | 6 |
9 static int num_windows; | 7 static CommonState *state; |
10 static SDL_WindowID *windows; | |
11 | 8 |
12 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ | 9 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ |
13 static void | 10 static void |
14 quit(int rc) | 11 quit(int rc) |
15 { | 12 { |
16 if (windows) { | 13 CommonQuit(state); |
17 SDL_free(windows); | |
18 } | |
19 SDL_Quit(); | |
20 exit(rc); | 14 exit(rc); |
21 } | 15 } |
22 | 16 |
23 int | 17 int |
24 main(int argc, char *argv[]) | 18 main(int argc, char *argv[]) |
25 { | 19 { |
26 int window_w, window_h; | |
27 int i, done; | 20 int i, done; |
28 SDL_Event event; | 21 SDL_Event event; |
29 | 22 |
30 /* Initialize SDL */ | 23 /* Initialize test framework */ |
31 if (SDL_Init(SDL_INIT_VIDEO) < 0) { | 24 state = CommonCreateState(argv, SDL_INIT_VIDEO); |
32 fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); | 25 if (!state) { |
33 return (1); | 26 return 1; |
27 } | |
28 state->skip_renderer = SDL_TRUE; | |
29 for (i = 1; i < argc;) { | |
30 int consumed; | |
31 | |
32 consumed = CommonArg(state, i); | |
33 if (consumed == 0) { | |
34 consumed = -1; | |
35 } | |
36 if (consumed < 0) { | |
37 fprintf(stderr, "Usage: %s %s", argv[0], CommonUsage(state)); | |
38 quit(1); | |
39 } | |
40 i += consumed; | |
41 } | |
42 if (!CommonInit(state)) { | |
43 quit(2); | |
34 } | 44 } |
35 | 45 |
36 num_windows = NUM_WINDOWS; | 46 /* Main render loop */ |
37 window_w = WINDOW_W; | |
38 window_h = WINDOW_H; | |
39 while (argc > 1) { | |
40 if (strcmp(argv[argc - 1], "-width") == 0) { | |
41 window_w = atoi(argv[argc]); | |
42 --argc; | |
43 } else if (strcmp(argv[argc - 1], "-height") == 0) { | |
44 window_h = atoi(argv[argc]); | |
45 --argc; | |
46 } else { | |
47 fprintf(stderr, "Usage: %s [-width] [-height]\n", argv[0]); | |
48 quit(1); | |
49 } | |
50 } | |
51 | |
52 /* Create the windows */ | |
53 windows = (SDL_WindowID *) SDL_malloc(num_windows * sizeof(*windows)); | |
54 if (!windows) { | |
55 fprintf(stderr, "Out of memory!\n"); | |
56 quit(2); | |
57 } | |
58 for (i = 0; i < num_windows; ++i) { | |
59 char title[32]; | |
60 int x, y; | |
61 | |
62 SDL_snprintf(title, sizeof(title), "testwm %d", i + 1); | |
63 if (i == 0) { | |
64 x = SDL_WINDOWPOS_CENTERED; | |
65 y = SDL_WINDOWPOS_CENTERED; | |
66 } else { | |
67 x = SDL_WINDOWPOS_UNDEFINED; | |
68 y = SDL_WINDOWPOS_UNDEFINED; | |
69 } | |
70 windows[i] = | |
71 SDL_CreateWindow(title, x, y, window_w, window_h, | |
72 SDL_WINDOW_SHOWN); | |
73 if (!windows[i]) { | |
74 fprintf(stderr, "Couldn't create window: %s\n", SDL_GetError()); | |
75 quit(2); | |
76 } | |
77 } | |
78 | |
79 /* Loop, blitting sprites and waiting for a keystroke */ | |
80 done = 0; | 47 done = 0; |
81 while (!done) { | 48 while (!done) { |
82 /* Check for events */ | 49 /* Check for events */ |
83 while (SDL_PollEvent(&event)) { | 50 while (SDL_PollEvent(&event)) { |
84 switch (event.type) { | 51 CommonEvent(state, &event, &done); |
85 case SDL_KEYDOWN: | |
86 /* Any keypress quits the app... */ | |
87 case SDL_QUIT: | |
88 done = 1; | |
89 break; | |
90 default: | |
91 break; | |
92 } | |
93 } | 52 } |
94 } | 53 } |
95 | |
96 quit(0); | 54 quit(0); |
97 } | 55 } |
98 | 56 |
99 /* vi: set ts=4 sw=4 expandtab: */ | 57 /* vi: set ts=4 sw=4 expandtab: */ |