|  | /* | 
|  | *  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) { | 
|  | 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; | 
|  | } |