rectangles.c 2.0 KB

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