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