• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  rectangles.c
3  *  written by Holmes Futrell
4  *  use however you want
5 */
6 
7 #include "SDL.h"
8 #include <time.h>
9 #include "common.h"
10 
11 void
render(SDL_Renderer * renderer)12 render(SDL_Renderer *renderer)
13 {
14     Uint8 r, g, b;
15     int renderW;
16     int renderH;
17 
18     SDL_RenderGetLogicalSize(renderer, &renderW, &renderH);
19 
20     /*  Come up with a random rectangle */
21     SDL_Rect rect;
22     rect.w = randomInt(64, 128);
23     rect.h = randomInt(64, 128);
24     rect.x = randomInt(0, renderW);
25     rect.y = randomInt(0, renderH);
26 
27     /* Come up with a random color */
28     r = randomInt(50, 255);
29     g = randomInt(50, 255);
30     b = randomInt(50, 255);
31 
32     /*  Fill the rectangle in the color */
33     SDL_SetRenderDrawColor(renderer, r, g, b, 255);
34     SDL_RenderFillRect(renderer, &rect);
35 
36     /* update screen */
37     SDL_RenderPresent(renderer);
38 }
39 
40 int
main(int argc,char * argv[])41 main(int argc, char *argv[])
42 {
43 
44     SDL_Window *window;
45     SDL_Renderer *renderer;
46     int done;
47     SDL_Event event;
48     int windowW;
49     int windowH;
50 
51     /* initialize SDL */
52     if (SDL_Init(SDL_INIT_VIDEO) < 0) {
53         fatalError("Could not initialize SDL");
54     }
55 
56     /* seed random number generator */
57     srand(time(NULL));
58 
59     /* create window and renderer */
60     window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_ALLOW_HIGHDPI);
61     if (window == 0) {
62         fatalError("Could not initialize Window");
63     }
64     renderer = SDL_CreateRenderer(window, -1, 0);
65     if (!renderer) {
66         fatalError("Could not create renderer");
67     }
68 
69     SDL_GetWindowSize(window, &windowW, &windowH);
70     SDL_RenderSetLogicalSize(renderer, windowW, windowH);
71 
72     /* Fill screen with black */
73     SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
74     SDL_RenderClear(renderer);
75 
76     /* Enter render loop, waiting for user to quit */
77     done = 0;
78     while (!done) {
79         while (SDL_PollEvent(&event)) {
80             if (event.type == SDL_QUIT) {
81                 done = 1;
82             }
83         }
84         render(renderer);
85         SDL_Delay(1);
86     }
87 
88     /* shutdown SDL */
89     SDL_Quit();
90 
91     return 0;
92 }
93