SDL  2.0
rectangles.c
Go to the documentation of this file.
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
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
41 main(int argc, char *argv[])
42 {
43 
46  int done;
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 }
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2079
#define SDL_PollEvent
EGLSurface EGLnsecsANDROID time
Definition: eglext.h:518
void fatalError(const char *string)
Definition: common.c:32
SDL_Rect rect
Definition: testrelative.c:27
void render(SDL_Renderer *renderer)
Definition: rectangles.c:12
#define SDL_RenderFillRect
int randomInt(int min, int max)
Definition: common.c:16
#define SDL_CreateWindow
#define SDL_GetWindowSize
static SDL_Renderer * renderer
uint8_t Uint8
Definition: SDL_stdinc.h:179
struct _cl_event * event
#define SDL_RenderSetLogicalSize
#define SDL_Quit
int done
Definition: checkkeys.c:28
int main(int argc, char *argv[])
Definition: rectangles.c:41
int x
Definition: SDL_rect.h:66
int w
Definition: SDL_rect.h:67
#define SDL_Delay
#define NULL
Definition: begin_code.h:164
#define SDL_RenderClear
EGLSurface EGLNativeWindowType * window
Definition: eglext.h:1025
int h
Definition: SDL_rect.h:67
The type used to identify a window.
Definition: SDL_sysvideo.h:73
#define SDL_Init
General event structure.
Definition: SDL_events.h:557
#define SDL_SetRenderDrawColor
#define SDL_RenderGetLogicalSize
GLboolean GLboolean g
GLboolean GLboolean GLboolean b
int y
Definition: SDL_rect.h:66
#define SDL_INIT_VIDEO
Definition: SDL.h:79
#define SDL_CreateRenderer
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:64
#define SDL_RenderPresent
Uint32 type
Definition: SDL_events.h:559