| /* | |
| * rectangles.c | |
| * written by Holmes Futrell | |
| * use however you want | |
| */ | |
| #include "SDL.h" | |
| #include <time.h> | |
| #include "common.h" | |
| void | |
| render(SDL_Renderer *renderer) | |
| { | |
| Uint8 r, g, b; | |
| int renderW; | |
| int renderH; | |
| SDL_RenderGetLogicalSize(renderer, &renderW, &renderH); | |
| /* Come up with a random rectangle */ | |
| SDL_Rect rect; | |
| rect.w = randomInt(64, 128); | |
| rect.h = randomInt(64, 128); | |
| rect.x = randomInt(0, renderW); | |
| rect.y = randomInt(0, renderH); | |
| /* Come up with a random color */ | |
| r = randomInt(50, 255); | |
| g = randomInt(50, 255); | |
| b = randomInt(50, 255); | |
| /* Fill the rectangle in the color */ | |
| SDL_SetRenderDrawColor(renderer, r, g, b, 255); | |
| SDL_RenderFillRect(renderer, &rect); | |
| /* update screen */ | |
| SDL_RenderPresent(renderer); | |
| } | |
| int | |
| main(int argc, char *argv[]) | |
| { | |
| SDL_Window *window; | |
| SDL_Renderer *renderer; | |
| int done; | |
| SDL_Event event; | |
| int windowW; | |
| int windowH; | |
| /* initialize SDL */ | |
| if (SDL_Init(SDL_INIT_VIDEO) < 0) { | |
| fatalError("Could not initialize SDL"); | |
| } | |
| /* seed random number generator */ | |
| srand(time(NULL)); | |
| /* create window and renderer */ | |
| window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_ALLOW_HIGHDPI); | |
| if (window == 0) { | |
| fatalError("Could not initialize Window"); | |
| } | |
| renderer = SDL_CreateRenderer(window, -1, 0); | |
| if (!renderer) { | |
| fatalError("Could not create renderer"); | |
| } | |
| SDL_GetWindowSize(window, &windowW, &windowH); | |
| SDL_RenderSetLogicalSize(renderer, windowW, windowH); | |
| /* Fill screen with black */ | |
| SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); | |
| SDL_RenderClear(renderer); | |
| /* Enter render loop, waiting for user to quit */ | |
| done = 0; | |
| while (!done) { | |
| while (SDL_PollEvent(&event)) { | |
| if (event.type == SDL_QUIT) { | |
| done = 1; | |
| } | |
| } | |
| render(renderer); | |
| SDL_Delay(1); | |
| } | |
| /* shutdown SDL */ | |
| SDL_Quit(); | |
| return 0; | |
| } |