Mercurial > sdl-ios-xcode
diff test/graywin.c @ 1662:782fd950bd46 SDL-1.3
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid.
The code is now run through a consistent indent format:
indent -i4 -nut -nsc -br -ce
The headers are being converted to automatically generate doxygen documentation.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 28 May 2006 13:04:16 +0000 |
parents | d33645c36072 |
children | 4da1ee79c9af |
line wrap: on
line diff
--- a/test/graywin.c Sun May 21 17:27:13 2006 +0000 +++ b/test/graywin.c Sun May 28 13:04:16 2006 +0000 @@ -8,250 +8,238 @@ #include "SDL.h" -#ifdef TEST_VGA16 /* Define this if you want to test VGA 16-color video modes */ +#ifdef TEST_VGA16 /* Define this if you want to test VGA 16-color video modes */ #define NUM_COLORS 16 #else #define NUM_COLORS 256 #endif /* Draw a randomly sized and colored box centered about (X,Y) */ -void DrawBox(SDL_Surface *screen, int X, int Y, int width, int height) +void +DrawBox (SDL_Surface * screen, int X, int Y, int width, int height) { - static unsigned int seeded = 0; - SDL_Rect area; - Uint32 color; - Uint32 randc; + static unsigned int seeded = 0; + SDL_Rect area; + Uint32 color; + Uint32 randc; - /* Seed the random number generator */ - if ( seeded == 0 ) { - srand(time(NULL)); - seeded = 1; - } + /* Seed the random number generator */ + if (seeded == 0) { + srand (time (NULL)); + seeded = 1; + } - /* Get the bounds of the rectangle */ - area.w = (rand()%width); - area.h = (rand()%height); - area.x = X-(area.w/2); - area.y = Y-(area.h/2); - randc = (rand()%NUM_COLORS); + /* Get the bounds of the rectangle */ + area.w = (rand () % width); + area.h = (rand () % height); + area.x = X - (area.w / 2); + area.y = Y - (area.h / 2); + randc = (rand () % NUM_COLORS); - if (screen->format->BytesPerPixel==1) - { - color = randc; - } - else - { - color = SDL_MapRGB(screen->format, randc, randc, randc); - } + if (screen->format->BytesPerPixel == 1) { + color = randc; + } else { + color = SDL_MapRGB (screen->format, randc, randc, randc); + } - /* Do it! */ - SDL_FillRect(screen, &area, color); - if ( screen->flags & SDL_DOUBLEBUF ) { - SDL_Flip(screen); - } else { - SDL_UpdateRects(screen, 1, &area); - } + /* Do it! */ + SDL_FillRect (screen, &area, color); + if (screen->flags & SDL_DOUBLEBUF) { + SDL_Flip (screen); + } else { + SDL_UpdateRects (screen, 1, &area); + } } -void DrawBackground(SDL_Surface *screen) +void +DrawBackground (SDL_Surface * screen) { - int i, j, k; - Uint8 *buffer; - Uint16 *buffer16; - Uint16 color; - Uint8 gradient; + int i, j, k; + Uint8 *buffer; + Uint16 *buffer16; + Uint16 color; + Uint8 gradient; - /* Set the surface pixels and refresh! */ - /* Use two loops in case the surface is double-buffered (both sides) */ + /* Set the surface pixels and refresh! */ + /* Use two loops in case the surface is double-buffered (both sides) */ - for ( j=0; j<2; ++j ) { - if ( SDL_LockSurface(screen) < 0 ) { - fprintf(stderr, "Couldn't lock display surface: %s\n", - SDL_GetError()); - return; - } - buffer = (Uint8 *)screen->pixels; + for (j = 0; j < 2; ++j) { + if (SDL_LockSurface (screen) < 0) { + fprintf (stderr, "Couldn't lock display surface: %s\n", + SDL_GetError ()); + return; + } + buffer = (Uint8 *) screen->pixels; - if (screen->format->BytesPerPixel!=2) { - for ( i=0; i<screen->h; ++i ) { - memset(buffer,(i*(NUM_COLORS-1))/screen->h, screen->w * screen->format->BytesPerPixel); - buffer += screen->pitch; - } - } - else - { - for ( i=0; i<screen->h; ++i ) { - gradient=((i*(NUM_COLORS-1))/screen->h); - color = SDL_MapRGB(screen->format, gradient, gradient, gradient); - buffer16=(Uint16*)buffer; - for (k=0; k<screen->w; k++) - { - *(buffer16+k)=color; - } - buffer += screen->pitch; - } + if (screen->format->BytesPerPixel != 2) { + for (i = 0; i < screen->h; ++i) { + memset (buffer, (i * (NUM_COLORS - 1)) / screen->h, + screen->w * screen->format->BytesPerPixel); + buffer += screen->pitch; + } + } else { + for (i = 0; i < screen->h; ++i) { + gradient = ((i * (NUM_COLORS - 1)) / screen->h); + color = + SDL_MapRGB (screen->format, gradient, gradient, gradient); + buffer16 = (Uint16 *) buffer; + for (k = 0; k < screen->w; k++) { + *(buffer16 + k) = color; } + buffer += screen->pitch; + } + } - SDL_UnlockSurface(screen); - if ( screen->flags & SDL_DOUBLEBUF ) { - SDL_Flip(screen); - } else { - SDL_UpdateRect(screen, 0, 0, 0, 0); - break; - } - } + SDL_UnlockSurface (screen); + if (screen->flags & SDL_DOUBLEBUF) { + SDL_Flip (screen); + } else { + SDL_UpdateRect (screen, 0, 0, 0, 0); + break; + } + } } -SDL_Surface *CreateScreen(Uint16 w, Uint16 h, Uint8 bpp, Uint32 flags) +SDL_Surface * +CreateScreen (Uint16 w, Uint16 h, Uint8 bpp, Uint32 flags) { - SDL_Surface *screen; - int i; - SDL_Color palette[NUM_COLORS]; + SDL_Surface *screen; + int i; + SDL_Color palette[NUM_COLORS]; - /* Set the video mode */ - screen = SDL_SetVideoMode(w, h, bpp, flags); - if ( screen == NULL ) { - fprintf(stderr, "Couldn't set display mode: %s\n", - SDL_GetError()); - return(NULL); - } - fprintf(stderr, "Screen is in %s mode\n", - (screen->flags & SDL_FULLSCREEN) ? "fullscreen" : "windowed"); + /* Set the video mode */ + screen = SDL_SetVideoMode (w, h, bpp, flags); + if (screen == NULL) { + fprintf (stderr, "Couldn't set display mode: %s\n", SDL_GetError ()); + return (NULL); + } + fprintf (stderr, "Screen is in %s mode\n", + (screen->flags & SDL_FULLSCREEN) ? "fullscreen" : "windowed"); - if (bpp==8) { - /* Set a gray colormap, reverse order from white to black */ - for ( i=0; i<NUM_COLORS; ++i ) { - palette[i].r = (NUM_COLORS-1)-i * (256 / NUM_COLORS); - palette[i].g = (NUM_COLORS-1)-i * (256 / NUM_COLORS); - palette[i].b = (NUM_COLORS-1)-i * (256 / NUM_COLORS); - } - SDL_SetColors(screen, palette, 0, NUM_COLORS); - } + if (bpp == 8) { + /* Set a gray colormap, reverse order from white to black */ + for (i = 0; i < NUM_COLORS; ++i) { + palette[i].r = (NUM_COLORS - 1) - i * (256 / NUM_COLORS); + palette[i].g = (NUM_COLORS - 1) - i * (256 / NUM_COLORS); + palette[i].b = (NUM_COLORS - 1) - i * (256 / NUM_COLORS); + } + SDL_SetColors (screen, palette, 0, NUM_COLORS); + } - return(screen); + return (screen); } -int main(int argc, char *argv[]) +int +main (int argc, char *argv[]) { - SDL_Surface *screen; - Uint32 videoflags; - int done; - SDL_Event event; - int width, height, bpp; + SDL_Surface *screen; + Uint32 videoflags; + int done; + SDL_Event event; + int width, height, bpp; - /* Initialize SDL */ - if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { - fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); - exit(1); - } + /* Initialize SDL */ + if (SDL_Init (SDL_INIT_VIDEO) < 0) { + fprintf (stderr, "Couldn't initialize SDL: %s\n", SDL_GetError ()); + exit (1); + } - /* See if we try to get a hardware colormap */ - width = 640; - height = 480; - bpp = 8; - videoflags = SDL_SWSURFACE; - while ( argc > 1 ) { - --argc; - if ( argv[argc-1] && (strcmp(argv[argc-1], "-width") == 0) ) { - width = atoi(argv[argc]); - --argc; - } else - if ( argv[argc-1] && (strcmp(argv[argc-1], "-height") == 0) ) { - height = atoi(argv[argc]); - --argc; - } else - if ( argv[argc-1] && (strcmp(argv[argc-1], "-bpp") == 0) ) { - bpp = atoi(argv[argc]); - --argc; - } else - if ( argv[argc] && (strcmp(argv[argc], "-hw") == 0) ) { - videoflags |= SDL_HWSURFACE; - } else - if ( argv[argc] && (strcmp(argv[argc], "-hwpalette") == 0) ) { - videoflags |= SDL_HWPALETTE; - } else - if ( argv[argc] && (strcmp(argv[argc], "-flip") == 0) ) { - videoflags |= SDL_DOUBLEBUF; - } else - if ( argv[argc] && (strcmp(argv[argc], "-noframe") == 0) ) { - videoflags |= SDL_NOFRAME; - } else - if ( argv[argc] && (strcmp(argv[argc], "-resize") == 0) ) { - videoflags |= SDL_RESIZABLE; - } else - if ( argv[argc] && (strcmp(argv[argc], "-fullscreen") == 0) ) { - videoflags |= SDL_FULLSCREEN; - } else { - fprintf(stderr, "Usage: %s [-width] [-height] [-bpp] [-hw] [-hwpalette] [-flip] [-noframe] [-fullscreen] [-resize]\n", - argv[0]); - exit(1); - } - } + /* See if we try to get a hardware colormap */ + width = 640; + height = 480; + bpp = 8; + videoflags = SDL_SWSURFACE; + while (argc > 1) { + --argc; + if (argv[argc - 1] && (strcmp (argv[argc - 1], "-width") == 0)) { + width = atoi (argv[argc]); + --argc; + } else if (argv[argc - 1] + && (strcmp (argv[argc - 1], "-height") == 0)) { + height = atoi (argv[argc]); + --argc; + } else if (argv[argc - 1] && (strcmp (argv[argc - 1], "-bpp") == 0)) { + bpp = atoi (argv[argc]); + --argc; + } else if (argv[argc] && (strcmp (argv[argc], "-hw") == 0)) { + videoflags |= SDL_HWSURFACE; + } else if (argv[argc] && (strcmp (argv[argc], "-hwpalette") == 0)) { + videoflags |= SDL_HWPALETTE; + } else if (argv[argc] && (strcmp (argv[argc], "-flip") == 0)) { + videoflags |= SDL_DOUBLEBUF; + } else if (argv[argc] && (strcmp (argv[argc], "-noframe") == 0)) { + videoflags |= SDL_NOFRAME; + } else if (argv[argc] && (strcmp (argv[argc], "-resize") == 0)) { + videoflags |= SDL_RESIZABLE; + } else if (argv[argc] && (strcmp (argv[argc], "-fullscreen") == 0)) { + videoflags |= SDL_FULLSCREEN; + } else { + fprintf (stderr, + "Usage: %s [-width] [-height] [-bpp] [-hw] [-hwpalette] [-flip] [-noframe] [-fullscreen] [-resize]\n", + argv[0]); + exit (1); + } + } - /* Set a video mode */ - screen = CreateScreen(width, height, bpp, videoflags); - if ( screen == NULL ) { - exit(2); - } - - DrawBackground(screen); - - /* Wait for a keystroke */ - done = 0; - while ( !done && SDL_WaitEvent(&event) ) { - switch (event.type) { - case SDL_MOUSEBUTTONDOWN: - DrawBox(screen, event.button.x, event.button.y, width, height); - break; - case SDL_KEYDOWN: - /* Ignore ALT-TAB for windows */ - if ( (event.key.keysym.sym == SDLK_LALT) || - (event.key.keysym.sym == SDLK_TAB) ) { - break; - } - /* Center the mouse on <SPACE> */ - if ( event.key.keysym.sym == SDLK_SPACE ) { - SDL_WarpMouse(width/2, height/2); - break; - } - /* Toggle fullscreen mode on <RETURN> */ - if ( event.key.keysym.sym == SDLK_RETURN ) { - videoflags ^= SDL_FULLSCREEN; - screen = CreateScreen( - screen->w, screen->h, - screen->format->BitsPerPixel, - videoflags); - if ( screen == NULL ) { - fprintf(stderr, - "Couldn't toggle fullscreen mode\n"); - done = 1; - } - DrawBackground(screen); - break; - } - /* Any other key quits the application... */ - case SDL_QUIT: - done = 1; - break; - case SDL_VIDEOEXPOSE: - DrawBackground(screen); - break; - case SDL_VIDEORESIZE: - screen = CreateScreen( - event.resize.w, event.resize.h, - screen->format->BitsPerPixel, - videoflags); - if ( screen == NULL ) { - fprintf(stderr, - "Couldn't resize video mode\n"); - done = 1; - } - DrawBackground(screen); - break; - default: - break; - } - } - SDL_Quit(); - return(0); + /* Set a video mode */ + screen = CreateScreen (width, height, bpp, videoflags); + if (screen == NULL) { + exit (2); + } + + DrawBackground (screen); + + /* Wait for a keystroke */ + done = 0; + while (!done && SDL_WaitEvent (&event)) { + switch (event.type) { + case SDL_MOUSEBUTTONDOWN: + DrawBox (screen, event.button.x, event.button.y, width, height); + break; + case SDL_KEYDOWN: + /* Ignore ALT-TAB for windows */ + if ((event.key.keysym.sym == SDLK_LALT) || + (event.key.keysym.sym == SDLK_TAB)) { + break; + } + /* Center the mouse on <SPACE> */ + if (event.key.keysym.sym == SDLK_SPACE) { + SDL_WarpMouse (width / 2, height / 2); + break; + } + /* Toggle fullscreen mode on <RETURN> */ + if (event.key.keysym.sym == SDLK_RETURN) { + videoflags ^= SDL_FULLSCREEN; + screen = CreateScreen (screen->w, screen->h, + screen->format->BitsPerPixel, + videoflags); + if (screen == NULL) { + fprintf (stderr, "Couldn't toggle fullscreen mode\n"); + done = 1; + } + DrawBackground (screen); + break; + } + /* Any other key quits the application... */ + case SDL_QUIT: + done = 1; + break; + case SDL_VIDEOEXPOSE: + DrawBackground (screen); + break; + case SDL_VIDEORESIZE: + screen = CreateScreen (event.resize.w, event.resize.h, + screen->format->BitsPerPixel, videoflags); + if (screen == NULL) { + fprintf (stderr, "Couldn't resize video mode\n"); + done = 1; + } + DrawBackground (screen); + break; + default: + break; + } + } + SDL_Quit (); + return (0); }