comparison test/testsprite.c @ 1214:31103dbf1c26

Toggle flip debugging in testsprite.c on the command line, not as a hardcoded #define. --ryan.
author Ryan C. Gordon <icculus@icculus.org>
date Mon, 02 Jan 2006 08:07:41 +0000
parents be9c9c8f6d53
children 4d241ea8a1cd
comparison
equal deleted inserted replaced
1213:8eb191652834 1214:31103dbf1c26
7 #include <math.h> 7 #include <math.h>
8 #include <time.h> 8 #include <time.h>
9 9
10 #include "SDL.h" 10 #include "SDL.h"
11 11
12 #define DEBUG_FLIP 1
13
14 #define NUM_SPRITES 100 12 #define NUM_SPRITES 100
15 #define MAX_SPEED 1 13 #define MAX_SPEED 1
16 14
17 SDL_Surface *sprite; 15 SDL_Surface *sprite;
18 int numsprites; 16 int numsprites;
19 SDL_Rect *sprite_rects; 17 SDL_Rect *sprite_rects;
20 SDL_Rect *positions; 18 SDL_Rect *positions;
21 SDL_Rect *velocities; 19 SDL_Rect *velocities;
22 int sprites_visible; 20 int sprites_visible;
21 int debug_flip;
23 Uint16 sprite_w, sprite_h; 22 Uint16 sprite_w, sprite_h;
24 23
25 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ 24 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
26 static void quit(int rc) 25 static void quit(int rc)
27 { 26 {
90 area = *position; 89 area = *position;
91 SDL_BlitSurface(sprite, NULL, screen, &area); 90 SDL_BlitSurface(sprite, NULL, screen, &area);
92 sprite_rects[nupdates++] = area; 91 sprite_rects[nupdates++] = area;
93 } 92 }
94 93
95 #if DEBUG_FLIP 94 if (debug_flip) {
96 { 95 if ( (screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {
97 if ( (screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) { 96 static int t = 0;
98 static int t = 0; 97
99 98 Uint32 color = SDL_MapRGB (screen->format, 255, 0, 0);
100 Uint32 color = SDL_MapRGB (screen->format, 255, 0, 0); 99 SDL_Rect r;
101 SDL_Rect r; 100 r.x = (sin((float)t * 2 * 3.1459) + 1.0) / 2.0 * (screen->w-20);
102 r.x = (sin((float)t * 2 * 3.1459) + 1.0) / 2.0 * (screen->w-20); 101 r.y = 0;
103 r.y = 0; 102 r.w = 20;
104 r.w = 20; 103 r.h = screen->h;
105 r.h = screen->h; 104
106 105 SDL_FillRect (screen, &r, color);
107 SDL_FillRect (screen, &r, color); 106 t+=2;
108 t+=2; 107 }
109 } 108 }
110 } 109
111 #endif
112
113 /* Update the screen! */ 110 /* Update the screen! */
114 if ( (screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) { 111 if ( (screen->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {
115 SDL_Flip(screen); 112 SDL_Flip(screen);
116 } else { 113 } else {
117 SDL_UpdateRects(screen, nupdates, sprite_rects); 114 SDL_UpdateRects(screen, nupdates, sprite_rects);
172 numsprites = NUM_SPRITES; 169 numsprites = NUM_SPRITES;
173 videoflags = SDL_SWSURFACE|SDL_ANYFORMAT; 170 videoflags = SDL_SWSURFACE|SDL_ANYFORMAT;
174 width = 640; 171 width = 640;
175 height = 480; 172 height = 480;
176 video_bpp = 8; 173 video_bpp = 8;
174 debug_flip = 0;
177 while ( argc > 1 ) { 175 while ( argc > 1 ) {
178 --argc; 176 --argc;
179 if ( strcmp(argv[argc-1], "-width") == 0 ) { 177 if ( strcmp(argv[argc-1], "-width") == 0 ) {
180 width = atoi(argv[argc]); 178 width = atoi(argv[argc]);
181 --argc; 179 --argc;
195 if ( strcmp(argv[argc], "-hw") == 0 ) { 193 if ( strcmp(argv[argc], "-hw") == 0 ) {
196 videoflags ^= SDL_HWSURFACE; 194 videoflags ^= SDL_HWSURFACE;
197 } else 195 } else
198 if ( strcmp(argv[argc], "-flip") == 0 ) { 196 if ( strcmp(argv[argc], "-flip") == 0 ) {
199 videoflags ^= SDL_DOUBLEBUF; 197 videoflags ^= SDL_DOUBLEBUF;
198 } else
199 if ( strcmp(argv[argc], "-debugflip") == 0 ) {
200 debug_flip ^= 1;
200 } else 201 } else
201 if ( strcmp(argv[argc], "-fullscreen") == 0 ) { 202 if ( strcmp(argv[argc], "-fullscreen") == 0 ) {
202 videoflags ^= SDL_FULLSCREEN; 203 videoflags ^= SDL_FULLSCREEN;
203 } else 204 } else
204 if ( isdigit(argv[argc][0]) ) { 205 if ( isdigit(argv[argc][0]) ) {